Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 表关系_Database_Database Design_Relational Database_Entity Relationship - Fatal编程技术网

Database 表关系

Database 表关系,database,database-design,relational-database,entity-relationship,Database,Database Design,Relational Database,Entity Relationship,如果我有下面的关系表,哪一个是正确的 谢谢可能两者都没有。首先,关联表中的代理键是一种反模式。B比A好,但太复杂了 您可能只需要一个带有课程id、学生id和日期的关联表。假设每个学生可以参加许多课程,并且每个课程可以有许多学生参加,如果每个学生最多只能参加一次课程,则其关键是{course_id,student_id};或者{course_id,student_id,date}如果每个学生可以在不同的日期多次参加每门课程 (如果每个学生可以在同一天多次参加每门课程,我们需要更多信息。)有点,但

如果我有下面的关系表,哪一个是正确的


谢谢

可能两者都没有。首先,关联表中的代理键是一种反模式。B比A好,但太复杂了

您可能只需要一个带有课程id、学生id和日期的关联表。假设每个学生可以参加许多课程,并且每个课程可以有许多学生参加,如果每个学生最多只能参加一次课程,则其关键是{course_id,student_id};或者{course_id,student_id,date}如果每个学生可以在不同的日期多次参加每门课程


(如果每个学生可以在同一天多次参加每门课程,我们需要更多信息。)

有点,但我对你的答案有很多疑问。面对编辑我喜欢的答案(太激烈/不礼貌)、通过评论说服你修改答案(太不确定、太耗时)以及制定我自己的简短答案等选项,我选择了后一个选项。不,不。我修改答案太激烈/不礼貌,因为我必须做重大修改。“正确”是什么是什么意思?在这里是正确的,我的意思是哪一个是数据库中正确的方法或最佳实践我当前的一般评论是“更好”/“最佳”等:除非你定义它,否则在工程中没有“更好”/“最佳”这类东西。同样不幸的是,所有合理的实用定义都需要大量的经验,其中包含大量的因素,这些因素与对细节的敏感度混乱相互作用。做简单的设计。当你通过测量证明一个设计和你能想到的所有备选方案都有问题(无论当时是什么意思),然后问一个非常具体的问题。还应定义“更好”/“最佳”。请仅为方便补充文本和/或为文本中无法给出的内容使用图像。使用编辑函数内联,而不是链接,如果你有代表-使你的文章自我包含。不要给出没有图例/图例的图表。您应该使用的建模/设计参考是什么?是时候读一本介绍信息建模和信息设计的教科书了,看看表是用来做什么的,约束是用来做什么的。给出可能出现的情况下的所有约束&每个基表的含义——行在其中表示的情况。否则,我们就不知道该如何设计,更不用说初学者的“更好”设计了。例如,您可能希望课程学生id对是唯一的,考勤id对是唯一的,可能出现在课程学生等中,但我们不知道。