如何设计1:1和1:M的关系

时间:2014-01-01 15:41:22

标签: database database-design data-modeling

我有以下情况:
- 一个客户可以拥有一个服务 - 一项服务可以在不同的地方进行

我想在服务名称更改时使用规范化(因此一个客户应该有一个FK到Service表?)。我无法想象在这种情况下如何保持1:1(我24小时醒来,几乎没想到但需要完成它)

我问我已经在这里读过,1-1总是一个表,一个对象。但我相信情况并非如此,例如在我给出的示例中 - 客户只有一个服务,但服务名称可能会更改,因此将FK引用到服务中的客户表是否正确?

1 个答案:

答案 0 :(得分:1)

  

一个客户可以拥有一个服务

“可以”暗示0:1的关系。您将可引用的外键引用到Customer行中的Service表行。

  

一项服务可以在不同的地方进行

对于n:m关系,其中n可以是1,您创建一个junction table,其中包含Service表和Place表的键。

ServicePlace
------------
Service ID
Place ID

主(群集)密钥是服务ID和地方ID。如果某个地方可以有多个服务,您还可以在地点ID和服务ID上创建索引。

相关问题