Проблемы, возникающие при использовании универсального отношения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Проблемы, возникающие при использовании универсального отношения



1. Избыточность. Данные практически всех столбцов многократно повторяются. Повторяются и некоторые наборы данных (Блюдо-Вид-Рецепт, Продукт-Калорийность, Поставщик-Город-Страна). Нежелательно повторение рецептов, некоторые из которых намного больше рецепта "Лобио". И уж совсем плохо, что все данные о блюде (включая рецепт) повторяются каждый раз, когда это блюдо включается в меню.

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

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

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

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

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

Блюда                               Продукты

Код блюда Блюдо Вид
1 Лобио Закуска
2 Харчо Суп
3 Шашлык Горячее

 

Код продукта Продукт Калорийность
1 Фасоль 3070
2 Лук 450
3 Масло 7420

 

Состав                    Расход

Код блюда Код продукта Веc (г)
1 1 200
1 2 40
1 3 30
2 5 80

 

Код блюда Порций Дата_Р
1 158 1/9/94
2 144 1/9/94
3 207 1/9/94
4 235 1/9/94
... ... ...

 

Рецепты                        Поставщики

Код блюда Рецепт
1 Ломаную очищ…
2
3
... ...

 

Код поставщика Поставщик Код города
1 "Полесье" 1
2 "Наталка" 1
3 "Хуанхэ" 2
4 "Лайма" 3

 

Поставки                                                 Города

Код поставщика Код продукта Вес (кг) Цена Дата_П
1 6 120 0.45 27/8/94
1 3 50 1.82 27/8/94
1 2 50 0.61 27/8/94
2 2 100 0.52 27/8/94
2 5 100 2.18 27/8/94

 

Код города Город Страна
1 Киев Украина
2 Пекин Китай
4 Москва Россия
5 Сочи Россия
3 Рига Латвия

 

Рис. 3.2.2.1. Преобразование универсального отношения "Питание"

 

1. Каждая таблица состоит из однотипных строк и имеет уникальное имя.

2. Строки имеют фиксированное число полей (столбцов) и значений (множественные поля и повторяющиеся группы недопустимы). Иначе говоря, в каждой позиции таблицы на пересечении строки и столбца всегда имеется в точности одно значение или ничего.

3. Строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.

4. Столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы).

5. Полное информационное содержание базы данных представляется в виде явных значений данных и такой метод представления является единственным.

6.     При выполнении операций с таблицей ее строки и столбцы можно обрабатывать в любом порядке.

7.     Удаление сведений о некоторых поставках или блюдах не приводит к потере сведений о поставщиках.

8.     Включение осуществляется простым добавлением строк в соответствующую таблицу.

Для исключения ссылок на длинные текстовые значения последние обычно нумеруют: нумеруют блюда в больших кулинарных книгах, товары (продукты) в каталогах и т.д. Воспользуемся этим приемом для исключения избыточного дублирования данных и появления ошибок при копировании длинных текстовых значений (рис. 3.2.2.1). Теперь при изменении названия поставщика "Полесье" на "Днепро" исправляется единственное значение в таблице Поставщики. И даже если оно вводится с ошибкой ("Днипро"), то это не может повлиять на связь между поставщиками и продуктами (в связующей таблице Поставки используются номера поставщиков и продуктов, а не их названия).



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 67; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.166.98 (0.009 с.)