
- •Часть 3 Проектирование базы данных
- •Глава 9. Функциональные зависимости.
- •9.1. Введение
- •9.2. Основные определения
- •9.3. Тривиальные и нетривиальные зависимости
- •9.4. Замыкание множества зависимостей
- •9.5. Замыкание множества атрибутов
- •9.6. Неприводимое множество зависимостей
- •9.7. Резюме
- •Глава 10 Дальнейшая нормализация:
- •1Нф, 2нф, 3нф, нфбк
- •10.1. Введение
- •10.2. Декомпозиция без потерь и функциональные зависимости
- •10.3. Первая, вторая и третья нормальные формы
- •10.4. Сохранение зависимости
- •10.5. Нормальная форма Бойса-Кодда
- •10.6. Резюме
- •Глава 12 Модель типа объект/отношение
- •12.1. Введение
- •12.2. Общий подход
- •12.3. Обзор модели объект/отношение
- •12.4. Диаграммы объект/отношение
- •12.5. Проектирование базы данных на основе модели типа объект/отношение
- •12.6. Краткий анализ
- •12.7. Резюме
12.4. Диаграммы объект/отношение
Как уже объяснялось в предыдущем разделе, в [12.3] не только введена сама модель объект/отношение, но также и представлена концепция диаграммы объект/отношение (0/0-диаграмма). Такая диаграмма (также называется схемой) является методом представления логической структуры базы данных в графическом виде для более простого и понятного выражения основных компонентов макета базы данных (рисунок порой стоит тысячи слов). Действительно, популярность применения модели объект/отношение для проектирования баз данных скорее всего объясняется именно наличием диаграммной техники, чем какой-либо другой причиной. Далее правила создания 0/0-диаграмм разъясняются на примерах, приведенных на рис. 12.2 и 12.3.
Замечание. Так же, как и сама модель объект/отношение, диаграммная техника постоянно совершенствуется, поэтому в этом разделе будет описана ее версия, которая в некоторых важных отношениях отличается от оригинальной методики, предложенной Ченом [12.3].
Объекты
Каждый тип объекта показан в виде отдельного прямоугольника с его именем внутри, причем слабые типы объектов изображаются в двойной рамке. Примеры (см. рис. 12.2).
• Правильные объекты:
DEPARTMENT
EMPLOYEE
SUPPLIER
PART
PROJECT
• Слабые объекты:
DEPENDENT
Свойства
Свойства показаны в виде эллипсов с названием свойства, соединенных сплошной линией с соответствующим объектом (или отношением). Эллипс обведен штриховой линией, если свойство производное, и двойной линией, если свойство многозначное. Если свойство составное, то составляющие его свойства показаны в виде других эллипсов, соединенных с эллипсом составного свойства с помощью дополнительных линий. Ключевые свойства, как правило, подчеркиваются, а множества значений не показываются вовсе.
Примеры (см. рис. 12.2).
• Для EMPLOYEE:
ЕМР# (ключевое свойство)
ENAME (составное, состоящее из свойств FIRST, MI и LAST)
SALARY
• Для SUPPLIER:
S# (ключевое свойство)
SNAME
STATUS
CITY
• Для SUPP_PART_PROJ:
QTY
• Для PART_STRUCTURE:
QTY
Для экономии места другие свойства на рис. 12.2 не показаны.
Отношения
Каждый тип отношения показан в виде ромба с названием отношения внутри. Ромб окружен двойной линией, если отношение задано между слабым типом объекта и типом объекта, от существования которого находится в зависимости слабый тип объекта. Участники каждого отношения присоединены к соответствующему отношению сплошными линиями. Каждая такая линия содержит надпись "1" или "М" для обозначения типа отношения, один-к-одному, один-ко-многим и т.д. Двойная линия обозначает полное участие.
Примеры (см. рис. 12.2).
• DEPT_EMP (отношение типа один-ко-многим между объектами DEPARTMENT и EMPLOYEE)
• EMP_DEP (отношение типа один-ко-многим между объектом EMPLOYEE и объектом слабого типа DEPENDENT)
• PROJ_WORK и PROJ_MANAGER (оба отношения между объектами EMPLOYEE и PROJECT, первое имеет тип многие-ко-многим, а второе — один-ко-многим)
• SUPP_PART_PROJ (отношение многие-ко-многим-ко-многим, включающее объекты SUPPLIER, PART и PROJECT)
• SUPP_PART (отношение многие-ко-многим между объектами SUPPLIER и PART)
• PART_STRUCTURE (отношение многие-ко-многим между объектами PART и PART)
Обратите внимание, что в последнем случае две линии от PART к PART_STRUCTURE отличаются своими надписями с указанием различных выполняемых "ролей" (ЕХР и IMP, которые обозначают соответственно "раскладывание товара по компонентам" и "складывание товара по компонентам"). Отношение PART_STRUCTURE является типичным примером рекурсивного отношения.
Подтипы и супертипы
Пусть У является подтипом X, тогда от У к Х можно провести сплошную линию со стрелкой на конце для представления математического "подмножества" оператора (поскольку множество всех У является подмножеством множества вcex X.
Примеры (см. рис. 12.3, хотя стрелки на нем не показаны).
• Тип PROGRAMMER является подтипом типа EMPLOYEE.
• Типы APPLICATION_PROGRAMMER и SYSTEM_PROGRAMMER являются подтипами типа PROGRAMMER.