我有一个没有被另一个实体定义就不能存在的实体,我希望这个实体参与多对多关系。
例子:一个艺人有一张专辑(没有艺人就不能存在专辑),专辑也有很多曲目,但同一曲目可以存在于多个专辑中。
所以我们在专辑和曲目之间有一个多对多的关系。
如果专辑是弱实体,则其主键是引用艺术家的外键,因此它不能是表示多对多关系的另一个表的外键。
问题是:SQL中是否可以有这种关系,如果可以,我该如何表达?
我正在寻找有关存储调查、问题和响应的最佳关系建模方法的建议。
我正在寻找以下两种方法中的哪一种看起来最好,或者另一种方法。
我至少有这些实体:
至少有这些关系:
这就是我遇到麻烦的地方:如何对一个人对调查问题的回答进行建模。
这是我考虑过的两种方法,对我来说似乎都不是很好。此处的图表已大大简化以说明问题。
我不喜欢这种方法的地方:
survey_person_question_response
表有两个不同的列引用调查:survey_question_survey_id
和survey_person_survey_id
survey_id
在这两列的一行中引用不同的是错误的。survey_question 必须与该人在survey_person 中进行的调查来自同一个调查。我看不出有什么好的方法来强制执行此操作。方法二:
尽量避免方法 1 中的两个 FK 应该引用相同的值......
我不喜欢这种方法的地方:
question_id
和survey_id
FK 来自有效的survey_question
对survey_id
和person_id
FK 来自有效的survey_person
对任何建议:
将不胜感激!
我有以下设计。每个用户都有它自己的联系人,它自己的主机并将它们分配给一个只属于他的域。
我想确保您分配给域的主机属于该域分配给的用户。
这是我必须在我的应用程序逻辑中确保的东西吗?
如果我设置domains.user_id
foreign key
为参考host.user_id
,user_id.id
它会消除我的问题吗?
顺便说一句,谁能建议我为我的架构设计更好的设计?
“组”是一群学生。“话题”是课程的话题。
每个组对应一个主题。(因此每个主题可能有多个组。)
一个学生对应多个组,但每个主题最多一个组。
如何根据 MySQL 中的 UNIQUE 索引和外键实现这一点?