Database 在数据库中关联两个表

Database 在数据库中关联两个表,database,database-design,Database,Database Design,我有一个“学生”表,它应该有名称列。但我为名字做了另一个表格“StudentsName”,因为名字有三个部分:名字、中间名和姓氏。 现在我的问题是我应该如何关联这两个表 是的,表之间需要主键/外键约束。唯一的问题是“哪个表是控制表?”它可能是student表,在这种情况下,名称引用student表中的student ID。或者,它可以是名称表,学生表在其中记录学生的当前姓名(可能还有其他表记录该学生姓名更改的历史记录-婚姻,或者只是合法更改姓名)。如果“学生”表使用“姓名”表中的ID,则您希望将

我有一个“学生”表,它应该有名称列。但我为名字做了另一个表格“StudentsName”,因为名字有三个部分:名字、中间名和姓氏。
现在我的问题是我应该如何关联这两个表

是的,表之间需要主键/外键约束。唯一的问题是“哪个表是控制表?”它可能是student表,在这种情况下,名称引用student表中的student ID。或者,它可以是名称表,学生表在其中记录学生的当前姓名(可能还有其他表记录该学生姓名更改的历史记录-婚姻,或者只是合法更改姓名)。

如果“学生”表使用“姓名”表中的ID,则您希望将FK从“学生”改为“姓名”

为什么需要两张桌子?一个学生只能有一个名字。我想两个学生可能有相同的名字,中间名和姓氏,但没有足够的频率来区分它们。名字有三个部分?总是吗?我希望Eno(或者出生证上写的Brian Peter George St John Le Baptiste De La Salle Eno)永远不要注册你的课程。此外,一些文化中有许多不同的名称排序方式:“名字”可能是姓氏,也可能是给定的名字,这取决于学生的背景。我想你可能会说,你的解决方案解决了我在前面的评论中提出的反对意见(通过允许任意数量的名称部分,通过允许名称部分的可变顺序)。这种灵活性的代价是性能-开放式联接只是为了检索名为oarts的学生。更不用说数据输入的额外复杂性了。另一方面,它可以减少向数据仓库提供数据时对数据清理的需求,并提供减少重复条目的句柄。