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