У меня много сущностей для моей системы. Некоторые отношения сущностей мне очень понятны, но в какой-то момент я запутался. Теперь у меня есть Business
, Service
и Pack
сущности. Бизнес-объект может быть связан с более чем одним Сервисом, а сервисный объект может быть связан с более чем одним Бизнесом. Таким образом, эти отношения многие ко многим. И бизнес-объект может быть связан с более чем одним пакетом, но объект пакета может подключаться только к бизнес-объекту. Так что это отношение один ко многим. Объект Pack может быть связан с более чем одним объектом Service. Объект службы может быть связан с более чем одним объектом пакета.
Похоже,
Business(m) to Service (n)
Business(1) to Pack(m)
Service(n) to Pack(m)
Проблема здесь заключается в том, что для службы, включаемой в пакет, бизнес должен предоставлять эту услугу.
Например, сценарий:
Business Table Services Table Pack Table
-------------- -------------- ------------
ID Name .. ID Name ID Name BusinessId(FK)
1 XBusiness 1 AService 1 TPack 1
2 YBusiness 2 BService
Сводная таблица, я думаю:
BusinessServices Table PackServices Table
---------------------- ------------------------
BusinessID(FK) ServiceID(FK) PackID(FK) Service(ID)
1 1 1 1
Согласно этому сценарию: у XBusiness есть одна служба (AService), и я просто хочу, чтобы эта услуга была включена в пакет. Нет (BService). Поскольку у XBusiness нет BService.
Теперь,
Как предотвратить добавление BService в пакет?
Как я могу объяснить диаграмму отношений сущностей?
Должна ли сводная таблица BusinessServices иметь первичный ключ для отношения сущности пакета?