Database-Design

將銷售和採購數據保存在同一個表中?

  • June 3, 2021

如果我的purchasesales表保留了相似的資訊,那麼將它們移動到同一個表並使用 INT 列來表示一行是代表購買還是銷售有什麼問題**嗎

如果有任何其他特定資訊,我可以將其保留在link表格中嗎?

即使您現在可以,也不清楚您是否應該這樣做。

我們將假設大多數潛在的技術問題不適用:例如,sales或者purchases不連接到其他一些表。

如果您打算這樣做,則將一兩列(尤其是在不大量使用的情況下)移到新的連結表中可能會起作用。

您可以更新索引以包含新類型列。

但是,銷售和購買在邏輯上是不同的,並且以不同的方式使用。即使今天它們幾乎沒有差異,但隨著時間的推移,這可能會發生巨大變化。可能需要新的欄位,或者新的業務規則或約束,這可能難以從新的單個表中得到支持。

任何報告都需要更新,並且必須引用新類型列,並正確引用它(這可能看起來很容易,但是….)。

您的財務人員執行的各種活動可能會因此而復雜化。如果您曾經遷移到復式記賬系統,那麼受商品購買和商品銷售影響的賬戶可能會完全不同。您會希望他們簽署更改。

最後,您需要確保您可能需要處理的任何審計員都可以接受更改。

同時,有什麼好處?您實際上可能會佔用更多的數據庫空間(您擁有所有現有數據,而且每行至少需要一個新列)。您現在添加了另一個欄位來檢查涉及這兩個表的大多數查詢。

最終,這兩個實體在邏輯上存在顯著差異,您的新結構隱藏了這種複雜性,而不是強調它。

綜上所述,我不能 100% 肯定地說,這種變化對你來說效果不佳——我只想確保它經過深思熟慮,所有相關利益相關者都知道並同意——而且,也許最重要的是,它解決了一個真正的問題或對目前結構的擔憂。

我認為你不應該那樣做。想想數據是如何儲存在磁碟上的。如果您將銷售和採購資訊儲存在同一個表中,則數據最終可能會儲存在同一個塊中。當您嘗試檢索銷售數據時,數據庫最終也會掃描購買數據以獲取與銷售訂單列表相關的數據。這是假設沒有使用索引。即使使用了索引,也需要掃描更多的塊才能獲得相同的數據。所以很可能會有性能損失。

引用自:https://dba.stackexchange.com/questions/168792