日期:2014-05-19  浏览次数:20495 次

大家帮我看看,这种情况如何设计表结构?
大家帮我看看,这种情况如何设计表结构?
-------------
需求:对于每名员工,需要每月录入下列数据,只列出一部分,
解职补偿金,福利费,丧葬补助,非货币福利,工会经费,职工教育经费。。。
要将这些数据录入到表中,关键是表的结构我现在定不下来,
一种思路:
将以主各项都建一个专门的字段,如福利费字段,职工教育经费字段等,可是由于企业的需求长有变化,以后每增加项目后,都是增加字段。
这种思路,录入后是下列情况:

姓名,解职补偿金,福利费,非货币福利,
张三,200,100,345
王六,459,788,56
李一,89,234,678

二种思路:
建一个编码表,存各项的编码与名称的对照表,如:
01,解职补偿金
02,福利费
03,丧葬补助
04,非货币福利

这样,录入后,如下所示:
姓名,项目编码,金额
张三,01,900
张三,02,78
张三,03,78
王六,01,783
王六,02,783,
王六,03,23

这种设计思路,适用性好,以后再有新的项目时,不用改表结构。
但是数据多时,效率不好,写汇总时,语句也复杂。
不知大家如何看,给点提示吧!谢谢。




------解决方案--------------------
如果业务需求变化会增加项目,应采取第二种方式处理。


------解决方案--------------------
一、二都不对,应该至少用3个表

table 1 职员表
ID Name
1 张三
2 王六

table 2 科目表
ID Code Title
1 01 解职补偿金
2 02 福利费
3 03 丧葬补助
4 04 非货币福利

table 3 薪金表
ID EID Code Amount
1 1 01 900
2 1 02 78
3 1 03 78
4 2 01 783
5 2 02 783
6 2 03 23

为什么要这样设计?去看看数据库三范式
------解决方案--------------------
这种表就是一个员工id最实际 全部外键引用它就ok
------解决方案--------------------
vrhero() ( ) 信誉:100 Blog
设计的合理
------解决方案--------------------
当然是用第二种了, 况且语句也不会很复杂!
------解决方案--------------------
业务经常变动宜用第二种....
不然表的结构得重新设计,维护起来十分麻烦.
------解决方案--------------------
第二种的时候,当业务结构发生变化,你只需插入字段就可以了,而不用重新更改表的结构和系统代码.
------解决方案--------------------
所以还是不明白
----------

所以让你去看看数据库三范式
------解决方案--------------------
商用的未必就是好的,你说那种都是小作坊的产品,正常的设计过程都没有还遵循什么范式呢?