日期:2014-05-18  浏览次数:20464 次

关于主键的设计,,到底该用什么字段来标记呢?
比如员工表:

员工(员工号,员工姓名,性别,出生日期,other   fields)

很自然,很多人想到的是使用员工编号作为主键。。
这样一来,就需要在程序中控制很多东西,比如员工号的生成,在插入时候判断重复值,连续插入员工资料时候员工号的递增规则(自增还是截取部分加一还是取最大加一等)..

后来我看到某些商用的小型管理系统中,有很多是将员工号   自动编号,这样插入数据啥的是很方便,但始终觉得有点不太好,如果涉及到多人一起进行项目时候,导入以及导出,自动编号的自动,会不会出现重复性?

另外,还看到的一部分做法是结合上面两种,增加一个没有意义的“ID”字段到上述表作为主键,即:
员工(ID,员工号,员工姓名,性别,出生日期,other   fields)..

..

我目前就是使用第一种方法,自己设定规则生成员工编号..

不知道大家有何意见???这样做是不是太不专业的啊?




------解决方案--------------------

倾向这种--
员工(ID,员工号,员工姓名,性别,出生日期,other fields)..

----
加入人员时具有一个唯一的物理ID,为主键
同时根据工作证号编码要求产生工作证号
工作号不见得就是终身的了,如部门调整,可能就需要更换工作证号,当然工作证号也必须保持唯一性
------解决方案--------------------
员工(ID,员工号,员工姓名,性别,出生日期,other fields)..
用这个 ID 自增唯一的主键,员工号可以写个函数自动生成编号,可以控制新生成的不会重复的规则。
------解决方案--------------------
员工(ID,员工号,员工姓名,性别,出生日期,other fields)..
都是这样做的,好处很多,以后维护也方便

------解决方案--------------------
看需求,如果員工離職了,就刪除員工信息,以後來的員工可以重復使用以離職員工編號,則用員工編號來做為一標識;
否則,如果員工離職了,不刪除員工信息,以後來的員工不可以重復使用以離職員工編號,則用增列比較合適;

僅供參考