【发布时间】:2011-11-01 04:03:05
【问题描述】:
假设我有 2 个“东西”可以出售: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 会更好,因为我需要生成如下报告:
- 给定时期的总销售额
- 每位销售人员的总销售额
- 等
【问题讨论】:
标签: mysql database database-design