реклама
разместить

Как построить схему данных для нескольких таблиц?

Как получить наглядное представление о связях нескольких таблиц, рассмотрим в статье.

Как показывает опыт, часто мы имеем большое количество таблиц в базах данных и крайне редко у них есть схема, по которой мы можем получить наглядное представление о связях всех таблиц. Когда у тебя две-три таблички, то схема не требуется, ее и так можно легко представить в голове. Но когда таблиц уже больше 10 или у них множество связей между друг другом, то это довольно проблематично сделать.

Конечно, эту схему можно нарисовать в специальной программе, но на это тоже требуется немалое количество времени.

Есть более быстрый вариант для рисования схемы данных таблиц! Мы будем использовать python и Graphviz.

1 этап: Заносим в Excel-файл названия таблиц и связи между ними.

Как построить схему данных для нескольких таблиц?

2 этап: Запускаем код на python:

from graphviz import Digraph import pandas as pd import random #считываем файл df = pd.read_excel("Связи.xlsx", dtype=str) #разносим таблицы и столбцы в два dataframe df1=df[["T1","S1"]] df2=df[["T2","S2"]] #для объединения переименуем столбцы df2=df2.rename(columns={'T2':'T1','S2':'S1'}) #объединяем два dataframe в один и убираем дубликаты df_concat=pd.concat([df1,df2]) df_concat=df_concat.drop_duplicates() df_concat.sort_values(by='T1') df_concat.reset_index(drop=True) #для создания node df_concat['T1_new']='['+df_concat['T1']+']' df_concat['S1_new']='|<'+df_concat['S1']+'> '+df_concat['S1'] df_concat=df_concat.drop(['T1','S1'], axis=1) df_concat['Count']=df_concat.groupby('T1_new').cumcount() df_pivot=df_concat.pivot('T1_new', 'Count', 'S1_new') df_p=pd.DataFrame(df_pivot.to_records()) df_p['concat']=pd.Series(df_p.fillna('').values.tolist()).str.join('') df_node_label=df_p[['T1_new','concat']] df_node_label['Res']=pd.Series(df_node_label.fillna('').values.tolist()).str.join('$$$') #для связей df['Res']='['+df['T1']+']'+':'+df['S1']+'$$$'+'['+df['T2']+']'+':'+df['S2'] ar1=df_node_label['Res'].values ar2=df['Res'].values #отрисовка g=Digraph('structs',format='jpg') g.attr(rankdir="LR") g.attr('node', shape='record') g.attr(size='100') #рандомный цвет для ребер def rcolor(): r=random.randint(0,16777215) hexnumber=str(hex(r)) hexnumber='#'+hexnumber[2:] return hexnumber for i in ar1: node_ = i.split("$$$")[0] node_label = i.split("$$$")[1] g.node(node_,label=node_label) for i in ar2: edge1 = i.split("$$$")[0] edge2 = i.split("$$$")[1] #можно менять параметр minlen для изменения расстояния между nodes g.edge(edge1,edge2, color=rcolor(), minlen='5') g.view()

На выходе получаем готовую схему данных:

Как построить схему данных для нескольких таблиц?

Вот так быстро можно нарисовать схему данных, если мы уже знаем связи между таблицами.

77
реклама
разместить
Начать дискуссию
Citibank по ошибке отправил клиенту $81 трлн вместо $280 — но перевод остановили, так что деньги остались у банка

Инцидент произошёл в апреле 2024 года. Данные о нём появились только сейчас.

Источник фото: marketplace.org
1919
33
33
11
11
А так была бы еще одна история успеха из трех пунктов: 1. Вставать на рассвете 2. Питаться правильной пищей 3. Верить в себя 😎
реклама
разместить
Зарубежные компании пока не решили возвращаться в Россию, но начали «прощупывать почву» — FT

Уговорить их вернуться пытаются и в России, говорят источники.

1010
55
11
Пережили без брендов как-то...могут не возвращаться
Доступ к госданным, рост рынка облачных технологий и борьба с мошенниками: дайджест IT-новостей

Собрали интересные новости за февраль, которые помогут вам оставаться в курсе последних событий из мира IT.

Доступ к госданным, рост рынка облачных технологий и борьба с мошенниками: дайджест IT-новостей
1111
33
22
Я рисовала еду руками 15 лет, но потом пришла нейросеть и изменила всё

В 2014-ом я ушла "на фриланс". Нужно было выбрать специализацию — невозможно одинаково хорошо делать всё. Я проанализировала свой опыт и поняла, что лучше всего у меня получаются фуд-зоны для упаковок. Коллеги это отмечали, арт-директора хвалили композиции из фруктов. Сделала на это ставку.

Я рисовала еду руками 15 лет, но потом пришла нейросеть и изменила всё
7676
1111
22
11
11
Ага, вот кто делает картинки на упаковке, не оглядываясь на содержимое. Покупаешь - и чувствуешь себя идиотом в очередной раз, жуя пряник с прослойкой повидла вместо обещанной печеньки с тонной варенья. И это ещё совестливый относительно человек... В общем только буквы, только прозрачные упаковки, только хардкор.
СМИ сообщили об обысках у команды бота для «пробива» данных «Глаз Бога» — создатель говорит, что «команды нет», а его не обыскивали

Telegram-бот не работает, но из-за внутренних «техизменений».

Источник фото: BBC
88
22
Без льгот и санкций против России: в Совфеде предложили условия, на которых зарубежные автопроизводители смогут вернуться в страну

Основная цель — гарантировать, что производство в России не пострадает, даже если концерны снова решат уйти.

Источник фото: «Авто.ру»
4545
77
11
Какое смешное надувательство щёк и топание ножек в пынеходиках
5 ошибок на сайте, которые приводят к потере клиентов и портят впечатление о бренде.

В этой статье я поделюсь с вами пятью распространёнными ошибками,которые часто встречаются при разработке сайтов.Эти ошибки я замечаю у своих клиентов и хочу дать вам несколько советов,как их избежать. Если вам нужна помощь в создании стильногои продающего сайта, связывайтесь со мной. 💬

11
«Года три помониторим»: Минфин заявил, что пока не готов рассматривать предложение индексировать пороги доходов для начисления НДФЛ

Такое предложение выдвинул Российский союз промышленников и предпринимателей.

22
11
[]