假設我有兩件「我可以賣的東西」:service
和product
。每個表格都有一個表格,表示它們的獨特屬性(例如,服務可能有每小時費率,而產品可能有每單位價格等)。針對電子商務的數據庫設計問題
每次進行銷售時,都假設我需要捕獲與銷售完全相同的數據,而不管服務或產品是否已售出。我如何建模?
方法1:
- 我創建一個表來保存每個銷售的細節
- 我創建兩個「映射」表的產品或服務與銷售表
所以,像這樣:
TABLE: product
- product_id (PK)
TABLE: service
- service_id (PK)
TABLE: sale
- sale_id (PK)
TABLE: product_sale
- product_id (FK)
- sale_id (FK)
TABLE: service_sale
- service_id (FK)
- sale_id (FK)
方法2:
跳過映射表,只是有單獨的表來記錄產品和服務的銷售情況。
TABLE: product
- product_id (PK)
TABLE: service
- service_id (PK)
TABLE: product_sale
- product_sale_id (PK)
- product_id (FK)
TABLE: service_sale
- service_sale_id (PK)
- service_id (FK)
我覺得方法1會更好,因爲我需要生成像報告:
- 在一定時期內
- 每個銷售人員的銷售總額
- 等 總銷售額
謝謝@svidgen。我其實只是考慮了抽象,而不是實際的影響。 –
我喜歡你的方法,但我會將salable_id,單位和總數從銷售移至sale_datails。此外,我會在sales_detail上重複價格,因爲價格可能會發生變化,所以每個人都這樣做。 – danihp