Преобразование универсального...
Рис. 4.3. Преобразование универсального отношения "Питание" (первый вариант)
Включение. Простым добавлением строк (Поставщики; "Няринга", Вильнюс, Литва) и (Поставки; "Няринга", Вильнюс, Огурцы, 40) можно ввести информацию о новом поставщике. Аналогично можно ввести данные о новом продукте (Продукты; Баклажаны, 240) и (Поставки; "Полесье", Киев, Баклажаны, 50).
Удаление. Удаление сведений о некоторых поставках или блюдах не приводит к потере сведений о поставщиках.
Обновление. В таблицах рис. 4.3 все еще много повторяющихся данных, находящихся в связующих таблицах (Состав и Поставки). Следовательно, в данном варианте БД сохранилась потенциальная противоречивость: для изменения названия поставщика с "Полесье" на "Днепро" придется изменять не только строку таблицы Поставщики, но и множество строк таблицы Поставки. При этом не исключено, что в БД будут одновременно храниться: "Полесье", "Палесье", "Днепро", "Днипро" и другие варианты названий.
Кроме того, повторяющиеся текстовые данные (такие как название блюда "Рулет из телячей грудинки с сосисками и гарниром из разноцветного пюре" или продукта "Колбаса московская сырокопченая") существенно увеличивают объем хранимых данных.
Для исключения ссылок на длинные текстовые значения последние обычно нумеруют: нумеруют блюда в больших кулинарных книгах, товары (продукты) в каталогах и т.д. Воспользуемся этим приемом для исключения избыточного дублирования данных и появления ошибок при копировании длинных текстовых значений (рис. 4.4). Теперь при изменении названия поставщика "Полесье" на "Днепро" исправляется единственное значение в таблице Поставщики. И даже если оно вводится с ошибкой ("Днипро"), то это не может повлиять на связь между поставщиками и продуктами (в связующей таблице Поставки используются номера поставщиков и продуктов, а не их названия).
Блюда
БЛ
Блюдо
Вид
1 |
Лобио |
Закуска |
2 |
Харчо |
Суп |
3 |
Шашлык |
Горячее |
4 |
Кофе |
Десерт |
... |
... |
... |
|
Рецепты
Блюдо
Рецепт
Лобио |
Ломаную очищ |
... |
... |
|
Расход
Блюдо
Порций
Дата_Р
Лобио |
158 |
1/9/94 |
Харчо |
144 |
1/9/94 |
Шашлык |
207 |
1/9/94 |
Кофе |
235 |
1/9/94 |
... |
... |
... |
|
Продукты
ПР
Продукт
Калор.
1 |
Фасоль |
3070 |
2 |
Лук |
450 |
3 |
Масло |
7420 |
4 |
Зелень |
180 |
5 |
Мясо |
1660 |
... |
... |
... |
|
Состав
БЛ
ПР
Вес (г)
1 |
1 |
200 |
1 |
2 |
40 |
1 |
3 |
30 |
1 |
4 |
10 |
2 |
5 |
80 |
... |
... |
... |
|
Поставщики
ПОС
Поставщик
Город
Страна
1 |
"Полесье" |
Киев |
Украина |
2 |
"Наталка" |
Киев |
Украина |
3 |
"Хуанхэ" |
Пекин |
Китай |
4 |
"Лайма" |
Рига |
Латвия |
5 |
"Юрмала" |
Рига |
Латвия |
... |
... |
... |
... |
|
Поставки
ПОС
ПР
Вес (кг)
Цена ($)
Дата_П
1 |
6 |
120 |
0.45 |
27/8/94 |
1 |
3 |
50 |
1.62 |
27/8/94 |
1 |
2 |
50 |
0.61 |
27/8/94 |
2 |
2 |
100 |
0.52 |
27/8/94 |
... |
... |
... |
... |
... |
|
Содержание раздела