【问题标题】:Relating two tables in a database关联数据库中的两个表
【发布时间】:2009-11-20 06:51:00
【问题描述】:

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

【问题讨论】:

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

标签: database database-design


【解决方案1】:

如果“student”表使用“name”表中的 id,那么您希望有一个从“students”到“name”的 FK

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      相关资源
      最近更新 更多