【发布时间】:2021-12-09 00:08:39
【问题描述】:
我有三个实体Plan、Feature、Sensor,用表表示,结构相同,如下所示:
[Entity]
--------
Id (int)
Name (varchar)
每个实体通过一对多关系链接到另一个:
每个计划可以有多个功能
每个功能可以有多个传感器(请注意,不同的功能可能有共同的传感器,但有不同的要求级别 - 可选/强制)
此数据将在用户选择计划并最终显示所需传感器列表的应用程序中使用。
设计问题 #1:
我首先想要一个表格来描述 Plan 和 Feature 之间的关系,而我的想法是有一个表格:
PlanFeatures
--------------
PlanId (int)
FeatureId (int)
Required (bit)
如果我有一个 Required 列,那么我实际上需要为 PlanId 和 FeatureId 的每个组合记录。另一种方法是仅在存在 PlanId 和 FeatureId 组合时添加记录。哪个更好?
设计问题 #2
与 #1 类似,我想要一个表格来描述 Features 和 Sensors 之间的关系,唯一的区别是 Sensor 可能不是必需的/可选/强制。所以想法是有一个如下表:
FeatureSensors
--------------
FeatureId(int)
SensorId(int)
RequirementLevel(int)
至于 #1,我在质疑是否需要为 FeatureId 和 SensorId 的每个组合记录,如果不需要,那么我只需将 0 用于 RequirementLevel ,否则我只有可选(1)或强制(2)的记录。
我是走在正确的道路上还是有更好的方法来构建这些数据?
【问题讨论】:
-
一个
Feature可以属于多个Plan吗?如果没有,那么您无论如何都不需要另一张桌子。如果是,我建议仅在需要存在时才拥有记录,并且没有Required。在第二种情况下:同样的问题。我只建议Optional和Mandatory级别
标签: sql sql-server database-design