我正在开发一个系统,其中我有一个表Employees
,其中有多个与员工相关的列。我有一列JobTitle
和另一列Department
。SQL Server主键/外键
在我目前的设计中,JobTitle
&的Department
列在Employees
表复合外键和它们与有2列复合主键(JobTitle
& Department
)和作业一个额外的列的Groups
表链接描述。
我不开心的这个设计,因为我认为,联用2复合varchar
列2个表是不好的表现,我认为这将是更好的有一个Integer
列(自动编号)作为主JobTitleID
键入Groups
表,并将其作为Employees
表中的外键而不是文本JobTitle
&,Department
列。
但我不得不这样做,因为当我将员工列表(Excel)导入到我的Employees
表中时,它可以直接映射(JobTitle - > JobTitle & Department - > Department)。否则,如果我使用整数索引作为主键,那么我将手动重命名excel表格中的文本JobTitle
列为基于Groups
表中生成的键的数字以便导入。
保持我这样的数据库设计(文本复合主键与文本复合外键链接)是否正常?如果不是,那么如果我使用Groups
表中的整数列作为主键并且使用Employees
表中的外键,那么我如何才能将excel中的员工列表直接导入到Employees
表中?
是否有可能从Excel导入列表到SQL Server的方式,从Excel工作表中的文字JobTitle
将从Groups
表自动转换到corespondent JobTitleID
?这将是最好的解决方案,然后我可以在Groups
表中添加JobTitleID
列作为主键和Employees
表中的外键。
谢谢
非常感谢你的澄清。我将使用int作为主键,但是我会遵循Adolfo Perez的建议来导入数据,这比手动编辑excel更快更直接。 – 2012-03-20 16:22:26