2. Щелкните и перетащите одну из зеленых меток на таблицу tblRegion. При этом цвет метки станет красным, что означает незавершенность выполняемых действий с данным отношением.
3. Щелкните и перетащите другую зеленую метку на таблицу tblCustomer.
4. В странице свойств в нижней части окна Visio выберите поля State в обеих таблицах, а затем щелкните на кнопке Associate (Связать). Теперь ERD-диаграмма будет выглядеть, как показано на рис. 1.11. Обратите внимание, что кнопка между двумя списками полей из таблиц tblRegion и tblCustomer либо будет неактивной, либо будет содержать надпись Disconnect (Разорвать) или Associate (Связать). Например при выборе по одному полю в каждом списке эта кнопка будет иметь надпись Associate.
Рис. 1.11. ERD-диаграмма с отображением отношения между таблицами tblCustomer и tbIOrder
После создания таблицы в схеме базы данных можно использовать программу Visio для создания таблицы в базе данных. Для этого нужно выбрать команду меню Database→Update (База данных→Обновить). На экране появится диалоговое окно программы-мастера Database Update Wizard с предложением выполнить обновление. Для обновления базы данных можно создать сценарий на языке определения данных (Data Definition Language — DDL), который внесет все необходимые изменения в базу данных. Этот способ позволяет задокументировать все вносимые изменения и использовать их для репликации. (Более подробно DDL рассматривается в главе 2, "Запросы и команды на языке SQL".) Для обновления базы данных программа Visio может просто внести их в базу данных без создания сценария на DDL. Программа-мастер Database Update Wizard позволяет использовать любой из этих вариантов либо оба вместе.
Часто создание графической модели позволяет обнаружить недостатки схемы базы данных. Например, созданная ранее схема позволяет сохранять информацию о клиентах и заказах, но заказы состоят из товаров, взятых со склада компании и проданных клиенту. Однако в данной схеме базы данных не предусмотрена возможность просмотра товаров, заказанных клиентом.
Для решения этой проблемы нужно создать таблицу для хранения сведений о товарах заказа, которая имеет приведенную ниже структуру.
tblOrderItem |
ID |
OrderID |
ItemID |
Quantity |
Cost |
Теперь между таблицами tblOrder и tblOrderItem существует отношение типа один-ко-многим, как показано на рис. 1.12.
Полностью схему всей базы данных Novelty можно скопировать в виде файла для программы Visio с Web-страницы этой книги на Web-сервере Издательского дома "Вильяме" по адресу: www.williamspublishng.com.
НА ЗАМЕТКУ
Не следует путать процесс создания схемы базы данных с процессом создания программного обеспечения. В большинстве компаний по созданию программного обеспечения используется методология, которая регламентирует решаемые бизнес-задачи, внешний вид программного обеспечения и способ его создания. Их нужно учитывать при разработке базы данных.
Отношение — это способ формального определения того, как две таблицы связаны друг с другом. При определении отношения необходимо сообщить процессору баз данных, через какие два поля связываются две таблицы, участвующие в создании отношения.
РИС. 1.12. Схема базы данных с отношениями между четырьмя таблицами
Полями, создающими отношение, являются первичный ключ (представленный выше в этой главе) и внешний (foreign) ключ. Внешний ключ — это ключ в связанной таблице, который хранит копию первичного ключа из основной таблицы.
Предположим, у вас есть таблицы с характеристиками отделов и сотрудников компании. Отношение между отделом и группой сотрудников можно определить типом один-ко-многим. Каждому отделу присваивается собственный идентификационный номер (ID), и каждый сотрудник имеет свой ID. Но, чтобы указать, в каком отделе работает каждый сотрудник, необходимо сделать копию номера ID отдела в каждой записи, содержащей данные о сотруднике. Итак, чтобы идентифицировать каждого сотрудника как члена некоторого отдела, в таблице Employees (Сотрудники) должно быть предусмотрено поле (именуемое, допустим, Department ID) для хранения ID отдела, в котором работает данный сотрудник. Поле Department ID в таблице Employees служит внешним ключом таблицы Employees, поскольку хранит копию первичного ключа таблицы Departments (Отделы).
Читать дальше