我有兩個表,如產品和客戶,對于多對多關系,我創建了新表,如 customer_product_map 并從兩個表中參考了 PK。
所以我的問題是,由于每個客戶都需要知道他們有多少產品,我可以在 customer_product_map 表中存盤類似 product_count 的東西嗎?這是好的做法嗎?
uj5u.com熱心網友回復:
這是好的做法嗎?
不!相反,它是一種絕對的反模式。
為確保完整性,資料應保持無冗余。實作計數可能會導致實際計數與保存的值有所不同。決策可能是根據虛假資料做出的,錯誤可能會進一步傳播,帶來災難性的后果。
在極少數情況下,實作這些數字可能是最后的手段。但你似乎還沒有接近那個。
如果您想獲取產品的數量,請觸發一個對行進行計數的查詢。它總會給你正確的號碼!為方便起見,如果您不想一直重復這樣的查詢,您可以從中創建一個視圖。
如果您想了解更多關于良好資料庫設計的資訊,您應該查找有關所謂規范化的資源。
uj5u.com熱心網友回復:
這取決于許多因素。如:
- 你用這個值做什么?僅僅是為了展示嗎?
- 它始終正確和一致有多重要?你有檢測和糾正歪斜的機制嗎?你需要那個嗎?
- 資料庫可以為您計算它們——是不是太慢了?如果是這樣,也許快取該值是正確的方法,但也許添加索引更好。
就像我說的,這取決于你想要做什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/389920.html
標籤:sql PostgreSQL的
上一篇:VARCHAR的OVER子句
