表需要多个标识符

时间:2013-11-11 02:01:16

标签: sql sql-server

我绝不是SQL专家所以我确信我做错了什么。我在这里读了几个关于需要主键的问题。我创建此表的方式我找不到实际拥有唯一键的方法。它是一个调查类型数据库。我有一个表格,主要详细说明日期,分诊编号和相关人员。问题结果的另一个表格和评论的另一个表格。我本来可以使分类独特,但不止一个人可以参与,因此相同的分类号码将不止一次使用。涉及的人也可以出现不止一次。唯一真正独特的是将人与分类相结合。我想到了一个自动键,但它没有任何意义。可以使用两个标识符作为调查类型表的可接受做法吗?

2 个答案:

答案 0 :(得分:2)

你的问题非常笼统,我没有足够的信息给你明确答案,但希望我的评论可以提供帮助。

使用复合主键(由2列或更多列组成的键)不是问题。它更常用于链接表,例如在多对多的关系中。

您应该考虑的一件事是,如果您还要引用其他表中包含复合主键的表,则必须引用外键中的2列,所有连接等。更容易为主键创建单独的列(例如自动递增数字)。

答案 1 :(得分:2)

重要的部分:

“......不止一个人可以参与,因此相同的分诊号码将不止一次使用。相关人员也可以出现不止一次。”

根据您的评论,这两个字段中的数据,例如:

 Triage  Person
 ------  ------
    1     PersonA
   1     PersonB
 ...
    7     PersonA
   7     PersonB

很好,Triage和Person可以制作一个复合键,只要在Person字段中记录的每个人都是唯一可识别的。也就是说,如果ea。人物价值是像“约翰史密斯”这样的名字,如果有2个或更多约翰史密斯回答调查,你可能会遇到问题。因此,您的Person值本身必须唯一地识别人。假设分流没有。区分(即,没有分类号代表多个语义相关的分类位置),这两个字段作为复合键将适用于您,当且仅当您的调查没有创建多个独特的分类人员组合时

每个其他表的外键应该是主表的复合键组合,但如果其他两个表可以合并到主表中,可以考虑减少连接负担。例如:如果注释表只在单个​​字段中存储注释而没有更多,为什么不在主表中包含该字段并删除注释表?