- •7.7.6. Определить общее количество поставщиков
- •7.7.7. Определить в поставках максимальное
- •7.7.8. Для каждой поставляемой детали указать номер и общий объем поставки в штуках
- •7.7.9. Указать номера всех типов деталей, поставляемых более чем одним поставщиком
- •7.7.10. Определить имена поставщиков детали с номером т2'
- •7.7.11. Определить имена поставщиков по крайней мере одной красной детали
- •7.7.12. Указать номера поставщиков, статус которых меньше текущего максимального статуса
- •7.7.13. Указать имена поставщиков детали с номером 'р2'
- •7.7.14. Выбрать имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.7.15. Определить имена поставщиков всех типов деталей
- •7.7.16. Определить номера деталей, которые либо весят более 16 фунтов, либо поставляются поставщиком с номером 's2', либо и то, и другое
- •7.8. Резюме
- •8.2. Ограничения типа
- •8.3. Ограничения атрибута
- •8.4. Ограничения переменной-отношения
- •8.5. Ограничения баз данных
- •8.6. "Золотое правило"
- •8.7. Ограничения состояния и ограничения перехода
- •8.8. Ключи
- •3. Пусть r1 и r2 — ссылающаяся и ссылочная переменные-отношения соответственно.
- •8.9. Средства языка sql
- •8.10. Резюме
- •9.1. Введение
- •9.2. Для чего нужны представления
- •9.3. Выборка данных из представлений
- •9.4. Обновление данных в представлениях
- •9.5. Моментальные снимки
- •9.6. Поддержка представлений в языке sql
- •9.7. Резюме
- •Часть III
- •10.1. Введение
- •10.2. Основные определения
- •10.3. Тривиальные и нетривиальные зависимости
- •10.4. Замыкание множества зависимостей
- •10.5. Замыкание множества атрибутов
- •10.6. Неприводимые множества зависимостей
- •10.7. Резюме
- •Глава 1 1
- •I Переменные-отношения в знф I
- •11.2. Декомпозиция без потерь
- •11.3. Первая, вторая и третья нормальные формы
- •11.4. Сохранение зависимостей
- •11.5. Нормальная форма Бойса-Кодда
- •11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
- •11.7. Резюме
- •12.1. Введение
- •12.2. Многозначные зависимости и четвертая нормальная форма
- •12.3. Зависимости соединения и пятая нормальная форма
- •Соединение по комбинации атрибутов j#,s#
- •Исходное состояние spj
- •12.4. Общая схема процедуры нормализации
- •12.5. Денормализация
- •12.6. Ортогональное проектирование (небольшое отступление от темы)
- •12.7. Другие нормальные формы
- •12.8. Резюме
- •12.3. Brosda V., Vossen g. Update and Retrieval Through a Universal Schema Interface // acm tods. — December, 1988. — 13, № 4.
- •12.5. Date c.J. Will the Real Fourth Normal Form Please Stand Up? // c. J. Date and Hugh Darwen. Relational Database Writings 1989-1991.— Reading, Mass.: Addison-Wesley, 1992.
- •12.20.Kent w. The Universal Relation Revisited // acm tods. — December, 1983. — 8, № 4.
- •12.22.Maier d., Ullman j.D. Fragments of Relations // Proc. 1983 sigmod Intern. Conf. On Management of Data. — San Jose, Calif. — May, 1983.
- •12.24.Maier d., Ullman j.D. Maximal Objects and the Semantics of Universal Relation Databases // acm tods. — March, 1983. — 8, № 1.
- •Глава 13
- •13.1. Введение
- •13.2. Общий подход
- •Каждыи экземпляр сущности ности «Произведение"
- •13.3. Модель "сущность/связь"
- •13.5. Проектирование базы данных с помощью метода er-моделирования
- •13.6. Краткий анализ er-модели
- •13.7. Резюме
13.6. Краткий анализ er-модели
В этом разделе кратко рассматриваются некоторые определенные аспекты ER-модели. Большая часть излагаемого здесь материала взята из другой работы автора [13.8], в которой эта тема обсуждается подробнее. Дополнительные сведения и комментарии можно найти в аннотациях, помещенных в список рекомендуемой литературы к данной главе.
ER-модель как основа реляционной модели
Рассмотрим подход с использованием ER-модели с несколько иной точки зрения. Надо полагать, вполне очевидно, что идеи, послужившие основанием для разработки этого подхода, во многом очень близки тем идеям, которые послужили Кодду неформальной основой при создании им исходной формальной реляционной модели. Как уже объяснялось в разделе 13.2, общий подход к разработке "расширенных" моделей включает четыре больших этапа; назначение каждого из них можно кратко сформулировать следующим образом.
Идентифицировать полезные семантические концепции.
Определить формальные объекты.
Определить формальные правила поддержки целостности данных ("метаограничения").
Определить формальные операторы.
Обратите внимание, что эти этапы вполне применимы и для разработки базовой реляционной модели (а также для любой другой формальной модели данных), а не только для "расширенных" моделей, подобных ER-модели. Иначе говоря, для того чтобы создать формальную базовую реляционную модель, Кодд прежде всего должен был выявить некоторые неформальные "полезные семантические концепции". Эти концепции в основе своей были близки идеям ER-моделированя или чему-то очень
схожему с ними. Действительно, работы Кодда подтверждают это, поскольку в его первой статье (самой ранней версии работы [5.1]), посвященной реляционной модели, имеются следующие строки.
"Множество сущностей заданного типа сущности можно рассматривать как отношение, и такое отношение мы будем называть отношением типа сущности... Оставшиеся отношения... между типами сущностей... называются межсущностными отношениями... Важнейшим свойством каждого межсущностного отношения является то, что [оно содержит по крайней мере два внешних ключа, которые] обращаются к различным типам сущностей либо к общему типу сущности, выполняющему различные роли. "
Здесь Кодд явно предлагает использовать отношения для моделирования и "сущностей", и "связей". Но самое главное заключается в том, что отношения являются формальными объектами, а реляционная модель — формальной системой. Ценность научного вклада Кодда состоит в том, что он нашел удачную формальную модель для определенных аспектов реального мира.
В противоположность этому ER-модель не является (или, по крайней мере, не в первую очередь является) формальной моделью. Фактически она состоит из набора преимущественно неформальных концепций, соответствующих только первому из четырех приведенных выше этапов. (Более того, ее формальные аспекты на самом деле не очень значительно отличаются от соответствующих аспектов основной реляционной модели; обсуждение этого вопроса будет продолжено ниже.) Для проектирования базы данных, конечно, полезно иметь в своем распоряжении, помимо всего прочего, набор концепций, определенных на этапе 1. Однако несомненным остается тот факт, что проектирование базы данных не может быть завершено без применения формальных объектов и правил, представленных на этапах 2 и 3, а множество других задач и вовсе не может быть решено без использования формальных операторов, определяемых на этапе 4. • Следует отметить, что перечисленные выше замечания не предполагают доказательства бесполезности ER-модели; скорее всего, наоборот. Однако одной этой модели недостаточно. Более того, несколько странным кажется тот факт, что первые описания неформальной ER-модели были опубликованы спустя несколько лет после опубликования описания формальной реляционной модели, изначально основанной (как мы видели) на некоторых идеях ER-модели.
Является ли ER-модель моделью данных
Из вышеизложенного не совсем ясно, является ли ER-модель на самом деле моделью данных, по крайней мере в предложенном в этой книге смысле (т.е. формальной системой, включающей структурные аспекты, аспекты поддержания целостности и манипулирования данными). Конечно, термин "ER-моделирование" обычно используется для обозначения процесса выбора только структуры базы данных, хотя выше, в разделах 13.3-13.511, рассматривались и некоторые аспекты целостности (они, в основ
ном, относились к первичным и внешним ключам). Однако при более внимательном чтении работы [13.5] можно предположить, что ER-модель действительно является моделью данных, но такой, которая представляет собой лишь тонкий слой на вершине базовой реляционной модели (и, конечно, не может заменить реляционную модель, как хотелось бы некоторым авторам). Это утверждение можно обосновать приведенными ниже доводами.
Фундаментальный элемент данных в ER-модели, т.е. ее фундаментальный формальный элемент, существующий в противоположность неформальным элементам ("сущностям", "связям" и т.д.), — это отношение степени п.
Операторы ER-модели, в основном, являются операторами реляционной алгебры. (Действительно, работу [13.5] нельзя назвать очень ясной в этом отношении, но в ней предлагается менее мощное по сравнению с реляционной алгеброй множество операторов, среди которых, например, не существует объединения и явно заданного соединения.)
Именно в вопросах целостности эти два подхода в некоторой степени отличаются один от другого: ER-модель содержит набор встроенных правил целостности, соответствующих некоторым (но не всем) описанным в этой книге правилам, необходимым для внешнего ключа. Таким образом, там, где для "чистой" реляционной системы потребовалось бы явно сформулировать некоторые правила для внешних ключей, для ER-модели достаточно было указать, что данная переменная-отношение имеет некоторый тип, — и соответствующие правила для внешних ключей были бы задействованы.
Сравнительный анализ сущностей и связей
В этой книге уже несколько раз отмечалось, что "связи" лучше всего рассматривать просто как сущности определенного рода. И наоборот, обязательным условием использования ER-модели является то, что эти два понятия должны каким-то образом различаться. По мнению автора, любой подход, при котором преследуется такое разделение, обладает серьезными недостатками, поскольку, как отмечалось выше, в разделе 13.2, один и тот же элемент может совершенно справедливо рассматриваться как сущность одними пользователями и как связь — другими. В частности, рассмотрим следующий пример с заключением брака.
С одной стороны, очевидно, что браком называется некоторая связь между двумя людьми. В качестве примера можно привести запрос "С кем вступила в брак Элизабет Тейлор в 1975 году?".
С другой стороны, не менее очевидно, что брак является сущностью определенного типа. В качестве примера можно привести следующий запрос: "Сколько браков было заключено в этой церкви с апреля?".
этот счет из работы [13.27]: "Декларативные процессы очень сложны для того, чтобы их можно было выразить в виде части бизнес-модели, а потому они должны быть определены отдельно аналитиком/разработчиком". При этом все еще остается в силе аргумент, что проектирование базы данных должно быть процессом точного определения приемлемых ограничений (см. [8.18], [8.19], [13.17]-[13.19]).
Если в методике проектирования базы данных между сущностями и связями предполагается наличие определенных различий, то в лучшем случае эти две интерпретации будут рассматриваться асимметрично (т.е. запросы для "сущностей" и запросы для "связей" будут выглядеть совершенно по-разному). В худшем случае одна интерпретация вовсе не будет поддерживаться (т.е. один из классов запросов сформулировать будет невозможно).
В качестве еще одной иллюстрации рассмотрим следующее утверждение из учебного пособия по ER-моделированию [13.17].
"Обычно в начале, в процессе разработки концептуальной схемы, некоторые связи представляются в виде атрибутов [которые в данном случае означают внешние ключи]. Затем эти атрибуты преобразуются в связи по мере дальнейшей разработки проекта и углубления понимания его особенностей. "
Но что произойдет, если атрибут станет внешним ключом позже, т.е. если база данных будет изменена уже после того, как она использовалась в течение некоторого времени? Если эту идею логически развивать, то можно прийти к выводу, что макет базы данных должен содержать связи и совсем не содержать атрибутов. (На самом деле эта позиция обладает некоторыми достоинствами; см. аннотацию к [13.18] в конце этой главы.)
Заключительные замечания
Помимо описанной в этой главе схемы ER-моделирования, существует много других семантических схем моделирования. Однако большинство из них очень похожи одна на другую; в частности, многие из них можно характеризовать просто как тот или иной вариант графических обозначений для представления некоторых ограничений для внешних ключей, плюс несколько иных дополнительных компонентов. Безусловно, подобные графические компоненты могут быть полезны для представления "всей картины в целом", но они слишком просты, чтобы с их помощью можно было выполнить все необходимые проектировочные работы12. В частности, как отмечалось выше, они обычно не подходят для определения общих ограничений целостности. Например, как можно было бы представить на ER-диаграмме наличие зависимости соединения?