
- •Часть 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.6. Краткий анализ
В этом разделе кратко рассматриваются некоторые другие аспекты модели типа объект/отношение. Большая часть излагаемого здесь материала взята из другой работы автора [12.7], в которой эта тема обсуждается подробнее.
Модель объект/отношение как основа реляционной модели
Рассмотрим подход на основе модели объект/отношение с несколько иной точки зрения. Вероятно, идеи, основанные на таком подходе или близкие к ним, с точки зрения Кодда, составляли неформальную основу при создании формальной реляционной модели. Как уже объяснялось выше в этой главе, общий подход к семантическому моделированию включает четыре больших этапа; цель каждого из них можно кратко сформулировать следующим образом:
1. Идентифицировать полезные семантические концепции.
2. Вывести формальные объекты.
3. Вывести формальные правила целостности.
4. Вывести формальные операторы.
Обратите внимание, что эти четыре этапа также применимы для проектирования базовой реляционной модели (и для любой формальной модели данных), а не только для "расширенных" моделей типа объект/отношение. Иначе говоря, для того чтобы создать (формальную) базовую реляционную модель, Кодд прежде всего должен был разработать некоторые (неформальные) "полезные семантические концепции", основанные либо на идеях модели объект/отношение, либо на подобных им концепциях. Действительно, работы Кодда подтверждают это, поскольку в его первой статье [4.2], посвященной реляционной модели, приведены следующие строки:
"Множество объектов заданного типа объекта можно рассматривать как отношение, и мы будем называть такое отношение отношением типа объекта... Оставшиеся отношения ... между типами объектов и ... называются межобъектными отношениями... Существенным свойством каждого межобъектного отношения является то, что [оно содержит, по крайней мере, два внешних ключа, которые] обращаются к различным типам объектов либо к общему типу объекта, выполняющему различные роли".
Здесь Кодд в ясной форме предлагает, чтобы отношения использовались для моделирования и "объектов", и "зависимостей". Но самое главное заключается в том, что отношения являются формальными объектами, а реляционная система — формальной системой. Ценность научного вклада Кодда состоит в том, что он нашел удачную формальную модель для некоторых аспектов реального мира.
Наоборот, модель объект/отношение не является (или, по крайней мере, не в первую очередь является) формальной моделью. Действительно, она преимущественно состоит из набора неформальных концепций, соответствующих (только) первому из четырех приведенных выше этапов. (Более того, ее формальные аспекты на самом деле не очень значительно отличаются от соответствующих аспектов основной реляционной модели; обсуждение этого вопроса будет продолжено далее.) Для проектирования базы данных, несомненно, полезно иметь в своем распоряжении (помимо прочих) "непробиваемые" концепции, представленные на этапе 1. Однако немаловажным остается тот факт, что проектирование базы данных не может быть выполнено без формальных объектов и правил, представленных на этапах 2 и 3, а многие другие задачи вовсе не могут быть выполнены без использования формальных операторов этапа 4.
Следует отметить, что перечисленные выше замечания не означают бесполезности модели объект/отношение, скорее наоборот. Еще более странным кажется то, что впервые описание неформальной модели объект/отношение было опубликовано несколько лет спустя после публикации описания формальной реляционной модели, изначально основанной на некоторых идеях модели объект/отношение.
Является ли модель объект/отношение моделью данных
Исходя из изложенного, не совсем ясно, является ли модель объект/отношение на самом деле моделью данных, по крайней мере, в предложенном в этой книге смысле (т.е. как формальная система, включающая структурные аспекты, аспекты целостности и манипулирования). Конечно, термин "моделирование типа объект/отношение" обычно используется для обозначения процесса выбора (только) структуры базы данных, хотя выше в этой главе рассматривались некоторые аспекты целостности. Однако при более внимательном чтении оригинальной статьи Чена можно предположить, что модель объект/отношение действительно является моделью данных, но такой, которая представляет собой лишь тонкий слой на вершине базовой реляционной модели (и конечно, не может заменить реляционную модель, как хотелось бы некоторым разработчикам). Это утверждение можно обосновать приведенными ниже доводами.
• Прежде всего, фундаментальный элемент данных для модели объект/отношение, т.е. фундаментальный формальный элемент, который является противоположностью неформальным элементам — "объекту", "зависимости" и т.д., является отношение степени п.
• Операторы модели объект/отношение в основном являются операторами реляционной алгебры. (Действительно, работу [12.3] нельзя назвать очень ясной в этом отношении, но в ней предлагается менее мощное по сравнению с реляционной алгеброй множество операторов, среди которых, например, не существует объединения и явно заданного соединения.)
• Именно в вопросах целостности эти два подхода в некоторой степени отличаются друг от друга: модель объект/отношение содержит набор встроенных правил целостности, соответствующих некоторым, но не всем правилам внешнего ключа, описанным в главе 5 этой книги. Таким образом, там, где для "чистой" реляционной системы потребовалось бы явно сформулировать некоторые правила для внешних ключей, для модели объект/отношение достаточно было указать, что данное отношение имеет некоторый тип, и соответствующие правила для внешних ключей были бы задействованы.
Объекты по сравнению с отношениями
В этой книге уже несколько раз отмечалось, что "отношения" лучше всего рассматривать всего лишь как определенного рода объекты. И наоборот, обязательным условием модели объект/отношение является то, что эти два понятия должны каким-то образом различаться. По мнению автора, любой подход, в котором преследуется такое разделение, обладает серьезными недостатками, поскольку, как уже отмечалось выше в этой главе, один и тот же элемент может совершенно справедливо рассматриваться как объект одними пользователями и как отношение — другими. В этой связи можно рассмотреть следующий пример заключения брака.
• С одной стороны, браком называется некоторая связь между двумя людьми. В качестве примера можно привести запрос: "С кем вступила в брак Элизабет Тейлор в 1975 году?"
• С другой стороны, брак является своего рода объектом. В качестве примера можно привести следующий запрос: "Сколько браков было заключено в этой церкви с апреля?"
Если в методике проектирования базы данных предполагается наличие некоторых различий между "объектом и отношением", то в лучшем случае эти две интерпретации будут рассматриваться асимметрично (т.е. запросы для "объектов" и запросы для "отношений" буду выглядеть совершенно по-разному). А в худшем случае одна интерпретация вовсе не будет поддерживаться (т.е. один из классов запроса будет невозможно сформулировать).
В качестве еще одной иллюстрации рассмотрим следующее утверждение о модели объект/отношение из [12.10]:
"Обычно сначала следует представить некоторые отношения в виде атрибутов [которые в данном случае означают внешние ключи] для концептуальной схемы проектирования, а затем преобразовать эти атрибуты в отношения по мере дальнейшего развития и более глубокого понимания процесса проектирования".
Но что произойдет, если атрибут станет внешним ключом еще позже, т.е. если база данных будет изменена после того, как она использовалась в течение некоторого времени? Если эту идею логически развивать, то можно прийти к выводу, что макет базы данных должен содержать только отношения и совсем никаких атрибутов!