数据库建表合理问题(减少冗余)
我这里有这么四个表 
 库存表: 
 ID 
 产品ID 
 仓库ID 
 库存量   
 进货单表: 
 ID 
 单据号 
 供货商ID 
 经办人 
 日期 
 备注 
 进货价 
 产品数量 
 仓库ID 
 产品ID 
 是否审核   
 库存调拔表: 
 单据号 
 经办人 
 日期 
 备注 
 调拔数量 
 调拔价 
 调出仓库ID 
 调入仓库ID 
 产品ID 
 是否审核   
 库存退货表 
 ID 
 单据号 
 供货商ID 
 经办人 
 日期 
 备注 
 退货数量 
 退货价 
 仓库ID 
 产品ID 
 是否审核     
 问题:这样的建表是否很不合理?是不是该把三个表中的单据号,经办人,日期,备注,产品ID,是否审核拿出来当一个表???那怎么关联呢? 
 哪位高手可不可以把表重新排列的建过? 
 在线等待。。。。跪求
------解决方案--------------------沒必要再把三個表中的字段拿出來。這種子已經比較合理。拿出來就更不好處理了,因為如果你一個單號要是有幾個產品。每個產品又有數量、價格等。拿出來只會變得更不合理
------解决方案--------------------各表用仓库ID,产品ID关联就够了,不用再拿出某些字段来建新表
------解决方案--------------------把单据表分为表头、表身两部分;另外,最好加一个余额表(年或月),这样有利于最后出报表!
------解决方案--------------------我觉得现在不是讨论出报表的问题,而是数据冗余的问题。   
 我粗糙的分析了楼主的表,觉得是符合第二范式的数据库设计,冗余是有的,但是是否要进一步设计,关键看需求,就是性能需求还有空间需求,数据库设计不强求一定要到nf范式的。   
 有时候需求到第二范式就好了,所以如果是学术问题,给老师们看得,到nf范式,如果是商用,最高到第三范式。
------解决方案--------------------我觉得数据库设计的原则要求是这样的:以空间换时间(要求响应时间短时),以时间换空间(相应时间长时).所以这个要看相应时间和存储空间的要求,所以要看楼主如何取舍.
------解决方案--------------------进货表分开有明细 
 -------------------------- 
 这样好一点,因为一次可能进很多货,即使是同一种商品进的价格也有可能不同 
 分成主表和明细很有必要     
 另外不用担心太多的冗余,好的数据库设计本来就需要有冗余, 
 没有冗余的数据库设计绝对是华而不实的   
 范式?见鬼去吧!
------解决方案--------------------如果需要冗余,就考虑看这个冗余有何意义?   
 进货单表\库存调拔表\库存退货表,这些表应该把表头,表明细分开.   
 按楼主原来的设计,表头信息是冗余了,这个冗余几乎没有任何意义,还可能导致数据表的新增\删除\更新异常.   
 我在设计数据库的时候,首先考虑的是遵循范式,在范式的基础上再考虑哪些字段需要冗余而使得程序更具有效率
------解决方案--------------------我觉得可以啊 
 不过主表和明细最好还是分开 
 都用单号或ID关联就可以~