鍍金池/ 問答/Java  PHP  Python  數(shù)據(jù)庫  HTML/ 請教一下關(guān)于ERP的數(shù)據(jù)庫設(shè)計(jì)

請教一下關(guān)于ERP的數(shù)據(jù)庫設(shè)計(jì)

公司最近需要做一個(gè)ERP,由于沒什么經(jīng)驗(yàn),所以設(shè)計(jì)表這塊不太清楚目前設(shè)計(jì)這樣的方案是否正確
目前我設(shè)計(jì)的是,物料表有物料的詳細(xì)信息,大概有30-40左右的物料信息字段。
但是我在做采購單和銷售單的時(shí)候,就有把物料的信息一起寫到數(shù)據(jù)庫的采購詳情表和銷售詳情表里,
但是我做出入庫和收發(fā)貨這些,我就只是關(guān)聯(lián)了物料的主鍵進(jìn)出入庫和收發(fā)貨的詳情表里面,沒有把所所有字段都寫進(jìn)去,
就讀出來的時(shí)候,是用主鍵去管理信息,顯示出來
我想問下,這樣的設(shè)計(jì)是否合理?傳統(tǒng)的是否是這樣的設(shè)計(jì)方式?
在出入庫和收發(fā)貨這些明細(xì)表中,是否需要把這些物料的信息都寫進(jìn)去?還是只是關(guān)聯(lián)主鍵就可以了?
求高手指導(dǎo)一下,謝謝

回答
編輯回答
雅痞

實(shí)際使用中,這兩種設(shè)計(jì)都有。
1.不用冗余字段
供銷表只存物料表主鍵(一般是外鍵約束或自己寫邏輯管理),這種方式每次顯示供銷信息的時(shí)候都要另外對物料表進(jìn)行一次查詢。
2.使用冗余字段
在供銷表也存部分物料信息,這樣查詢供銷表可以一次獲得所有信息,減少查詢次數(shù)。但是,需要維護(hù)數(shù)據(jù)一致性,比如物料表的某項(xiàng)信息更改了,這邊也一樣要更改。

建議按自己的需求選擇,大多數(shù)情況下,一般系統(tǒng)壓力不大,選第一種,開發(fā)起來也方便。除非對供銷表的查詢壓力特別大,慎重選擇第二種。
第一種情況,如果性能要求不高,可以選擇直接用外鍵約束,開發(fā)更簡單。如果性能有要求,可以把約束放在程序邏輯里,比如:如果物料信息不多,也不經(jīng)常更改,可以一次性把所有信息讀入內(nèi)存(或redis等緩存),查詢/插入供銷信息的時(shí)候直接從緩存里讀/驗(yàn)證。

2017年4月24日 00:40