От модели к физической БД в MySQL WorkBench

Внимание, поскольку WorkBench обновился, то я написал новую статью, которая состоит из теории и практики построения БД из WorkBench.

Итак, в прошлом посте, мы создали физическую базу данных и первую таблицу в базе данных, при помощи программы MySQL Workbench (в дословном переводе “Рабочая скамья” )))).

В этом посте мы узнаем, что такое модели в программе WorkBench и как с их помощью создавать взаимосвязанные таблицы (с внешними ключами), а заодно – усовершенствуем нашу базу данных для последующих экспериментов. Предыдущим методом мы могли из Workbench создавать только базу данных и какие-то отдельные таблицы.

Итак, в программе MySQL WorkBench жмем File New Model (Ctrl + N) и перед нами открывается такая картина…

1

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

1 Создание базы данных (схемы) в модели

Итак, начнем, с редакции имени базы данных. Терминологическое отступление. Вообще база данных ещё называется “Schema”, это синонимы, насколько я помню из книги Д. Осипова, “Базы данных и Delphi”, это произошло не сразу, а после очередного собрания “стандартизаторов” баз данных. Чтобы отредактировать название “Схемы”, нужно проделать следующее…

3

 

Перед нами открывается такое окно…

4

Я назвал базу данных, схему –  MyDataBase1, кодировку не менял, в комментарии указал – “Первая база данных, учебная”;

После этого – жмём на крестик, на вкладке возле названия “MyDataBase1” и возвращаемся к предыдущему окну.

2 Создание таблиц в базе данных (схеме)

Итак, для того, чтобы создать таблицы – нам нужно определиться какую ситуацию будет отражать база данных. Я предлагаю сделать всё на примере студентов – все учились, всем будет понятно.

Каждый студент учится на каком-то одном факультете, поэтому, для начала предлагаю создать таблицу “Students” и таблицу “Departments”…

2 раза кликаем на AddTable и видим такую картину… Заполняем поле Table Name…

5

 

Заполняем имя таблицы. Обратите внимание на вкладки внизу, сейчас мы находимся на “Coloumns”. Для таблицы студентов разработаем несколько полей…

-Primary_key (уникальный ключ записей данной таблицы)

-Name (Имя)

-Family (Фамилия)

-Age (Возраст)

-Sex (Пол)

-Department_id (Внешний ключ, каждый студент учится на каком-то факультете, соответственно будем отмечать это в данном поле);

И сразу же введём их, на вкладке Students -Table – Coloumns, результат получился такой…

6_1

Итак, “PK” – поставил только у главного ключа, это поле является частью формирования уникального ключа таблицы (насколько я понял, в формировании такого ключа может участвовать несколько полей, но это в дальнейших исследованиях).

NN – Not Nulled – отсутствие нулевых полей, так как у всех студентов есть  Имя, Фамилия, Возраст, Пол…

AI – автоинкрементное поле – с добавлением новой записи значение в этом поле будет увеличиваться как минимум на единицу.

Аналогично создадим и настроим таблицу Departments. В ней я создал 2 поля Primary_key и Department_name, в терминологии баз данных, получилось так..

 

7

 

Здесь сделаю небольшое пояснение, Deparment_id в таблице students и Primary_key, в таблице departments это практически одно и тоже, разница лишь в том, что значения внешнего ключа Deparment_id разбросаны по таблице, а Primary_key автоинкрементен в своей таблице.

 

3 Стартовое заполнение созданных таблиц

Для того, чтобы нам с Вами делать какие-то дальнейшие эксперименты с IDE Delphi, языком SQL и др. вещами – нужно сделать стартовое заполнение, то есть, внести хоть какие-то записи. Для этого, на каждой из таблиц переходим во вкладку Inserts. Она внизу….

9

Для таблицы Departments – я сделал 5 факультетов – Physics, Mathematics, History, Philosophy, Art.

8_1

Для таблицы Students 10 произвольных записей. Если будете повторять пример – можете написать, что угодно, главное, соблюдать тип данных и в автоинкрементных полях писать по порядку.

После ввода записей, не забывайте нажать “Apply Updates”

Создание связи между таблицами

Для создания связи между таблицами, сначала разберемся в типе связи. В нашей ситуации на одном факультете может учиться несколько студентов, значит связь – один ко многим. Открываем вкладку Foreign Keys, дописываем “ручками” имя ключа, я написал “MyForeignKey1”, в Referenced table выбрал Departments, а в правой части таблицы – выбрал в колонке Coloumn Department_id, поскольку это было имя внешнего ключа для таблицы Students и соответствующее поле в другой таблице Primary Key

10

Можно также ещё заполнить  Foreign Key Options. По описанию из блога Mithandrir

В разделе “Foreign Key Options” настраиваем поведение внешнего ключа при изменении соответствующего поля (ON UPDATE) и удалении (ON DELETE) родительской записи:

  • RESTRICT – выдавать ошибку при изменении / удалении родительской записи
  • CASCADE – обновлять внешний ключ при изменении родительской записи, удалять дочернюю запись при удалении родителя
  • SET NULL – устанавливать значение внешнего ключа NULL при изменении / удалении родителя (неприемлемо для полей, у которых установлен флаг NOT NULL!)
  • NO ACTION – не делать ничего, однако по факту эффект аналогичен RESTRICT

Сохранение из модели в реальную / физическую базу данных

“File → Export→ Forward Engineer MySQL Create Script…”

11

Отмечаем необходимые галочки, мне нужна была только одна Generate INSERT Statements for Tables. Если нужно сохранить скрипт в  файл – пропишите директорию в поле сверху.

В следующем окне можно настроить – какие объекты мы будем экспортировать. Если внимательно присмотреться, то у нас создано всего 2 таблицы.

12

Жмем далее… и получаем такой вот скрипт…

13

Копируем в буфер, но что дальше? Нужно этот скрипт где-то выполнить…

Выполнение скрипта – создания базы данных и таблиц

Жмем на “домик” в верхнем левом углу программы…

14

Потом 2 раза кликаем на MyConnection….

15

Перед нами открывается такая вкладка…

16

Это наше соединение с сервером, здесь мы и будем выполнять наш скрипт. Обратите внимание, слева базы данных, которые были созданы в программе WorkBench….

Далее, File New Query Tab… Вставляем скрипт в полученный Tab…

17

Теперь, нужно дать команду этот скрипт исполнить, для этого жмем в верхнем меню, Query Execute (All or Selection)

18

Итак, если все нормально, то в нижнем окне output, вы увидите все “зеленые галочки”. А когда нажмете Refresh в контекстном меню в списке баз данных, то увидите, вновь созданную базу mydatabase1.

Напоследок, построим ER диаграмму. ER расшифровывается как Entity Relation – удачная модель “Сущность – связь”, которая, в частности разрабатывалась Питером Ченом. Итак, возвращаемся на вкладку модели и жмем на Add Diagramm…

19

Далее, переносим таблицы в область диаграммы…

20_1

Мы создали связь один ко многим. На одном факультете могут учиться несколько студентов. Обратите внимание, связь возле таблицы Students расщепляется – это означает “ко многим”.

Итак, мы создали модель, из неё через выполнение скрипта – реальную базу с таблицами. А также создали диаграмму ER.


[block id=”mysql-first-steps”]

This entry was posted in MySQL, Без рубрики, Начальный уровень. Bookmark the permalink.

Leave a Reply