Книга: Обработка баз данных на Visual Basic®.NET
Отношения типа многие-ко-многим
Отношения типа многие-ко-многим
Отношение типа многие-ко-многим по сравнению с отношением один-ко-многим идет еще дальше. В качестве классического примера отношения типа многие-ко-многим можно привести отношение между студентами и классами. Каждый студент может иметь много классов, а каждый класс – много студентов. (Конечно же, возможны варианты, когда класс будет состоять из одного студента или в нем вовсе не будет ни одного учащегося, а также вполне возможно для студента иметь только один класс или ни одного.)
В данном бизнес-примере отношение задается между заказами и позициями заказа, т.е. каждый заказ может содержать несколько позиций, а каждая позиция может присутствовать в нескольких заказах.
Чтобы установить отношение многие-ко-многим, необходимо иметь три таблицы: две для хранения реальных данных и третью (именуемую соединительной) для хранения отношения между двумя первыми таблицами. Таблица соединения обычно состоит только из двух внешних ключей – по одному из каждой связанной таблицы, хотя иногда в таблице соединения полезно использовать собственное поле с идентификаторами для предоставления доступа к записям таблицы с помощью программных средств.
В качестве примера отношения многие-ко-многим можно модифицировать пример из предыдущего раздела таким образом, чтобы в базе данных хранилось несколько позиций, связанных с одним заказом, т.е. у каждого заказа было много позиций и каждая позиция относилась к неограниченному количеству заказов. В этом случае таблицы могут выглядеть так, как показано на рис. 1.13.
РИС. 1.13. В этой группе таблиц, участвующих в отношении многие-ко-многим, tbIOrderItem является таблицей соединения
- Отношения типа один-ко-многим
- Ссылающиеся на себя отношения
- 3. Выбор типа диаграммы (от сравнения к диаграмме)
- Пространственные отношения
- Лекция № 7. Базовые отношения
- Структура типа termios
- Обязательные отношения
- Цепочка наследования типа Page
- Проблемы типа «ближайший сосед»
- Инициализация переменных целого типа
- 3.4. Отношения между классами
- Использование CAST() с типами дата