SQL模式设计:可变插槽与关联表

时间:2018-06-26 04:40:24

标签: sql database-design schema

我正在为一个尚未指定的SQL数据库设计一个架构。请考虑以下内容:

  • 网络可能包含许多设备
  • 设备可能连接到零个或一个网络

我看到了两个合理的设计,我想知道每个设计的优缺点:

三表方法:

network
  network_id

device
  device_id

connection
  network_id
  device_id

三表方法的优点是很容易将状态信息添加到连接中(例如,连接时间,端口号等)。缺点是,即使一台设备一次只能连接到一个网络,它也建议一个设备可以连接到多个网络(HABTM关系)。

两表方法:

network
  network_id

device
  device_id
  network_id (may be null if not connected)

两表方法的优点是它强制执行“连接到零个或一个”网络语义。缺点是,即使从逻辑上讲,设备本身并不是可变通的,但设备本身就变得可变了。

...

尽管三表方法具有隐式的HABTM性质,但我倾向于这样做,并使用更高级别的代码来实施“仪器只能加入一个网络”规则。

我的推理通过了吗?

1 个答案:

答案 0 :(得分:1)

device_id声明为连接表的键。这样一来,每台设备最多只能使用一个网络。