- •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
Семантическое моделирование
13.1. Введение
Семантическое моделирование стало предметом интенсивных исследований с конца 1970-х годов. Основным побудительным мотивом подобных исследований (т.е. проблемой, которую исследователи пытались разрешить) был следующий факт. Дело в том, что системы баз данных обычно обладают весьма ограниченными сведениями о смысле хранящихся в них данных. Чаще всего они знают, как обращаться с данными определенных ■простых типов, и понимают некоторые простейшие ограничения целостности, наложенные на эти данные. Любая более сложная интерпретация возлагается на пользователя. Однако было бы замечательно, если бы системы могли понимать чуть больше1 и несколько разумнее отвечать на запросы пользователя, а также поддерживать более сложные (т.е. более высокоуровневые) интерфейсы пользователя. Например, было бы прекрасно, если бы язык SQL мог понимать, что вес детали и поставляемое количество являются хотя и числовыми, но все же семантически разными величинами. Это позволило бы системе подвергнуть сомнению или даже вовсе отвергнуть запрос, в котором соединение информации о деталях и поставках выполняется посредством сравнения веса детали с поставляемым количеством.
Конечно, к приведенному выше примеру прямое отношение имеет понятие доменов (или типов). Это служит прекрасной иллюстрацией того факта, что существующие модели данных все же не лишены семантических аспектов. В частности, домены, потенциальные и внешние ключи являются примерами семантических аспектов существующей реляционной модели, что прямо следует из их определения. В качестве другого способа реализации семантики были разработаны различные "расширенные" модели данных, которые, тем не менее, несут лишь в незначительной степени большую смысловую нагрузку, чем модели, предложенные ранее. Перефразировав Кодда [13.6], можно сказать, что задача представления смысла данных не имеет окончательного решения и можно ожи-
' Следует отметить, что, с нашей точки зрения, система с поддержкой предикатов переменных-отношений и базы данных (обсуждавшихся в главе 8) должна была бы "понимать немного больше ". Иначе говоря, можно было бы возразить, что описанная поддержка предикатов может пониматься, как удобное и эффективное основание для семантического моделирования. Однако, как это ни печально, большинство схем семантического моделирования не имеет никакого строгого обоснования, поскольку все они в той или иной степени являются произвольными (предложения в [13.17, 13.19] являются исключениями). Возможно, такое состояние дел в будущем изменится, особенно благодаря растущему пониманию в мире коммерции важности бизнес-правил [8.18, 8.19]. Описанные в главе 8 предикаты, по сути, как раз и являются такими "бизнес-правилами ".
дать (или надеяться на это!) непрекращающегося прогресса в этом направлении по мере углубления нашего понимания существующих проблем. Термин семантическая модель, который часто используется по отношению к той или иной "расширенной" модели, в данном случае не совсем подходит, поскольку предполагает, что модель построена таким образом, чтобы выявить всю семантику рассматриваемой ситуации. С другой стороны, понятие "семантическое моделирование" действительно является довольно удачным названием целой области исследований, посвященных способам представления смыслового значения. В данной главе сначала представлено краткое введение в некоторые основные идеи этой области исследований, а затем подробно описан один из конкретных подходов, основанный на использовании модели "сущность/связь" (наиболее распространенный на практике).
Следует отметить, что семантическое моделирование имеет также несколько других названий, например "моделирование данных", "£Л-моделирование", "моделирование сущностей" и "объектное моделирование". Здесь по указанным ниже причинам предпочтение отдается термину "семантическое моделирование".
■ Термин "моделирование данных" не подходит, поскольку он перекликается с определенным ранее термином "модель данных", обозначающим формальную систему, которая включает аспекты определения структуры, поддержания целостности и манипулирования данными. Кроме того, подобное название будет способствовать закреплению популярного заблуждения о том, что модель данных (в приведенном выше смысле) включает только структуру данных.
Замечание. Стоит напомнить (см. раздел 1.3 главы 1), что термин модель данных используется в литературе с двумя совершенно разными значениями: первое относится к модели данных вообще (реляционная модель является моделью данных именно в этом смысле), а второе — к модели представления перманентных данных некоторого конкретного предприятия. Здесь рассматриваемый термин в последнем смысле не используется, но следует иметь в виду, что он часто используется другими авторами.
Также неудачным является термин "ER-моделирование", поскольку в нем неявно подразумевается существование только одного подхода к данной проблеме, тогда как на практике, безусловно, существует несколько различных подходов. Тем не менее термин "ER-моделирование" хорошо известен, весьма популярен и принят в широком кругу специалистов.
Относительно термина "моделирование сущностей" нет никаких значительных возражений за исключением того, что он кажется более специализированным по сравнению с термином "семантическое моделирование" и предполагает некоторый смысловой акцент, который не совсем подходит в данном случае.
Что касается термина "объектное моделирование", то проблема здесь заключается в том, что термин "объект" в данном контексте, очевидно, является синонимом термина "сущность", тогда как он используется в совершенно другом смысле в другом контексте (в частности, в контексте баз данных других типов, рассматриваемых в части VI этой книги). По мнению автора, именно этот факт (наличие у данного термина двух разных значений) явился причиной такого явления, как Первый Большой Просчет (First Great Blunder) [3.3]. Более подробно этот вопрос рассматривается в главе 25.
Возвращаясь к главной теме нашего обсуждения, следует остановиться на причине включения данного материала в эту часть книги. Идеи семантического моделирования могут быть полезны как средство проектирования базы данных даже при отсутствии их непосредственной поддержки в СУБД. Аналогично тому, как идеи исходной реляционной модели использовались в качестве примитивного вспомогательного средства при проектировании баз данных задолго до появления любых коммерческих воплощений этой модели, так и идеи некоторой "расширенной" модели могут оказаться полезными в качестве вспомогательного средства проектирования базы данных, даже когда никакого коммерческого воплощения этих идей еще не существует. Действительно, было бы справедливо отметить, что на момент написания этой книги идеи семантического моделирования оказали на проектирование баз данных большое влияние — было предложено несколько технологий проектирования, основанных на том или ином семантическом подходе. Поэтому в данной главе основной акцент будет сделан на приложении идей семантического моделирования к задаче проектирования базы данных.
Материал этой главы упорядочен следующим образом. После данного введения, в разделе 13.2, описываются основные термины, используемые в семантическом моделировании. Затем, в разделе 13.3, обсуждается наиболее известная из расширенных моделей — предложенная Ченом (Chen) модель "сущность-связь" (или ER-модель; entity/relationship model— ER-model). Далее, в разделах 13.4 и 13.5, рассматривается применение этой модели для проектирования базы данных. (Другие модели кратко описываются в комментариях к некоторым публикациям, упомянутым в списке рекомендуемой литературы.) После этого, в разделе 13.6, предлагается беглый анализ некоторых аспектов ER-модели, и наконец, в разделе 13.7, приводится краткое резюме.