Database-Design
在一個產品表中統一特定表
今天我的數據庫中有第一張圖片中的表格。問題是現在我需要進行庫存控制,並且還會添加其他產品。
為了支持多種類型的產品,我首先設計了下圖中的表格(設計 1)。對於沒有任何類型的序列號來區分它們的通用產品,這將是一個解決方案。
在做了一些研究後,我在下一張圖片(設計 2)中找到了解決方案。這支持通用和特定產品(如 SIM 卡和設備)。我認為這樣複雜度會大大增加。還有一個問題是我在 SIM 卡和設備中有 FK。該解決方案的一大優點是它將支持具有特定數據的未來產品。
解決此問題的最佳方法是什麼?
為什麼不添加
product_type_attributes
到設計 1 中?如果product_type_attributes
有必要並且它有多種類型,那麼設計 2 與設計 1 相比要好得多,因為它更加規範化。
我傾向於認為您需要產品和製造商之間的交叉表。一個產品是否不可能提供給我一個以上的製造商和/或一個製造商提供一個以上的產品?
除此之外,您應該採用任何設計為您提供所需的功能。你為什麼還要擔心複雜性?如果增加的複雜性可以滿足您的需求,那麼不要質疑複雜性。您的設計必須盡可能複雜,才能為數據庫提供所需的所有優勢和功能。不會比這更複雜——但也不會更少。
我去過許多商店,其中重要的功能沒有在最終設計中實現,以降低設計的複雜性。是的,更多的複雜性使維護更加困難。但我們的工作是讓使用者的工作更輕鬆,而不是我們自己的。