C# 如何为employee表中的记录分配唯一标识符?

C# 如何为employee表中的记录分配唯一标识符?,c#,sql-server,C#,Sql Server,我知道这是第一个性病问题,但有人问我,但我无法给他恰当的答案。 有两个表Employee,Technology具有保存在Employee\u Technology\u rel中的多对多关系。Employee表具有字段-emp\u id(自动增量),emp\u name(varchar),DOB(日期)其中tech\u id(自动增量),tech\u name(varchar) 这两个表允许名称重复。我应该为允许唯一条目定义哪个唯一约束?您可以在表employee\u technology\u r

我知道这是第一个性病问题,但有人问我,但我无法给他恰当的答案。 有两个表
Employee,Technology
具有保存在
Employee\u Technology\u rel
中的多对多关系。Employee表具有字段-
emp\u id(自动增量)
emp\u name(varchar)
DOB(日期)
其中tech\u id(自动增量),
tech\u name(varchar)

这两个表允许名称重复。我应该为允许唯一条目定义哪个唯一约束?

您可以在表
employee\u technology\u rel
中定义唯一条目

ALTER TABLE employee_technology_rel 
       ADD CONSTRAINT emptech_pk PRIMARY KEY (emp_id, tech_id)
// or if you have set a primary key already, you can still define via UNIQUE
ALTER TABLE employee_technology_rel 
       ADD CONSTRAINT emptech_uq UNIQUE (emp_id, tech_id)
它只允许每个员工使用独特的技术

为了使您在表
员工
上拥有唯一的
emp\u名称
,以及在表
技术
上拥有唯一的
tech\u名称
,您还可以通过添加唯一约束来更改表

ALTER TABLE Employee ADD CONSTRAINT emp_uq UNIQUE (emp_name)
ALTER TABLE Technology ADD CONSTRAINT tech_uq UNIQUE (tech_name)

您需要在employee_technology_rel中的两列上定义一个复合主键:emp_id和tech_id

唯一索引和唯一约束是相同的。它们实现了同样的目标 目标。两者的SQL性能相同

添加唯一约束 改变表dbo。添加约束 上的唯一非聚集() [主要]

添加唯一索引 创建唯一的非聚集索引 关于dbo。()在 [主要]


Source和Google search:“。

您希望名称唯一还是希望唯一标识记录?为了唯一地标识一行,您已经有了自动递增的id字段。对于唯一记录,我有“emp_id”,即“自动递增”,我不想允许现有员工插入,但在添加新员工期间,我不会向他分配任何技术,我只插入员工详细信息。我是否应该为员工详细信息的唯一性定义任何特殊列?否-这就是emp_id列。employee_technology_rel中没有一行表示该员工未分配任何技术。employee表和technology表都不依赖employee\u technology\u rel表;相反,该表依赖于其他两个,但前提是员工被分配了一项技术。