假设我有两件“我可以卖的东西”: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