2009-11-19 75 views
1

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

+2

你为什么会在这里需要2个表有FK?一名学生只能有一个名字。我想这可能是两个学生可能有相同的名字,中间和姓氏,但不足以分开这些名字。 – Dave 2009-11-19 19:25:03

+0

名字有三个部分?总是?我希望Eno(或者他的出生证上说的Brian Peter George St John Le Baptiste De La Salle Eno)从未注册过你的课程。另外,一些文化有许多不同的方式来订购姓名部分:“姓氏”可能是姓氏或名字,这取决于学生的背景。 – APC 2009-11-20 09:56:06

+0

我想你可以争辩说,你的解决方案解决了我在之前的评论中的反对意见(通过允许任意数量的名称部分,允许名称部分的可变顺序)。这种灵活性的代价就是性能 - 开放式结合只是为了找回学生的名字。更不用说数据输入的额外复杂性了。另一方面,它可以减少在提供数据仓库时进行数据清理的需要,并提供减少重复条目的句柄。 – APC 2009-11-20 10:06:24

回答

1

如果“学生”表使用从“名”表ID,那么你想从“学生”到“名”

1

是的,你需要一个表之间的主键/外键约束。唯一的问题是“哪个桌子是控制的桌子?”它可能是学生表,在这种情况下,名称是指学生表中的学生ID。或者,它可以是名称表,学生表在其中记录学生的当前姓名(并且可能有其他表格记录学生名字变化的历史记录 - 结婚,或者仅仅是法律名称的变化)。