Лабораторная работа 10,11

advertisement
1. Подключение к серверу MySQL
Программный продукт MySQL WorkBench предназначен для визуального
проектирования баз данных, а также обладает возможностью по управлению сервером
MySQL. Чтобы приступить к выполнению лабораторной работы, необходимо создать
подключение к серверу MySQL используя учетные данные, которые вы придумали ранее
(В случае, если вы забыли свой логин и пароль обратитесь к преподавателю). Для этого,
необходимо нажать в стартовом окне MySQL Workbench на соответствующую
пиктограмму (рисунок 1).
Рисунок 1 – Стартовое окно MySQL Workbench
После нажатия откроется «Менеджер соединений с сервером» (рисунок 2), где
необходимо создать новое подключение нажатием на кнопку «New» к серверу MySQL,
для этого Вам необходимо указать:
 «Имя подключения» - любое логичное название;
 «Адрес сервера» - it.aics.ru (из кафедральной сети), 79.136.206.130 (из дома);
 «Порт» - стандартный порт 3306 (на кафедре), 3307 (из дома);
 «Имя пользователя» - логин, который был Вами придуман ранее;
 «Пароль» - пароль, который был Вами придуман ранее. MySQL обеспечивает
безопасное хранение пароля в специальном защищенном хранилище.
Для проверки корректности введенных данных, необходимо нажать на кнопку
«Протестировать соединение», если тест прошел успешно можно закрыть окно
менеджера.
Рисунок 2 – Менеджер подключений к серверу
На стартовой странице появится настроенное Вами подключение к серверу, для
соединения необходимо нажать на него. В результате успешного подключения будет
открыта главная страница MySQL Workbench, где вы можете получить список доступных
авторизированному пользователю баз данных, также есть возможность получить
информацию о сервере, обратиться к справке (если вы забыли синтаксис запроса) и
непосредственно выполнить запрос к БД.
Рисунок 3 – Добавленное подключение к серверу
Рисунок 4 – Главное окно программы
2. Проектирование схемы БД в среде MySQL Workbench
2.1 Создание модели БД
Как уже было сказано выше, одна из основных функций MySQL Workbench это
возможность проектирования БД. Для того, чтобы приступить к проектированию
необходимо создать модель будущей схемы БД, для этого необходимо открыть меню
«File» и нажать на элемент меню «New Model» (рисунок 5). Модель может содержать в
себе несколько диаграмм, которые будут представлять собой одну схему БД.
Рисунок 5 – Создание модели
Рисунок 6 – Добавление диаграммы
Обратите внимание, что имя модели должно совпадать с именем БД (имя вашей
учетной записи), а также кодировкой установленной по умолчанию в БД. На рисунке 7
продемонстрирована возможность задания нового имени и кодировки для модели.
Рисунок 7 – Редактирование имя модели
После чего можно приступить к проектированию БД. Программный продукт
MySQL Workbench обладает богатым набором инструментов для проектирования
реляционных БД.
2.2 Инструменты проектирования
Рассмотрим инструменты проектирования на примере БД предприятия. Создание
новой таблицы осуществляется при помощи пиктограммы
. Для создания необходимо
кликнуть левой клавишей мыши по пиктограмме, а затем кликнуть в рабочей области
диаграммы. На этом месте появится таблица с названием по умолчанию «table1».
Двойной клик по этой таблице открывает окно редактирования, в котором можно
изменить имя таблицы и настроить её структуру.
Первым делом создадим таблицу «Отделы» со следующими
столбцами:
«номер_отдела», «полное_название_отдела», «короткое_название_отдела». Далее дадим
логичное наименование таблице, переименовав «table1» в «k_dept», и перейдем к
созданию столбцов.
Каждый столбец имеет:
1 имя (не используйте русские буквы в имени!),
2 тип данных. Самые распространенные типы данных:
 INT – целое число;
 VARCHAR (размер) – символьные данные переменной длины, в скобках
указывается максимальный размер;
 DECIMAL (размер, десятичные_знаки) – десятичное число;
 DATE – дата:
 DATETIME – дата и время.
3 PK (primary key) – первичный ключ;
4 NN (not null) – ячейка не допускает пустые значения;
5 UN (unique) – значение должно быть уникальным в пределах столбца;
6 AI (auto incremental) – это свойство полезно для простого первичного ключа, оно
означает, что первичный ключ будет заполняться автоматически натуральными
числами 1, 2, 3, и т.п.;
7 DEFAULT – значение по умолчанию, т.е., значение, которое при добавлении
новой строки в таблицу автоматически вставляется в ячейку сервером, если
пользователь оставил ячейку пустой.
Таблица «Отделы» имеет следующий вид:
Рисунок 8 – Таблица «Отделы»
Затем
создадим
«номер_сотрудника»,
таблицу
Сотрудники
«имя_сотрудника»,
со
следующими
«должность»,
столбцами:
«дата_начала_контракта»,
«дата_окончания_контракта»
Рисунок 9 – Таблица «Сотрудники»
Схема БД представлена на рисунке 10.
Рисунок 10 – Таблицы "Отделы" и "Сотрудники"
Следует обратить внимание, что при создании первичного ключа автоматически
создается индекс по первичному ключу. Индекс представляет собой вспомогательную
структуру, которая служит, прежде всего, для ускорения поиска и быстрого доступа к
данным.
2.2.1
Неиндетифицирующая связь «1 ко многим»
Теперь свяжем эти таблицы. Сначала создадим связь «Работает» между
Сотрудником (дочерняя таблица) и Отделом (родительская таблица), степень связи М:1.
Для создания связей М:1 служит пиктограмма на панели инструментов
(с пунктирной
линией). С ее помощью создается так называемая «неидентифицирующая связь», т.е.
обыкновенный внешний ключ, при этом первичный ключ родительской таблицы
добавляется в список столбцов дочерней таблицы.
Итак, кликнем на пиктограмме, затем кликнем на дочерней таблице «Сотрудники»,
затем на родительской таблице «Отделы».
Рисунок 11 – Связь один ко многим
Обратите внимание, что при этом произошло. Между таблицами образовалась
пунктирная линия; в сторону «к одному» она отмечена двумя черточками, в сторону «ко
многим» - «куриной лапкой». Кроме того, в таблице сотрудники образовался
дополнительный столбец, которому автоматически присвоено имя k_dept_dept_num (т.е.,
имя родительской таблицы плюс имя первичного ключа родительской таблицы). А в
группе «Индексы» создан индекс по внешнему ключу.
2.2.2
Неидетифицирующая связь «1 к 1»
Теперь добавим связь между этими же таблицами «Руководит» 1:1. Выберем
пиктограмму
, затем щелкнем по Отделам, затем по Сотрудникам.
Чтобы 2 связи на картинке не «завязывались узлом», мы их разместили друг под
другом. Обратите внимание, что в таблицу «Отделы» был добавлен столбец
«k_staff_staff_num», а также индекс по внешнему ключу.
Рисунок 12 – Связь один к одному
Создадим таблицу «Предприятия»:
Рисунок 13 – Таблица "Предприятия"
Создадим таблицу «Договоры». У столбца «Тип_договора» зададим следующий
формат: это буква из списка: «A», «B», «C».
Рисунок 14 – Таблица "Контракты"
Свяжем «Договоры» с «Сотрудниками» и «Предприятиями» известными нам
связями - М:1.
Рисунок 15 – Результат связи таблиц
2.2.3
Идентифицирующая связь «1 ко многим»
Затем создадим таблицы «Счета» и «Платежи»:
Рисунок 16 – Идентифицирующая связь «1 ко многим»
Поскольку сущность Платеж была «слабой», у нее нет полноценного первичного
ключа, и каждый платеж однозначно идентифицируется группой атрибутов (номер_счета,
номер платежа). Отметим в качестве ключевого поля «payment_num», а затем создадим
идентифицирующую связь между Счетом и Платежом. Идентифицирующая связь
создается с помощью пиктограммы
(со сплошной линией). При этом новый столбец
«k_bill_bill_num» становится не только внешним ключом в таблице «Платеж», но и
частью первичного ключа.
2.2.4
Идентифицирующая связь «Многие ко многим»
Далее создадим таблицы «Прайс-лист» и «Протокол». Создание связи «многие ко
многим» может происходить 2-мя способами, в ручную или, используя пиктограмму
.
Рассмотрим ручное создание связи. Связь «многие ко многим» подразумевает создание
промежуточной таблицы, которая будет содержать в себе внешние ключи (первичные) из
связываемых таблиц.
Рисунок 17 – Создание промежуточной таблицы
Свяжем «Протокол» со «Счетом» и «Прайс-листом», в таблице появятся столбцы
«k_price_price_num» и «k_bill_bill_num». Из этих столбцов нужно сделать первичный
ключ, т.е. зайти в конструктор таблицы и отметить независимый переключатель в столбце
PK, как показано на рисунке ниже.
Рисунок 18 – Создание идентифицирующей связи
Интересно отметить, что при этом связи таблицы «Протокол» сами собой
превратились в идентифицирующие связи, потому что мы включили оба внешних ключа в
состав первичного ключа. На картинке около столбцов «k_price_price_num» и
«k_bill_bill_num» появились пиктограммы «ключики», а связи из пунктирных линий
превратились в сплошные линии.
Рисунок 19 – Результат создания связи «многие ко многим»
Общий вид схемы представлен на рисунке 20.
Рисунок 20 – Результирующая схема БД
2.3 Синхронизация модели с сервером
Для синхронизации проектируемой БД с сервером необходимо открыть меню
«Database» и выбрать элемент «Synchronize Model…»
Рисунок 21 – Синхронизация модели
Рисунок 22 – Список изменений
Рисунок 23 – Синхронизация БД с новыми изменениями
Download