Работа в mySQL Workbench
1. Создание EER-диаграммы
Среда mySQL Workbench предназначена для визуального проектирования баз данных и управления сервером mySQL.
Для построения моделей предназначена секция Data Modeling:
Выберем пункт Create new EER Model.
EER model расшифровывается как Extended Entity-Relationship Model и переводится как Расширенная модель сущностей-связей.
По умолчанию имя созданной модели myDB. Щелкните правой кнопкой мыши по имени модели и выберите в появившемся меню пункт Edit schema. В появившемся окне можно изменить имя модели. Назовем ее, например, kontora. В именах таблиц и столбцов нельзя использовать русские буквы.
В этом окне также нужно настроить так называемую «кодовую страницу» для корректного отображения русских букв внутри таблиц. Для этого выберите из списка пункт «cp1251- cp1251_general_ci». Окно свойств можно закрыть.
Диаграмму будем строить с помощью визуальных средств. Щелкнем по пункту Add diagram, загрузится пустое окно диаграммы:
Создать новую
таблицу можно с помощью пиктограммы
.
Нужно щелкнуть по этой пиктограмме, а
потом щелкнуть в рабочей области
диаграммы. На этом месте появится таблица
с названием по умолчанию table1.
Двойной щелчок по этой таблице открывает
окно редактирования, в котором можно
изменить имя таблицы и настроить её
структуру.
Будем создавать таблицу Отделы со следующими столбцами: номер_отдела, полное_название_отдела, короткое_название_отдела. Переименуем table1 в k_dept и начнем создавать столбцы.
Каждый столбец имеет:
имя (не используйте русские буквы в имени!),
тип данных. Самые распространенные типы данных:
INT – целое число;
VARCHAR(размер) – символьные данные переменной длины, в скобках указывается максимальный размер;
DECIMAL(размер, десятичные_знаки) – десятичное число;
DATE – дата:
DATETIME – дата и время.
Далее располагаются столбцы, в которых можно настроить дополнительные свойства поля, включив соответствующий флажок:
PK (primary key) – первичный ключ;
NN (not null) – ячейка не допускает пустые значения;
UQ (unique) – значение должно быть уникальным в пределах столбца;
AI (auto incremental) – это свойство полезно для простого первичного ключа, оно означает, что первичный ключ будет автоматически заполняться натуральными числами: 1, 2, 3, и т.п.;
DEFAULT – значение по умолчанию, т.е., значение, которое при добавлении новой строки в таблицу автоматически вставляется в ячейку сервером, если пользователь оставил ячейку пустой.
Таблица Отделы имеет следующий вид:
Затем создадим таблицу Сотрудники со следующими столбцами: номер_сотрудника, имя_сотрудника, должность, дата_начала_контракта, дата_окончания_контракта
Созданные таблицы выглядят следующим образом:
Обратите внимание, что при создании первичного ключа автоматически создается индекс по этому первичному ключу. Индекс представляет собой вспомогательную структуру, которая служит, прежде всего, для ускорения поиска и быстрого доступа к данным.
Теперь свяжем эти
таблицы. Сначала создадим связь «Работает»
между Сотрудником
(дочерняя таблица) и
Отделом (родительская
таблица), степень связи М:1. Для создания
связей М:1 служит пиктограмма на панели
инструментов
(с пунктирной линией). С ее помощью
создается так называемая «неидентифицирующая
связь», т.е. обыкновенный внешний ключ,
при этом первичный ключ родительской
таблицы добавляется в список столбцов
дочерней таблицы.
Итак, щелкнем на пиктограмме, затем щелкнем на дочерней таблице Сотрудники, затем на родительской таблице Отделы:
Обратите внимание, что при этом произошло. Между таблицами образовалась пунктирная линия; в сторону «к одному» она отмечена двумя черточками, в сторону «ко многим» - «куриной лапкой». Кроме того, в таблице Сотрудники образовался дополнительный столбец, которому автоматически присвоено имя k_dept_dept_num (т.е., имя родительской таблицы плюс имя первичного ключа родительской таблицы). А в группе Индексы создан индекс по внешнему ключу.
Теперь добавим
связь между этими же таблицами «Руководит»
1:1. Выберем пиктограмму
,
затем щелкнем по Отделам,
затем по Сотрудникам.
Ч
тобы
2 связи на картинке не «завязывались
узлом», мы их разместили друг под другом.
Обратите внимание, что в таблицу Отделы был автоматически добавлен столбец k_staff_staff_num, а также индекс по внешнему ключу.
Создадим таблицу Предприятия:
Создадим таблицу Договоры. У столбца Тип_договора зададим следующий формат: это буква из списка ‘A’, ‘B’, ‘C’.
Свяжем Договоры с Сотрудниками и Предприятиями связями М:1.
Затем создадим Счета и Платежи:
П
оскольку
сущность Платеж
была «слабой», у нее нет полноценного
первичного ключа, и каждый платеж
однозначно идентифицируется группой
атрибутов (номер_счета, номер платежа).
Отметим в качестве ключевого поля
payment_num,
а затем создадим идентифицирующую
связь между Счетом
и Платежом.
Идентифицирующая связь создается с
помощью пиктограммы
(со сплошной линией). При этом новый
столбец k_bill_bill_num
становится не только внешним ключом в
таблице Платеж,
но и частью первичного ключа.
Далее создадим таблицу Прайс-лист со столбцами (номер_товара, название_товара, цена_товара и тип_товара).
Между объектами
Счет
и Прайс-лист
имеется связь «многие - ко многим». Для
создания этой связи нужно использовать
пиктограмму
. Следует щелкнуть мышью по этой
пиктограмме, а затем последовательно
щелкнуть по связываемым таблицам. Между
ними появится новая таблица, обратите
внимание на ее столбцы, первичный ключ
и внешние ключи:
Для удобства переименуем эту таблицу в k_protokol (ПротоколСчета), добавим столбцы kolvo и price_sum.
Теперь EER-диаграмма имеет такой вид:
Задание. Создайте в MySQL WORKBENCH EER-диаграмму для своей задачи.