Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция8(ER_моделир).doc
Скачиваний:
7
Добавлен:
19.09.2019
Размер:
97.28 Кб
Скачать

3. Когда две сущности участвуют в связи один-ко-многим (1-м), отношение, представляющее сущность с кардинальностью м, должно иметь столбец внешнего ключа, представляющий эту связь.

Между сущностями, которые мы рассматривали, было несколько связей типа 1-М. В частности, связь между Филиал и Счет (рис. 3) имеет тип 1-М, это означает, что в отношении Счет должен присутствовать в качестве внешнего ключа столбец Название_филиала.

4. Когда две сущности участвуют в связи один-к-одному (1-1), в отношение, представляющее одну из этих сущностей, необходимо включить столбец внешнего ключа.

Не следует помещать внешние ключи в оба отношения, так как это создает возможность для записи несогласованных данных.

Однако следует ответить на вопрос: в каком отношении лучше поместить столбец внешнего ключа для отражения связи 1—1. Согласно определению, сущность полностью участвует в связи, когда каждый ее экземпляр должен участвовать в этой связи. Итак, для представления связи 1-1 внешний ключ следует помещать в отношение, представляющее сущность, которая более близка к полному участию в связи.

Иногда встречаются связи 1-1, в которых обе сущности участвуют полностью. Если эти сущности не участвуют больше ни в каких иных связях, иногда можно объединить их в одно отношение. Следует отметить, что если внешний ключ представляет связь 1-1, дублирующие значения этого ключа должны быть запрещены.

5. Если две сущности участвуют в связи многие-ко-многим (м-м), необходимо создать отношение из внешних ключей двух отношений, представляющих сущности-участники.

Связь «имеет» на рис. 4 между Клиент и Счет имеет кардинальность М-М. Чтобы представить ее в реляционной модели, нужно отношение Владение счетами, состоящее из двух столбцов: Номер_клиента (ссылающегося на Клиент) и Номер_счета (ссылающегося на Счет). Первичный ключ данной таблицы — комбинация этих двух столбцов, а кортежи представляют пары значений, где номеру клиента ставится в соответствие номер счета, которым он владеет. Клиенту, имеющему три счета, в данной таблице будет соответствовать три кортежа с одним и тем же Номером_клиента. Аналогично, счет, у которого четыре владельца, будет представлен в таблице четырьмя кортежами с одним и тем же Номером_счета и различными Номерами_клиентов, владеющих этим счетом (табл. 1). Согласно таблице, клиент 12345 имеет три счета, а у счета 56789 — четыре владельца.

Отношение: Владение счетами

Номер_клиента

Номер_счета

12345

56930

12345

87306

12345

56789

39205

56789 '

98508

56789

92056

56789

Таблица 1. Отношение, представляющее связь М-М

6. Если сущность имеет многозначный атрибут, для его представления следует создать отдельное отношение. Один столбец этого отношения будет внешним ключом к отношению, представляющему сущность, а второй будет представлять многозначный атрибут. Первичный ключ в данном случае — комбинация этих столбцов. Такое представление необходимо в силу требования атомарности данных в реляционной базе данных.

Предположим, что сущность Клиент имеет многозначный атрибут Номер_телефона, т.е. клиент может иметь несколько номеров телефонов. Невозможно включить столбец, представляющий этот атрибут, в отношение Клиент. Необходимо создать отдельное отношение Телефоны_клиентов со столбцами Номер_клиента (внешний ключ, ссылающийся на Клиент) и Номер_телефона; первичный ключ отношения будет состоять из этих двух столбцов. В этой таблице каждому телефонному номеру клиента соответствует отдельный кортеж. В табл. 2 у клиента 12345 три телефонных номера, а у клиента 67859 — один.

Отношение Телефоны_клиентов

Номер_клиента

Номер_телефона

12345

687-69449

12345

687-09382

12345

02-578-59483

67859

657-03938

Таблица 2. Реализация многозначного атрибута

Если многозначный атрибут является составным, то в представляющем его отношении должны быть отдельные столбцы для каждой составной части данного атрибута.