我正在sql server中创建一个学校项目,我的数据库架构出了问题。
问题: 数据库是为组织会议的公司而制作的。每个会议都有自己的日子和工作坊。如果客户想要参加研讨会,他需要参加适当的会议,而不是正确的一天,最后是本次研讨会。 我做了一个架构:
我发现它很棒,但是通过这种方法,触发器是必要的 - 确保参加研讨会的客户注册了适当的一天。所以我想到了另一个想法:
解决方案2
这让我可以摆脱触发器,但是我有很多键,任何重要的查询都会非常复杂。
问题:那么哪种方法更好?或者你知道另一个更合适的选择吗?
答案 0 :(得分:1)
除非有一些额外的逻辑我不推断,即使是第二个模型也不会阻止在WorkshopEnrollments中插入一个条目而没有DayEnrollments中的相应条目和/或ConferenceEnrollments中的条目。
尝试:
[ConferenceEnrollments] [DayEnrollments] [WorkshopEnrollments]
id (PK) id (PK) id (PK)
customerid (FK) conferenceenrollmentid (FK) dayenrollmentid (FK)
conferenceid (FK) dayid (FK) workshopid (FK)
上述模型要求在插入DayEnrollments条目之前,存在ConferenceEnrollments条目。与WorkshopEnrollments和DayEnrollments一样。
非平凡的查询仍然很繁琐,但似乎一致性对您的项目更重要。