Проектирование реляционной базы данных
85
Такое размещение объектов дает представление об их иерархической подчиненности,
делает модель более наглядной и облегчает понимание одно-многозначных отно-
шений между объектами.
З
АМЕЧАНИЕ
Для определения уровня
объектов на графе ИЛМ можно, условно удалив объекты
нулевого уровня, найти объекты первого уровня. К объектам этого уровня следует от-
нести объекты, не подчиненные теперь никаким другим объектам. Аналогично опре-
деляются объекты каждого следующего уровня. При большом количестве объектов
в ИЛМ аналогичные действия выполняются на матрице смежности модели.
Логическая структура
реляционной базы данных
Логическая структура реляционной базы данных Access является адекватным ото-
бражением полученной информационно-логической модели предметной области.
Для канонической модели не требуется дополнительных преобразований. Каждый
информационный объект модели данных отображается соответствующей реляци-
онной таблицей. Структура реляционной таблицы определяется реквизитным со-
ставом соответствующего
информационного объекта, где каждый столбец (поле)
соответствует одному из реквизитов объекта. Ключевые реквизиты объекта обра-
зуют уникальный ключ реляционной таблицы. Для каждого столбца таблицы (поля)
задается тип, размер данных и другие свойства. Строки (записи) таблицы соответ-
ствуют экземплярам объекта и формируются при загрузке таблицы.
Связи между объектами модели данных реализуются одинаковыми реквизитами —
ключами связи
в соответствующих таблицах. При этом ключом связи типа 1 : M
всегда является уникальный ключ главной таблицы. Ключом связи в подчиненной
таблице является либо некоторая часть уникального ключа в ней, либо поле, не
входящее в состав первичного ключа (например, код фирмы в таблице
СКЛАД
). Ключ
связи в подчиненной таблице называется
внешним ключом
.
Все связи в полученной информационно-логической модели предметной области
"Поставка товара" характеризуются отношением типа 1 : M.
Соответственно, связь
между таблицами ПОКУПАТЕЛЬ и ДОГОВОР осуществляется по коду покупателя
(КОД_ПОК), который является уникальным идентификатором главного объекта
ПОКУПАТЕЛЬ
и неключевым в объекте
ДОГОВОР
(см. табл. 2.6).
Связь между таблицами ТОВАР и ПОСТАВКА_ПЛАН осуществляется по уни-
кальному ключу главного объекта
ТОВАР
—
Коду товара
, который в подчиненном
объекте
ПОСТАВКА_ПЛАН
является частью ключа (см. табл. 2.6). Аналогично связь ме-
жду таблицами ТОВАР и ОТГРУЗКА осуществляется по
уникальному ключу глав-
ного объекта
ТОВАР
—
Коду товара
.
Связь между таблицами ДОГОВОР и НАКЛАДНАЯ осуществляется по уникаль-
ному ключу главного объекта
ДОГОВОР
—
Номеру
договора
(
НОМ_ДОГ
), который в под-
чиненном объекте
НАКЛАДНАЯ
не входит в состав ключа (см. табл. 2.7).
86
Глава 2
Связь между таблицами ДОГОВОР и ПОСТАВКА_ПЛАН осуществляется по уни-
кальному ключу главного объекта
ДОГОВОР
—
Номеру договора
(
НОМ_ДОГ
), который в
подчиненном объекте
ПОСТАВКА_ПЛАН
является частью ключа (см. табл. 2.6). Анало-
гично связь между таблицами НАКЛАДНАЯ и ОТГРУЗКА осуществляется по уни-
кальному составному ключу главного объекта
НАКЛАДНАЯ — НОМ_НАКЛ
+
КОД_СК
, кото-
рый в подчиненном объекте
ОТГРУЗКА
является частью ключа (см. табл. 2.7).
В Access может быть создана
схема данных
, наглядно отображающая логическую
структуру базы данных. Определение одно-многозначных
связей в этой схеме
должно осуществляться в соответствии с построенной моделью данных. Топология
проекта схемы данных практически совпадает с топологией информационно-
логической модели. Для модели данных предметной области (см. рис. 2.18), по-
строенной в рассмотренном примере, логическая структура базы данных в виде
схемы данных Access приведена на рис. 2.19.
Рис. 2.19.
Логическая структура реляционной базы данных предметной области
"Поставка товаров"
На этой схеме прямоугольники отображают таблицы базы данных с полным спи-
ском их полей, а связи показывают, по каким полям осуществляется взаимосвязь
таблиц. Имена ключевых полей для наглядности выделены и находятся в верхней
части полного списка полей каждой таблицы.
Контрольные
вопросы
1.
Что стоит за понятием сущность предметной области?
2.
Что представляет экземпляр информационного объекта
ТОВАР
?
Проектирование реляционной базы данных
87
3.
В каком случае описательный реквизит функционально полно зависит от
ключа?
4.
Как сказываются нормализация данных на свойствах базы?
5.
Должен ли
информационный объект, отвечающий требованиям нормализации,
иметь уникальный ключ?
6.
Могут ли описательные реквизиты, входящие в информационный объект,
отвечающий требованиям нормализации, быть зависимыми друг от друга?
7.
Может ли описательный реквизит, входящий в информационный объект,
отвечающий требованиям нормализации, зависеть от ключа транзитивно?
8.
Как устраняется транзитивная зависимость между реквизитами?
9.
Верно ли утверждение, что документы являются основным источником данных
вне машинной сферы?
10.
Перечислите формальные правила выделения информационных объектов.
11.
Может ли реквизит одновременно быть ключевым для одних реквизитов и
описательным для других?
12.
Назовите виды отношений между двумя информационными объектами?
13.
В каких отношениях находятся информационные объекты
ДОГОВОР
и
НАКЛАДНАЯ
в рассмотренной предметной области?
14.
Сколько договоров соответствует одной накладной?
15.
В каких отношениях находятся объекты
ТОВАР
и
ОТГРУЗКА
?
16.
Какой объект является главным в отношении
ДОГОВОР
и
ПОКУПАТЕЛЬ
?
17.
Как преобразовать много-многозначные отношения
ТОВАР
и
СКЛАД
к одно-
многозначным?
18.
Какой объект играет роль
связки между объектами
ДОГОВОР
и
ТОВАР
,
находящимися в отношении М : N?
19.
Какой объект играет роль связки между объектами
ТОВАР
и
НАКЛАДНАЯ
,
находящимися в отношении М : N?
20.
Как образуется ключ в объекте "связка"?
21.
По какому полю связываются таблицы, находящиеся в одно-многозначных
отношениях?
22.
Как можно определить уровень, на котором должен быть размещен объект
в канонической модели данных?
23.
Сколько таблиц будет в базе данных, построенной на основе нормализованной
модели данных предметной области?
24.
Может ли повторяться значение первичного ключа в нескольких строках
реляционной таблицы?