Один из способов, который позволяет избежать лишних таблиц, но накладывает некоторые ограничения, состоит в том, чтобы просто добавить поле «ParentID» с собственной ссылкой в таблицу продукта. Этот «ParentID» просто указывает на связанный продукт пакета. Поскольку это все одна и та же таблица, ваши пакеты имеют те же поля (цена и т. Д.), Что и ваши отдельные продукты. Чтобы узнать, какие продукты составляют пакет, просто запросите все продукты с помощью «ParentID» или «ProductID» пакета.
Ограничение состоит в том, что товары могут входить только в одну упаковку. Таким образом, если вы продаете бейсбол, летучую мышь и перчатки, а также пакет «бейсбол», включающий все три, перчатки никогда не могут быть частью пакета «футбол».
Тем не менее, одним из преимуществ является то, что пакеты «бейсбол», «футбол» и «справочник тренера» могут быть частью пакета «полный спорт». И если вы удаляете летучую мышь из пакета «бейсбол», она также удаляется из пакета «полный спорт». Все без добавления одной таблицы.
Конечно, одна упаковка на ограничение продукта означает, что это не сработает для каждой ситуации.