Определение 10. Пусть даны отношения и , имеющие одинаковые атрибуты (т.е. атрибуты с одинаковыми именами и определенные на одинаковых доменах).
Тогда естественным соединением отношений и называется отношение с заголовком и телом, содержащим множество кортежей , таких, что и .
Естественное соединение настолько важно, что для него используют специальный синтаксис:
Замечание. В синтаксисе естественного соединения не указываются, по каким атрибутам производится соединение. Естественное соединение производится по всем одинаковым атрибутам.
Замечание. Естественное соединение эквивалентно следующей последовательности реляционных операций:
- Переименовать одинаковые атрибуты в отношениях
- Выполнить декартово произведение отношений
- Выполнить выборку по совпадающим значениям атрибутов, имевших одинаковые имена
- Выполнить проекцию, удалив повторяющиеся атрибуты
- Переименовать атрибуты, вернув им первоначальные имена.
68. Цели проектирования БД и универсальное отношение. Нормализация, функциональные и многозначные зависимости.
|
|
Все БД подразделяют на 2 вида:
1) прикладные – объединяют все данные, необходимые для решения одной или нескольких задач;
2) предметные – объединяют все данные, относящиеся к одной предметной области.
Основная цель проектирования БД – сокращение избыточности хранимых данных. Отсюда следует экономия объема используемой памяти, уменьшение затрат на многократные операции, обновления избыточности копий, устранение возможностей возникновение противоречий из-за хранений в разных местах сведений об одном и том же объекте, исключение потенциальных ошибок ввода одной и той же информации в разных полях.
Чистый проект БД (каждый факт в одном месте) можно создать, используя нормализацию отношений.
Блюдо | Вид | Порций | Дата Р | Продукт | Калорийность | Вес (г) | Поставщик | Город | Вес (кг) | Цена ($) | Дата П |
Лобио | Закуска | 1/9/94 | Фасоль | "Хуанхэ" | Пекин | 0.37 | 24/8/94 | ||||
Лобио | Закуска | 1/9/94 | Лук | "Наталка" | Киев | 0.52 | 27/8/94 | ||||
Лобио | Закуска | 1/9/94 | Масло | "Лайма" | Рига | 1.55 | 30/8/94 | ||||
Лобио | Закуска | 1/9/94 | Зелень | "Даугава" | Рига | 0.99 | 30/8/94 | ||||
Харчо | Суп | 1/9/94 | Мясо | "Наталка" | Киев | 2.18 | 27/8/94 | ||||
Харчо | Суп | 1/9/94 | Лук | "Наталка" | Киев | 0.52 | 27/8/94 | ||||
Харчо | Суп | 1/9/94 | Томаты | "Полесье" | Киев | 0.45 | 27/8/94 | ||||
Харчо | Суп | 1/9/94 | Рис | "Хуанхэ" | Пекин | 0.44 | 24/8/94 | ||||
Харчо | Суп | 1/9/94 | Масло | "Полесье" | Киев | 1.62 | 27/8/94 | ||||
Харчо | Суп | 1/9/94 | Зелень | "Наталка" | Киев | 0.88 | 27/8/94 | ||||
Шашлык | Горячее | 1/9/94 | Мясо | "Юрмала" | Рига | 2.05 | 30/8/94 | ||||
Шашлык | Горячее | 1/9/94 | Лук | "Полесье" | Киев | 0.61 | 27/8/94 | ||||
Шашлык | Горячее | 1/9/94 | Томаты | "Полесье" | Киев | 0.45 | 27/8/94 | ||||
Шашлык | Горячее | 1/9/94 | Зелень | "Даугава" | Рига | 0.99 | 30/8/94 | ||||
Кофе | Десерт | 1/9/94 | Кофе | "Хуанхэ" | Пекин | 2.87 | 24/8/94 |
Рис. 22. Универсальное отношение "Питание"
|
|
Таблица на Рис. 22 представляет собой экземпляр корректного универсального отношения. В одно универсальное отношение включаются все представляющие интерес атрибуты, и оно может содержать все данные, которые предполагается размещать в БД в будущем. Для малых БД (включающих не более 15 атрибутов) универсальное отношение может использоваться в качестве отправной точки при проектировании БД.
При использовании универсального отношения возникает несколько проблем:
1. Избыточность. Данные практически всех столбцов многократно повторяются.
2. Потенциальная противоречивость (аномалии обновления). Вследствие избыточности можно обновить адрес поставщика в одной строке, оставляя его неизменным в других.
3. Аномалии включения. В БД не может быть записан новый поставщик, если поставляемый им продукт не используется ни в одном блюде.
4. Аномалии удаления. Обратная проблема возникает при необходимости удаления всех продуктов, поставляемых данным поставщиком или всех блюд, использующих эти продукты. При таких удалениях будут утрачены сведения о таком поставщике.