Читайте также:
|
|
Прежде чем приступить к рассмотрению подробностей процедуры нормализации, следует обсудить один существенный аспект этой процедуры, а именно концепцию декомпозиции без потерь. Как уже упоминалось, процедура нормализации включает разбиение, или декомпозицию данного отношения на другие отношения, причем декомпозиция должна быть обратимой, т.е. выполняться без потерь информации. Иначе говоря, интерес представляют только те операции, которые выполняются без потерь информации. Вопрос о том, происходит ли утрата информации при декомпозиции, тесно связан с концепцией функциональной зависимости.
В качестве примера рассмотрим отношение поставщиков деталей S с атрибутами {S#, STATUS, CITY}, где. S# - номер поставщика, STATUS – статус поставщика, CITY – город.
На рис. 18.1 показан пример записей этого отношения с указанием двух его возможных декомпозиций: (а) и (б).
Внимательно ознакомившись с этими декомпозициями, можно заметить две особенности.
1. В случае (а) информация не утрачивается, поскольку отношения SST и SC все еще содержат данные о том, что поставщик S3 имеет статус 30 и находится в Париже (Paris), а поставщик S5 имеет статус 30 и находится в Афинах (Athens). Иначе говоря, первая декомпозиция действительно является декомпозицией без потерь.
2. В случае (б), наоборот, некоторая информация утрачивается, поскольку оба поставщика имеют статус 30, но при этом нельзя сказать, какой из них в каком городе находится. Иначе говоря, вторая декомпозиция не является декомпозицией без потерь.
Рис. 18.1. Отношение S и две его возможные декомпозиции
Почему получилось так, что одна декомпозиция происходит без потерь, а другая — с потерей информации? Прежде всего, следует отметить, что процесс, который до сих пор назывался "декомпозицией", на самом деле является проектированием, т.е. каждое из показанных на рис. 18.1 отношений — SST, SC и STC — в действительности является проекцией исходного отношения S. Таким образом, оператор декомпозиции в процедуре нормализации фактически является оператором проектирования.
Обратите внимание, что в случае (а) сохранение информации в полном объеме означает, что при обратном(естественном) соединении отношении SST и SC будет получено исходное отношение S. В случае (б), наоборот, при обратном естественном соединении отношений SST и SC не будет получено исходное отношение S, а это значит, что некоторая информация будет утрачена. (Точнее, в исходном отношении S вместе со всеми кортежами будут содержаться "ложные" кортежи. Поскольку не существует общего метода для различения ложных и подлинных кортежей, информация в этом случае будет утеряна.) Результат естественного соединения отношений SST и STC (случай б) будет выглядеть так (обратите внимание на ложные строки, которых нет в отношении S)
S# | STATUS | CITY | ||
S3 | Paris | |||
S3 |
| |||
S5 | Paris | |||
S5 | Athens |
Иначе говоря, "обратимость" означает, что исходное отношение равно естественному соединению его проекций. Если оператором декомпозиции в процедуре нормализации является операция проектирования, то обратной операцией должна быть операция соединения (конечно, в смысле естественного соединения по атрибутам с общими именами).
Дата добавления: 2015-07-08; просмотров: 211 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ПРОЦЕСС НОРМАЛИЗАЦИИ | | | Первая нормальная форма (1 НФ) (из Коннолли) |