Введение в проектирование реляционных баз данных

у поставщика "Хуанхэ" появляется два адреса, один из которых не актуален. Следовательно, при обновлениях необходимо просматривать всю таблицу для нахождения и изменения всех подходящих строк.

3. Аномалии включения. В БД не может быть записан новый поставщик ("Няринга", Вильнюс, Литва), если поставляемый им продукт (Огурцы) не используется ни в одном блюде. Можно, конечно, поместить неопределенные значения в столбцы Блюдо, Вид, Порций и Вес (г) для этого поставщика. Но если появится блюдо, в котором используется этот продукт, не забудем ли мы удалить строку с неопределенными значениями?

По аналогичным причинам нельзя ввести и новый продукт (например, Баклажаны), который предлагает существующий поставщик (например, "Полесье"). А как ввести новое блюдо, если в нем используется новый продукт (Крабы)?

4. Аномалии удаления. Обратная проблема возникает при необходимости удаления всех продуктов, поставляемых данным поставщиком или всех блюд, использующих эти продукты. При таких удалениях будут утрачены сведения о таком поставщике.

Многие проблемы этого примера исчезнут, если выделить в отдельные таблицы сведения о блюдах, рецептах, расходе блюд, продуктах и их поставщиках, а также создать связующие таблицы "Состав" и "Поставки" (рис. 4.3).

Блюда
Блюдо Вид
Лобио Закуска
Харчо Суп
Шашлык Горячее
Кофе Десерт
... ...
Рецепты
Блюдо Рецепт
Лобио Ломаную очищ
... ...
Расход
Блюдо Порций Дата_Р
Лобио 158 1/9/94
Харчо 144 1/9/94
Шашлык 207 1/9/94
Кофе 235 1/9/94
... ... ...
Продукты
Продукт Калор.
Фасоль 3070
Лук 450
Масло 7420
Зелень 180
Мясо 1660
... ...
Состав
Блюдо Продукт Вес (г)
Лобио Фасоль 200
Лобио Лук 40
Лобио Масло 30
Лобио Зелень 10
Харчо Мясо 80
... ... ...
Поставщики
Поставщик Город Страна
"Полесье" Киев Украина
"Наталка" Киев Украина
"Хуанхэ" Пекин Китай
"Лайма" Рига Латвия
"Юрмала" Рига Латвия
... ... ...
Поставки
Поставщик Город Продукт Вес (кг) Цена ($) Дата_П
"Полесье" Киев Томаты 120 0.45 27/8/94
"Полесье" Киев Масло 50 1.62 27/8/94
"Полесье" Киев Лук