- •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.2. Декомпозиция без потерь
и функциональные зависимости
Прежде чем приступить к рассмотрению подробностей процедуры нормализации, следует обсудить один существенный аспект этой процедуры, а именно — концепцию декомпозиции без потерь. Как уже упоминалось, процедура нормализации включает разбиение, или декомпозицию, данной переменной-отношения на другие переменные-отношения, причем декомпозиция должна быть обратимой, т.е. выполняться без потерь информации. Иначе говоря, интерес представляют только те операции, которые выполняются без потерь информации. Вопрос о том, происходит ли утрата информации при декомпозиции, тесно связан с концепцией функциональной зависимости.
a) SST
6)
SST
S |
s# |
STATUS |
CITY |
|
S3 |
30 |
Paris |
|
S5 |
30 |
Athens |
S# |
STATUS |
SC |
s# |
CITY |
S3 |
30 |
|
S3 |
Paris |
S5 |
30 |
|
S5 |
Athens |
s# |
STATUS |
STC |
STATUS |
CITY |
S3 |
30 |
|
30 |
Paris |
S5 |
30 |
|
30 |
Athens |
Рис. 11.3. Переменная-отношение S и два возможных варианта ее декомпозиции
Внимательно ознакомившись с предложенными вариантами декомпозиции, можно заметить две особенности.
В случае а информация не утрачивается, поскольку переменные-отношения SST и SC все еще содержат данные о том, что поставщик с номером 'S3' имеет статус 30 и находится в Париже ('Paris'), а поставщик с номером 'S5' имеет статус 30 и находится в Афинах ('Athens'). Иначе говоря, первая декомпозиция действительно является декомпозицией без потерь.
В случае б, наоборот, некоторая информация утрачивается, поскольку оба поставщика имеют статус 30, но при этом нельзя сказать, какой из них в каком городе находится. Иначе говоря, вторая декомпозиция не является декомпозицией без потерь.
Почему же получилось так, что одна декомпозиция была проведена без потери, а другая — с потерей информации? Прежде всего следует отметить, что процесс, который до сих пор назывался декомпозицией, на самом деле является операцией проекции, т.е. каждая из показанных на рис. 11.3 переменных-отношений — SST, SC и STC — в действительности является проекцией исходной переменной-отношения S. Таким образом, оператор декомпозиции в процедуре нормализации фактически является оператором проекции.
Замечание. Как и в части II этой книги, высказывание вида "SST является проекцией переменной-отношения S" используется вместо более точного высказывания вида "SST является переменной-отношением, значение которой в определенное время является проекцией значения переменной-отношения S, которое она имеет в это же время". Надеемся, что такое сокращение не собьет читателя с толку.
Обратите внимание, что в случае а сохранение информации в полном объеме означает, что при обратном соединении переменных-отношений SST и SC будет получена исходная переменная-отношение S. В случае б ситуация противоположная, поскольку при
обратном соединении переменных-отношений SST и SC исходная переменная-отношение S получена не будет, а это значит, что некоторая информация будет утрачена2. Иначе говоря, "обратимость" означает, что исходная переменная-отношение равна соединению ее проекций. Если оператором декомпозиции в процедуре нормализации является операция проекции, то обратной операцией должна быть операция соединения.
Исходя из сказанного выше, можно задать следующий вопрос. Пусть R1 и R2 являются проекциями некоторой переменной-отношения R, содержащими все атрибуты переменной-отношения R. Какие условия должны быть соблюдены для того, чтобы при обратном соединении проекций Rl и R2 гарантировать получение исходной переменной-отношения R? Именно для получения ответа на этот вопрос необходимо обратиться к функциональным зависимостям. В рассматриваемом примере переменная-отношение S удовлетворяет представленному ниже неприводимому множеству функциональных зависимостей.
St -> STATUS St -> CITY
При условии, что данная переменная-отношение удовлетворяет приведенным функциональным зависимостям, можно предположить, что переменная-отношение S равна соединению ее проекций {St, STATUS} и {St, CITY}. И это действительно так, что подтверждается теоремой Хита (Heath) [11.4].
■ Теорема Хита. Пусть R{A, В, С} является переменной-отношением, где А, В и С — множества атрибутов этой переменной-отношения. Если R удовлетворяет функциональной зависимости А —> В, то R равна соединению ее проекций {А, В} и {А, С}.
Если принять, что А— это атрибут St, В— это атрибут STATUS, а С— это атрибут CITY, то данная теорема подтверждает, как отмечалось выше, что переменная-отношение S может быть разбита с помощью операции декомпозиции на проекции {St, STATUS} и {St, CITY} без потери информации.
Точнее,
в исходной переменной-отношении S
вместе
со всеми кортежами будут содержаться
"ложные" кортежи, поскольку при
обратной операции никогда нельзя
получить переменную-отношение,
которая была бы меньше
исходной
переменной-отношения S
(Упражнение
Попробуйте
доказать это утверждение) Поскольку
не существует общего метода различения
ложных и подлинных кортежей, информация
в этом случае действительно будет
утеряна
3
Дело в том, что она формулируется в
выражениях "если , то ", а не "тогда
и только тогда, когда " Об этом также
идет речь в упр 111 Более строгая
формулировка теоремы Хита будет
представлена в следующей главе (в
разделе 12 2)
Еще о функциональных зависимостях
В завершение перечислим некоторые дополнительные замечания, касающиеся функциональных зависимостей.
1. Неприводимые слева ФЗ. Вспомним из главы 10, что функциональная зависи- мость называется неприводимой слева, если ее левая часть "не очень велика". Рас- смотрим, например, переменную-отношение SCP, приведенную в разделе 11.1, ко- торая удовлетворяет следующей функциональной зависимости.
{ Si, PI } -> CITY
Однако атрибут Р| в левой части этой функциональной зависимости является избыточным и она может быть переписана в следующем виде.
Si -> CITY
(Иначе говоря, атрибут CITY функционально зависит от Si.) Эта последняя функциональная зависимость является неприводимой слева, а предыдущая— нет. Таким образом, можно сказать, что атрибут CITY неприводимо зависим от атрибута Si, но не неприводимо зависим от множества атрибутов {Si, Pi}4.
Неприводимые слева ФЗ и неприводимые зависимости играют важную роль при определении второй и третьей нормальной форм (подробности приводятся в разделе 11.3).
2. Диаграммы ФЗ. Пусть дана переменная-отношение R и пусть к ней применимо не- которое неприводимое множество функциональных зависимостей I (более подроб- ные сведения о неприводимых множествах ФЗ приводятся в главе 10). Удобнее всего представить это множество ФД в виде диаграммы функциональных зависимостей (диаграммы ФЗ). Например, на рис. 11.4 показаны вполне очевидные по смыслу диа- граммы функциональных зависимостей для переменных-отношений S, SP и Р соот- ветственно. Такие диаграммы будут часто использоваться далее в этой главе.
PNAME
SNAME
S#
COLOR
S#
STATUS
QTY
p#H
WEIGHT
CITY
CITY
Рис. 11.4. Диаграмма функциональных зависимостей для переменных-отношений S, SP и Р
4
Здесь термины "неприводимая слева
ФЗ" и "неприводимо зависим"
используются вместо терминов "полная
ФЗ" и "полностью зависим",
которые часто можно встретить в
литературе и прежних изданиях этой
книги. Хотя последние термины отличаются
краткостью, они менее информативны и
потому не очень удобны.
го ключа3, поскольку одному значению такого ключа всегда соответствует еще по крайней мере одно какое-либо значение. Некоторые из существующих стрелок в определенных случаях необходимо будет исюючить ввиду того, что они вызывают определенные затруднения, однако стрелки, начинающиеся с потенциальных ключей, никогда не могут быть исключены. Таким образом, процедуру нормализации можно неформально охарактеризовать как процедуру исключения стрелок, которые не начинаются с потенциальных ключей. 3. ФЗ как семантическое понятие. Конечно, функциональные зависимости— это особый вид ограничений целостности, а потому они, несомненно, являются понятием семантическим. Распознавание функциональных зависимостей представляет собой часть процесса выяснения смысла тех или иных данных. Тот факт, что переменная-отношение S удовлетворяет зависимости Si —> CITY, по сути, означает, что каждый поставщик находится точно в одном городе. Иначе эту ситуацию можно охарактеризовать следующим образом.
В реальном мире существует некоторое ограничение, представленное в этой базе данных, а именно: каждый поставщик находится точно в одном городе.
Поскольку это ограничение является частью семантического описания предметной области, оно должно быть каким-то образом представлено в базе данных.
Для этого ограничение необходимо описать в определении базы данных таким образом, чтобы оно могло быть приведено в действие средствами СУБД.
Способ описания ограничения в определении базы данных состоит в объявлении соответствующей функциональной зависимости.
Как будет показано ниже, концепции нормализации позволяют использовать весьма простые способы объявления ФЗ.