我正在为一个尚未指定的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性质,但我倾向于这样做,并使用更高级别的代码来实施“仪器只能加入一个网络”规则。
我的推理通过了吗?
答案 0 :(得分:1)
将device_id
声明为连接表的键。这样一来,每台设备最多只能使用一个网络。