Теория и практика построения баз данных (1088289), страница 47
Текст из файла (страница 47)
Приучитесь относиться с подозрением к подобным обязательным связям 1:1. Рис. 6.7. Подозрительная связь вида 1(1 Тем не менее, разделение сущности на два отношения в некоторых случаях может быть оправдано. Одно пз возможных оснований — это производительность. Допустим, например, что данные о разряде тарифной сетки имеют значительную длину ц используются гораздо менее часто, чеи прочие данные о сотрудниках.
В этих условиях может быть оправдано вынесение этих данных в отдельную таблицу РАЗРЯД, чтобы более часто встречающиеся запросы, которые касаются другой информации о сотрудниках, могли обрабатываться быстрее. Другое основание для разделения одной логической сущности на две — это более высокий уровень безопасности. Если СУБД не поддерживает безопасность на уровнеэлементов данных, может возникнуть потребность отделить данные о тарифных разрядах от прочей информации, чтобы предотвратить несанкционированный доступ к этим данным. Создание отдельной таблицы РАЗРЯД может быть желательно также в том случае, если предполагается записывать .>ту таблицу на дисковые носители, доступные для определенной категории > юльзователей.
Не стоит делать из этой дискуссии вывод, что все связи 1:1 можно ставить под сомнение: подозрительными являются только те из них, которые описывают различные аспекты одной и той же сущности. Например, обязательная связь 1:1 между сущностями СОТРУДНИК и АВТОМОБИЛЬ вполне допустима, поскольку участвующие в ней отношения описывают логически совершенно разные вещи. 214 Глава 6. Проектирование баз данных в рамках модели «сущность — связь» Преобразование моделей «сущность — связь» 21 5 Представление связей «один ко многим> Второй тип бинарных связей — это связь «один ко многим» (1:Х), при которой сущность одного типа может быть связана с несколькими сущностями другого типа. На рис.
6.8 изображена диаграмма связи «один ко многим» между преподавателями и студентами. В этой связи один преподаватель связан со многими студентами, у которых оп является руковолнтелем. Как указывалось в главе 3, овал означает, что связь между сущностями ПРЕПОДАВАТЕЛЬ и СТУДЕНТ имеет необязательный характер; другими словамп, ПРЕПОДАВАТЕЛЬ может и не руководить ни одним студентом. Перпендикулярная черта на другом конце линии связи означает, что каждой строке в отношении СТУДЕНТ должна соответствовать с~рока в отношении ПРЕПОДАВАТЕЛЬ.
К отношениям, между которыми имеется связь 1:Х, иногда применяются термины родитель (рагепг) и потомок (сй!д). Родитель — это отношение на унарной стороне связи (с кардинальным числом 1), а потомок — это отношение на множественной стороне связи (с кардинальным числом Х). На рис. 6.8, а сущность ПРЕПОДАВАТЕЛЬ является родителем, а сущность СТУДЕНТ вЂ” потомком.
На рис. 6.8 показаны еще две связи «один ко многимм На рис. 6.8, б сущности ОБЩЕЖИТИЕ соответствует много сущностей СТУДЕНТ, но любой сущности СТУДЕНТ соответствует только одна сущность ОБЩЕЖИТИЕ. Далее, в общежитии может не числиться ни одного студента, а от студента не требуется жить в общежитии. На рис. 6.8, в сущность КЛИЕНТ связана со многими сущностями ВСТРЕЧА, но каждой сущности ВСТРЕЧА соответствует только одна суп>ность КЛИЕНТ. Более того, с клиентом может не быть назначено ни одной встречи, но каждая встреча должна быть назначена с каким-либо клиентом.
Связи 1:Х представляются простым и прямолинейным образом. Сначала каждая сущность представляется в виде отношения. затем ключ отношения, представляющего родительскую сущность, по»геп!ается в отношение, представляющее дочерню>о сущность. Так, чтобы представить связь РУКОВОДСТВО, изображенную на рис. 6.8, а, мы помещаем ключ отношения ПРЕПОДАВАТЕЛЬ вЂ” ИмнПреподавателя — в отношение СТУДЕНТ, как показано на рис. 6.9. КЛИЕНТ в Рис. 6.8.
Пример связей «один ко многимм в — связь «необязательно — обязательно»; б — связь «необязательно — необязательном е — связь Пм со слабой сущностью Рисунок 6.9 являет собой пример того, что иногда называется диаграммой тпг>уктурь> данных (дага зггпсгше д(айга>п). В такой диаграмме отношения показываются в зиле прямоугольников, между которыми прочерчены линии связи; ключевые атрибуты в них выделены подчеркиванием. Вилка, расположенная на линии связи, указывает на множественность связи. ПРЕПОДАВАТЕЛЬ Ограничение ссылочной целостности: Значение атрибута ИмяПреподееателя е отношении СТУДЕНТ должно существовать среди значений атрибута ИмяПреподаеателя е отношении ПРЕПОДАВАТЕЛЬ Рис.
6.9. Реляционное представление сущностей пРОФессОР н студент из рис. б.з, а Вилка на том конце линии связи на рис. 6.9, где располагается отношение СТУДЕНТ, означает, что каждой строке в отношенив ПРЕПОДАВАТЕЛЬ может соответ> глпвать много строк в отношении СТУДЕНТ. Отсутствие вилки на противоположном конце говорит о том, что каждым студентом может руководить максимум один преподаватель.
Как и в Ей-диаграммах, для обозначения обязательных связей используется перпендикулярная черта, а необязательные связи обозначаются овалами. Обратите внимание: благодаря тому, что ИмяПреподавателя хранится в качест>н внешнего ключа в отношении СТУДЕНТ, мы можем обрабатывать связь между ними в обоих направлениях. Имея НомерСтудента, мы можем найти соответствующую строку в отношении ПУДЕНТ и извлечь из нее имя руководителя данного г гулента.
Чтобы получить остальные ланные о профессоре, мы используем имя преподавателя, полученное нами из отношения СТУДЕНТ, для нахождения соответ> твующей строки в таблице ПРЕПОДАВАТЕЛЬ. Чтобы определить имена всех студен> оп, которыми руководит данный преподаватель, мы найдем в отноп>енин СТУДЕНТ щю строки, в которых в столбце ИмяПреподавателя значится имя данного преподавателя. Из этих строк мы извлечем информацию о студентах. Сравните эту ситуацию с ситуацией, когда необходимо было представлять гпнзи 1:1. В обоих случаях мы помещаем ключ одного отношения в качестве нпешнего ключа в другое отношение.
Однако в связи 1:1 не имеет значения, нл>оч какого из двух отношений выбирается в качестве внешнего ключа. В случае со связью 1:Х это не так. Ключ родительского отношв>шя должен помещаться н дочернее отношение. Чтобы лучше уяснить этот момент, посмотрим, что произойдет, если мы помес> нм ключ потомка в родительское отношение — то есть поместим НоиерСтудента и отношение ПРЕПОДАВАТЕЛЬ. Поскольку атрибуты в о~ношении могут иметь только одно значение, каждая запись в таблице ПРЕПОДАВАТЕЛЬ может вместить инфор»ппг>по только об одном студенте. Следователыю, с помощью такой структуры >и льзя представить множественную сторону связи 1:Х.
Поэтому, чтобы предстанпть связь 1:Х, мы должны поместить ключ родительского отношения в дочернее. КЛИЕНТ НомерСтудента Прочие данные студента СТУДЕНТ 216 Глава 6. Проектирование баз данных в рамках модели «сущность — связь» На рис. 6.10 представлены сущности КЛИЕНТ и ВСТРЕЧА Каждую из этих сущностей мы представили в виде одного отношения. ВСТРЕЧА — это идентификационнозависимая слабая сущность, поэтому она имеет композитный ключ, состоящий из ключа сугцности, от которой она зависит, и как минимум одного собственного атрибута. Здесь ключом является сочетание (НомерКлиента, Дата, Время).
Чтобы представить связь 1:Х, в обычном случае мы бы добавили ключ родителя в дочернее отношение. В данной ситуации, однако, ключ родителя (НомерКлиента) уже является частью дочернего отношения, поэтому добавлять его не требуется. Ограничение ссыпочной целостности: Значение атрибута Номерхпнента в отношении ВСТРЕЧА должно существовать среди значений атрибута Номерхпнента в отношении КЛИЕНТ Рис.
6.10. Реляционное представление слабой сущности нз рнс. 6.8, е Представление связей «многие ко многим» Третий и последний тип бинарных связей — это связи «многие ко многим» (М:Х), в которых сущности одного типа соответствует много сущностей второго типа, и сущности второго типа соответствует много сущностей первого типа. На рис.
6.11 изображена ЕК-диаграмма связи вида «многие ко многим» между студентами и предметами. Сущности СТУДЕНТ может соответствовать много сущностей ПРЕДМЕТ, и сущности ПРЕДМЕТ может соо~ветс~вовать много сущностей СТУДЕНТ. Обратите внимание, что обе сущности, участвующие в связи, являются необязательными: студент не обязан записываться на какой-либо предмет, а предмет может не преподаваться ни одному студенту. На рис.
6.11, б приведены данные для этого примера. Связи «многие ко многим» не могут быть напрямую представлены с помощью отношений, как это было со связями вида «один к одному» и «один ко многим». Чтобы понять, почему это так, попытайтесь использовать ту стратегию, что мы применяли для связей 1:1 и 1:Х вЂ” поместить ключ одного отношения в другое отношение в качестве внешнего ключа. Сначала введите для каждой сущности свое отношение; назовите эти отношения СТУДЕНТ и ПРЕДМЕТ. Теперь попробуйте поместить ключ отношения СТУДЕНТ (скажем, НомерСтудента) в отношение ПРЕДМЕТ. Поскольку в ячейках отношения недопустимы множественные значения, в каждой строке есть место только для одного значения атрибута НомерСтудента, поэтому мы не можем связать более одного студента с каждым предметом. Та же самая проблема возникнет, если мы попытаемся поместить ключ отношения ПРЕДМЕТ (скажем, НомерПредмета) в отношение СТУДЕНТ.
Мы сможем указать идентификатор первого предмета, на который записан данный студент, но для остальных предметов места уже не останется. Преобразование моделей «сущность — связь», 217 б Рис. 6.11. Пример связи М:Н: а — ЕИ-диаграмма связи между сущностями СТудЕНТ н ПРЕДМЕТ; б — данные для связи между сущностямн СТУДЕНТ н ПРЕДМЕТ На рис. 6.12 показана другая (и неправильная) стратегия. Здесь мы поместили в отношение ПРЕДМЕТ по одной строке на каждого студента, который посещает данный предмет, поэтому в нем имеется две строки для предмета 10 и две строки для предмета 30.