Устранение связи «многие ко многим»

В качестве примера рассмотрим функционирование фирмы «Столица» (часть варианта 8). Особенностью работы этой фирмы является посредническая деятельность – стыковка поставщиков товаров и покупателей.

Один поставщик связан с несколькими покупателями. Один покупатель, в свою очередь, связан с несколькими поставщиками. По понятным причинам поставщик «не знает» покупателя и наоборот. Вот Вам предпосылка создания связи «многие ко многим» между двумя таблицами: поставщики и покупатели (рис. 3.17).

Как мы уже знаем, реляционная модель не позволяет непосредственно реализовать связь типа «многие ко многим». Кроме этого, штрих-код товара (рис. 1.18), являясь его однозначной идентификацией, не может быть назначен в качестве первичного ключа. В случае если через какое-то время будет закуплена еще одна партия такого же товара, то в таблице «поставщики» появится строчка, имеющая идентичный штрих-код. Аналогичная ситуация возможна и с покупателем, который приобретет такой же товар из другой партии. И еще одна проблема: один клиент практически никогда не покупает всю партию целиком и перед фирмой встает проблема учета остатка товара. Все эти проблемы (реляционной модели и алгоритма) легко решаются добавлением двух промежуточных таблиц: «Поставленные товары» и «Проданные товары». На рис. 1.19 показан фрагмент схемы данных превращения «связи многие ко многим» в несколько связей «один ко многим» с добавлением этих промежуточных таблиц.

Преобразование связи «многие ко многим» в несколько связей «один ко многим» и «много к одному» можно сделать следующим образом. Вместо того чтобы рассматривать множество поставщиков, поставляющих товары

Рис. 1.18 Штрих-код

Рис. 1.19. Работающий фрагмент схемы данных


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: