- •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. Резюме
11.6. Замечание по поводу атрибутов, содержащих в качестве значений отношения
Как было показано в главе 5, отношение может содержать атрибут, значения которого также являются некоторыми отношениями (рис. 11.17). Конечно, следствием этого является тот факт, что переменная-отношение, в свою очередь, также может содержать атрибуты, значениями которых являются некоторые переменные-отношения. Однако с точки зрения процедуры проектирования базы данных использовать подобные перемен
ные-отношения обычно не рекомендуется, поскольку для них характерна асимметрич-ностьи (не говоря уже о том, что их предикаты, как правило, весьма сложны) и эта асимметричность способна вызвать разные проблемы практического характера. Например, для случая, показанного на рис. 11.17, сведения о поставщиках и деталях представлены асимметрично. Рассмотрим два приведенных ниже симметричных запроса.
Получить список номеров поставщиков (St) детали с номером 'Р1'.
Получить список деталей (Pi), поставляемых поставщиком с номером 'S1'.
Из-за асимметричности переменной-отношения SPQ их формулировки оказываются совершенно различными
( SPQ WHERE Pi ( 'PI' ) IN PQ { Pi } ) { Si }.
( ( SPQ WHERE Si = St ( 'SI' ) ) { PQ } ) { Pi }.
В данном примере предполагается, что SPQ — это переменная-отношение, допустимыми значениями которой являются отношения, аналогичные показанному на рис. 11.17.
SPQ
s# |
PQ | |||
SI |
|
|
|
|
|
P# |
QTY |
| |
|
|
PI |
300 |
|
|
|
P2 |
200 |
|
|
|P6 |
100 |
| |
S2 |
|
|
|
|
|
P# |
QTY |
| |
PI |
300 | |||
P2 |
200 | |||
|
|
|
|
P# |
QTY |
|
|
Рис 11 17 Переменная-отношение SPQ с атрибутом, содержащим в качестве значений другое отношение
Еще хуже обстоит дело с операциями обновления. Рассмотрим следующие две операции обновления.
Ввести сведения о новой поставке 500 деталей типа 'Р5' поставщиком с номером 'S6'.
Ввести сведения о новой поставке 500 деталей типа 'Р5' поставщиком с номером 'S2'.
" Фактически подобные переменные-отношения ранее даже не были узаконены и назывались ненормализованными, т е такими, которые не находятся даже в первой нормальной форме [10 4] (см также главу 5)
При работе с обычной переменной-отношением S? между двумя подобными обновлениями нет никакой принципиальной разницы, так как в обоих случаях речь идет о вставке в переменную-отношение единственного кортежа. В противоположность этому при работе с переменной-отношением SPQ выполняемые обновления будут существенно отличаться (не говоря уже о том, что в данной ситуации обе эти операции будут намного сложнее, чем при работе с переменной-отношением SP).
1. INSERT INTO SPQ RELATION
{ TUPLE { St Si ( 'S6' ),
PQ RELATION { TUPLE { Pi ( 'P5' ),
QTY QTY ( 500 ) } } } };
2. UPDATE SPQ WHERE Si = Si ( 'S2' )
INSERT INTO PQ RELATION {TUPLE { Pi ( 'P5' ),
QTY QTY ( 500 ) } };
Переменные-отношения (по крайней мере, базовые переменные-отношения) предпочтительнее создавать без использования подобных атрибутов, принимающих в качестве значений другие отношения, так как в этом случае они обладают более простой логической структурой, что существенно упрощает выполнение с ними различных операций. Однако это замечание следует воспринимать лишь как рекомендацию, но не как обязательное правило. На практике вполне могут существовать такие ситуации, когда имеет смысл использовать атрибут со значениями-отношениями в некоторой переменной-отношении и даже в базовой переменной-отношении. Например, на рис. 11.18 показано (частично) возможное содержимое переменной-отношения каталога RVK, в которой хранятся сведения о переменных-отношениях некоторой базы данных с указанием их потенциальных ключей. Атрибут СК в этой переменной-отношении содержит значения-отношения. Причем он одновременно является компонентом единственного потенциального ключа переменной-отношения RVK! Определение этой переменной-отношения может выглядеть так, как показано ниже.
VAR RVK BASE RELATION
{ RVNAME NAME, СК RELATION { ATTRNAME NAME } } KEY { RVNAME, CK };
Замечание. В ответе к упр. 11.3 показано, как можно исключить атрибуты со значениями-отношениями, если такое исключение является желательным (что обычно имеет место на практике)12. См. также обсуждение оператора UNGR0UP в главе 6 (раздел 6.8).