Слайд 2
Формирование таблиц из
ER-диаграммы
Связь ПИШЕТ между сущностями
АВТОР и КНИГА, рассмотренными на предыдущих лекциях, называется бинарной,
поскольку связывает две сущности. Имеются связи более высокого порядка, существующие между тремя и более сущностями. Но поскольку бинарные связи встречаются наиболее часто, то мы ограничимся рассмотрением только таких связей.
Общий подход к проектированию баз данных с использованием ER-метода состоит прежде всего в построении ER-диаграммы, включающей в себя все важные сущности и связи, той предметной области, для которой проектируется БД.
Предварительные таблицы для бинарных связей степени «один к одному»
Перечень общих правил генерации таблиц из ER-диаграмм можно получить, опираясь на класс принадлежности и степень отношения как на определяющие факторы. С целью упрощения вывода этих правил будем использовать пример
АВТОР ПИШЕТ КНИГУ
Связь 1 к 1, класс принадлежности обязателен для обеих
сущностей, участвующих в связи.
Это гарантирует однократное появление каждого на и каждого нк в любом экземпляре отношения. Это значит, что таблица никогда не будет содержать ни пустой информации, ни повторяющихся групп избыточных данных. В данном случае в качестве первичного ключа таблицы был выбран ключ сущности АВТОР, но совершенно очевидно, что в этом качестве также может быть использован ключ сущности КНИГА.
Таблица АВТОР
Слайд 4
Таким образом, можно сформулировать следующее правило
генерации таблиц с учетом существующих связей
Правило 1
Если степень бинарной связи равна 1:1, и класс принадлежности обеих сущностей является обязательным, то требуется только одна таблица. Первичным ключом этой таблицы может быть ключ любой из двух сущностей.
Случай 2.
Теперь рассмотрим такой случай, когда степень связи 1:1 и класс принадлежности одной сущности является обязательным, а другой – необязательным.
Этим условиям удовлетворяют ER-диаграммы
а)
Слайд 5
б)
Приведем пример таблицы
АВТОР для случая а)
Таблица АВТОР
Пробелы появляются в тех строках, содержащих информацию о книгах, которые не пишет ни один из авторов.
Чтобы исключить пробелы (пустые ячейки) требуется две таблицы вместо одной. Кроме того, чтобы не потерять информацию о том, какой автор написал какую книгу, то таблицу АВТОР необходимо дополнить атрибутом, являющимся ключом сущности, класс принадлежности которой является не обязательным.
Слайд 6
Таким образом получаем две таблицы АВТОР
и КНИ ГА
Таблица
АВТОР
Таблица КНИГА
Итак, теперь можем сформулировать следующее правило для данного случая.
Слайд 7
Правило 2
Если степень бинарной
связи равна 1:1, и класс принадлежности одной сущности является
обязательным, а другой – необязательным, то необходимо построение двух таблиц. Под каждую сущность необходимо выделить одну таблицу. При этом первичный ключ сущности должен служить первичным ключом для соответствующей таблицы. Кроме того, ключ сущности, для которой класс принадлежности является необязательным, добавляется в качестве атрибута в таблицу, выделенную для сущности с обязательным коассом принадлежности.
Случай 3.
Далее рассмотрим последний случай, соответствующий степени связи 1:1 и класс принадлежности ни одной из сущностей не является обязательным. Данный случай описывается ER-диаграммой
Слайд 8
а) использование одной таблицы
Таблица АВТОР
а) использование двух
таблиц
Таблица АВТОР
Таблица КНИГА
Опять имеются пустые ячейки. Чтобы избавится от пустых
ячеек, нужно две таблицы для каждой сущности и одну таблицу для связи.
Таблица АВТОР Таблица КНИГА
Таблица ПИШЕТ
Отсюда вытекает следующее правило формирования таблиц.
Правило 3
Если степень бинарной связи равна 1:1, и класс принадлежности ни одной из сущностей не является обязательным, то необходимо использовать три таблицы: по одной для каждой сущности, ключи которых служат в качестве первичных ключей в соответствующих таблицах, и одной для связи. Среди своих атрибутов таблица, выделяемая для связи, будет иметь по одному ключу сущности от каждой сущности.
Слайд 11
Так же как и для связи
степени 1:1 фактором влияющим на выбор правила преобразования исходной
таблицы является класс принадлежности n-связной сущности, а класс принадлежности 1-связной сущности в обоих случаях не влияет на конечный результат.
Рассмотрим для примера такую таблицу КНИГА
Таблица КНИГА
Предварительные таблицы для бинарных связей степени «один ко многим»
Слайд 12
Случай 4.
Этот случай характерен
тем, что степень связи 1:n, и класс принадлежности сущности
КНИГА является обязательным. Пробел в таблице соответствует тому, что один из авторов не пишет книгу, и появляется дублирование данных, если автор пишет более одной книги.
Данная таблица соответствует следующей диаграмме ER-типа
Решить проблему пустых ячеек и дублирования данных можно, разбив таблицу на две по такому правилу:
Правило 4
Если степень бинарной связи 1:n, и класс принадлежности n-связной сущности является обязательным, то достаточным является использование двух таблиц (по одной для каждой сущности), при условии, что ключ каждой сущности служит в качестве первичного ключа для соответствующей таблицы. Помимо этого, ключ 1-связной сущности должен быть добавлен как атрибут в таблицу, отводимую n-связной сущности.
Слайд 13
Результатом применения этого правила будут две
таблицы.
Таблица КНИГА
Таблица АВТОР
Слайд 14
Случай 5.
Теперь рассмотрим вариант
связи степени 1:n с необязательным классом принадлежности обеих сущностей.
Тут просматривается три проблемы: 1) пробелы возникают в полях обеих сущностей; 2) кроме того, когда автор пишет более одной книги, повторяются данные об авторе.
Таблица соответствующая данному случаю может иметь вид
Таблица КНИГА
Слайд 15
Приведенная таблица КНИГА соответствует диаграмме ER-типа
Если ее разбить на две таблицы по правилу
4 исчезают проблемы кроме пробелов
Таблица КНИГА
Таблица АВТОР
Все проблемы удается решить, используя при таблицы:
Таблица КНИГА
АВТОР
Таблица ПИШЕТ
Набор этих таблиц получается в результате применения следующего правила.
Правило 5.
Если степень бинарной связи равна 1:n и класс принадлежности n-связной сущности является необязательным, то необходимо формирование трех таблиц- по одной для каждой сущности, причем ключ каждой сущности служит первичным ключом соответствующей таблицы, и одной таблицы для связи. Связь должна иметь среди своих атрибутов ключ сущности для каждой сущности.
В варианте, который описывается диаграммой ER-типа
Слайд 18
В варианте, который описывается диаграммой ER-типа
проблем
с избыточным дублированием не возникает.
Слайд 19
Для степени связи m:n потребуется для
хранения данных три таблицы вне зависимости от класса принадлежности
обеих сущностей. При использовании одной или двух таблиц неизбежно возникновение пробелов и/или повторяющихся данных. Поэтому для всех вариантов связи степени m:n для сведения к трем таблицам предлагается правило.
Правило 6
Если степень бинарной связи m:n, то для хранения данных необходимы три таблицы: по одной для каждой сущности, причем ключ каждой сущности используется в качестве первичного ключа соответствующей таблицы, и одной таблицы для связи. Последняя таблица должна иметь в числе своих атрибутов ключ сущности для каждой сущности.
Предварительные таблицы для бинарных связей степени «многие ко многим»
Слайд 20
Таблица КНИГА
Применяя
правило 6 приходим к набору таблиц
Таблица АВТОР
Таблица ПИШЕТ
Что такое хорошая структура БД?
Максимально упрощает Ваше взаимодействие с БД.
Гарантирует непротиворечивость данных.
«Выжимает» максимальную производительность из Вашей системы.
Плохая структура БД:
приводит к непониманию результатов выполняемых
запросов;
повышает риск введения в БД противоречивой информации;
порождает избыточность данных;
усложняет выполнение изменений структуры созданных ранее и уже заполненных данными таблиц.