大家帮我看看,这种情况如何设计表结构?
大家帮我看看,这种情况如何设计表结构? 
 ------------- 
 需求:对于每名员工,需要每月录入下列数据,只列出一部分, 
 解职补偿金,福利费,丧葬补助,非货币福利,工会经费,职工教育经费。。。 
 要将这些数据录入到表中,关键是表的结构我现在定不下来, 
 一种思路: 
 将以主各项都建一个专门的字段,如福利费字段,职工教育经费字段等,可是由于企业的需求长有变化,以后每增加项目后,都是增加字段。 
 这种思路,录入后是下列情况:   
 姓名,解职补偿金,福利费,非货币福利, 
 张三,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  
 设计的合理
------解决方案--------------------当然是用第二种了, 况且语句也不会很复杂!
------解决方案--------------------业务经常变动宜用第二种.... 
 不然表的结构得重新设计,维护起来十分麻烦.
------解决方案--------------------第二种的时候,当业务结构发生变化,你只需插入字段就可以了,而不用重新更改表的结构和系统代码.
------解决方案--------------------所以还是不明白 
 ----------   
 所以让你去看看数据库三范式
------解决方案--------------------商用的未必就是好的,你说那种都是小作坊的产品,正常的设计过程都没有还遵循什么范式呢?