试图了解各种表之间的DB关系方法

时间:2017-02-11 07:14:39

标签: mysql database database-design orm foreign-keys

需要知道DB结构是否准确? 让我们说客户/产品/ product_events

每个客户可以拥有多个产品,但产品不能有多个客户,每个产品也可以有多个活动

所以这就是我的例子

customers           products                            product_events
-----------     ------------------------------      ------------------------
id | name           id | customer_id | name             id | product_id | event_title

因为我猜这是一个=>很多关系

但是这里可能有大量的产品,其中一些或者说很多产品(产品)可能没有分配给客户(换言之,不会销售给客户)

因此,保持产品清单和客户产品列表分离是一件好事 是否有任何中间表来定义产品与客户的关系?

那么这个结构怎么样

customers           products        customer_products                   
-----------     ---------------     ------------------------------      
id | name           id | name       id | customer_id | product_id   

product_events
---------------------
id | product_id | event_title

对于这些结构的大多数使用,将是特定客户的产品事件的获取列表

2 个答案:

答案 0 :(得分:1)

customer_id表中有products列意味着只有一个客户可以拥有特定产品 - 例如,您和我都不能同时购买相同型号的笔记本电脑听起来不错。

拥有中间customer_products表听起来是正确的方法。

答案 1 :(得分:0)

考虑"客户"和"产品"表有两个表之间的多对多关系。因此,您需要创建第3个表来维持关系。第三个表应包括两个关系表的两个主键和因关系而为骨的其他属性。 第三个表主键应该是关系表中两个键的组合。