【发布时间】:2017-07-10 19:41:42
【问题描述】:
我有一个模型所有products 的现有数据库,company 正在生产或消费。数据库很简单:
Table: companies {PK: company_id}
+------------+--------------+
| company_id | company_name |
+------------+--------------+
Table: products {PK: product_id}
+------------+--------------+---------------+
| company_id | product_id | product_price |
+------------+--------------+---------------+
现在,如果我需要向它添加location 信息,它开始变得复杂。
基本上,现在一个company 有很多locations,每个location 有很多products。
为了使事情更复杂,product 的一些属性例如price 在每个 location 上可能不同。我想分享其他共同属性locations(基本上,我想避免创建在所有三个位置都使用的产品 A 的三个副本)。
我不确定最好的建模方法是什么。我能想到
Table: company_location
+------------+-------------+
| company_id | location_id |
+------------+-------------+
Table: location_product
+-------------+------------+
| location_id | product_id |
+-------------+------------+
但是这种设计不允许product 属性随着location 而改变,除非为每个位置创建完全不同的产品。我也没有办法维护每个company 的主product 列表。
感谢任何帮助。
PS:我使用的是 postgreSQL 数据库
【问题讨论】:
-
注意:这几乎是 Chris Date 书中的活动扳手示例。
标签: database postgresql database-design relational-database entity-relationship