问题来自以下三个表 -
Tour
- Id
TourPackage
- Id
- TourId
Traveller
- Id
- TourId
- PackageId
外键约束已到位。但是,我还希望强制要求旅行者套餐也必须参考旅行者所指的同一旅游。
Traveller.Tour = Traveller.Package.Tour
我可能可以轻松地在业务层执行此操作,但我可以在数据库中执行此操作吗?还是我应该重新考虑我的设计?请注意,我不打算在新的关系表中提取外键。我认为 Tour 和 Package 是 Traveler 实体的一部分,因此应该驻留在实体本身中。
更新
我的应用程序在单个 Tour 的上下文中运行。因此,我加载的所有数据都将指向单个游览。此外,大部分数据来自 Traveler 表。因此,有一个直接的 TourId 到表是有意义的。无论如何,我是这样看待关系的。
- 一个旅游有几个套餐。
- 一位旅行者报名参加了一次旅行。
- 旅行者为订阅的旅行选择套餐。
所以,我想一个旅行者提到旅游和包裹是明智的。我在这里错了吗?