Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных Шехтман.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

4. Нормализация данных

Прикладные и предметные базы данных.

Сбор требований о данных, которые следует хранить.

Цель проектирования оптимальной структуры БД:

  1. устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте

  2. уменьшение затрат на операции обновления избыточных копий

  3. устранение избыточности (экономия памяти).

4.1. Полная декомпозиция.

Пусть S = (МАГАЗИН, ТОВАР, НДС):

Магазин товар ндс

ПРИВЕТ БАНАН 20

ПРИВЕТ КАПУСТА 10

РЯБИНКА АРБУЗ 20

РЯБИНКА КАПУСТА 10

S[МАГАЗИН, ТОВАР]:

МАГАЗИН ТОВАР

ПРИВЕТ

БАНАН

ПРИВЕТ

КАПУСТА

РЯБИНКА

АРБУЗ

РЯБИНКА

КАПУСТА

S[ТОВАР, НДС]:

Товар ндс

БАНАН 20

КАПУСТА 10

АРБУЗ 20

Можно убедиться, выполнив соответсвующие вычисления, что

S[МАГАЗИН, ТОВАР] join S[ТОВАР, НДС] = S

Введем определение:

Полная декомпозиция отношения – это совокупность произвольного числа его проекций, соединение которых идентично исходному отношению.

Поэтому совокупность проекций S[МАГАЗИН, ТОВАР] и S[ТОВАР, НДС] можно назвать полной декомпозицией.

Рассмотрим другие проекции того же отношения S:

S[МАГАЗИН, НДС]:

Магазин ндс

ПРИВЕТ 20

ПРИВЕТ 10

РЯБИНКА 20

РЯБИНКА 10

S[ТОВАР, НДС]:

Товар ндс

БАНАН 20

КАПУСТА 10

АРБУЗ 20

Выполнив необходимые вычисления, получим:

S[МАГАЗИН, НДС] join S[ТОВАР, НДС]:

Магазин товар ндс

ПРИВЕТ БАНАН 20

ПРИВЕТ АРБУЗ 20 Лишняя строка

ПРИВЕТ КАПУСТА 10

РЯБИНКА БАНАН 20

РЯБИНКА АРБУЗ 20

РЯБИНКА КАПУСТА 10

Следовательно

S[МАГАЗИН, НДС] join S[ТОВАР, НДС] <> S

т. е. данная совокупность проекций не образует полную декомпозицию!

4.2. Проблема дублирования данных.

Пусть P = (КодТовара, Поставщик, Тел)

При этом рассмотрим ситуацию, когда каждый вид товара поставляется только одной фирмой, все фирмы имеют разные названия:

КодТовара Поставщик Тел

1 Глобус 33-33-33

2 Глобус 33-33-33

3 МИР 99-99-99

4 Океан 77-77-77

5 МИР 99-99-99

В данном отношении поставщики и телефоны многократно дублируются.

Если взять проекцию P[Поставщик, Тел], то можно убедиться что в ней дублей нет:

Поставщик Тел

ГЛОБУС 33-33-33

МИР 99-99-99

ОКЕАН 77-77-77

Рассмотрим и проекцию P[КодТовара, Поставщик]:

КодТовара Поставщик

1 ГЛОБУС

2 ГЛОБУС

3 МИР

4 ОКЕАН

5 МИР

Попробуйте убедиться, что P[КодТовара, Поставщик] join P[Поставщик, Тел] = P – т. е. что эти две проекции образуют полную декомпозицию.

С другой стороны, если использовать проекцию P[КодТовара, Тел], то дублирования избежать не удастся:

КодТовара Тел

1 33-33-33

2 33-33-33

3 99-99-99

4 77-77-77

5 99-99-99

Иногда, заменив отношение его полной декомпозицией, можно избежать дублирования данных. Но в других случаях такая замена не удается. Очевидно, необходим критерий, позволяющий судить о целесообразности полной декомпозиции отношения. Заметим, что проекции P[Поставщик, Тел] и P[КодТовара, Поставщик] (образующие полную декомпозицию) не содержит общего ключа исходного отношения, в то время как проекции P[КодТовара, Тел] и P[КодТовара, Поставщик] (не образующие полную декомпозицию) обе содержат ключ исходного отношения – КодТовара.