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

大家在規劃數據庫的時候,一般是規劃完整數據庫,還是規劃簡單數據庫
有這麼二個或以兩個以上的表

A   物料庫
物料ID   物料名   物料規格   說明

B   廠商庫
廠商ID   廠商   地址   說明

在規劃   進出庫表的時候是按
方案一:進出庫
ID   廠商ID   廠商   物料ID   物料名   物料規格   數量   變動日期   變動人  
規劃好還是按
方案二:進出庫
ID   廠商ID   物料ID   數量   變動日期   變動人

如果接方案二規劃的話,那麼在查詢時相對sql語句可能會復雜一點
如果按方案一規劃的話,那麼隻是在更新數據庫時更新語句編寫要謹慎點

但具體如果大型的系統應該用哪種規劃比較合理呢?

------解决方案--------------------
方案二好些,理由有2:
1.進出庫表肯定是个数据量很大的表,冗余廠商,物料名,物料規格这些数据会使表变得庞大.
2.如果廠商,物料名,物料規格经常会改变,那还需要去同步进出库表.

当然,如果某此字段不会改变又查询的频率很高可以冗余过来.
记录ID查询的时候只需关联显示,个人认为比方案一好.
------解决方案--------------------
正常的情况下都应该选择第二个方案

不仅是冗余的问题,还要考虑以后的扩展和数据库的整体规划


------解决方案--------------------
我喜欢第一种方案,不但开发效率高,而且查询效率高,扩展已经在AB表中留有余地,
物料名 与 廠商 是经常需要一起显示的内容,join的效率肯定要低
------解决方案--------------------
一般是方案2, 只要有合理的索引, 这样的方案扫描的数据页会比方案一少很多.

而对于性能来说, DISK I/O 的多少, 对性能的影响是很大的.
------解决方案--------------------
通常是方案2好.
不会出现数据冗余
也就是当有物料名称和变化是,你只要更新一条物料库中的数据
如果你用第1种方案的话就要更新所有与该物料的记录