我有一个实体:Participants
。 participants
的其中一个属性是Interest
。有4个有效值(db
,ia
,hit
,other
)。如果选择“other
”,我需要能够捕获该描述,而我似乎无法弄清楚最佳方法是什么?
我会为Participant Interest
设置一个具有上述4个值的验证规则。我可以在实体中放置描述(见下文),但我知道大多数响应将是前三个中的一个,还是应该创建一个单独的实体来捕获其他实体并与Participant
具有识别关系?
Participant
Participant ID
Participant First Name
Participant Last Name
Participant Interest {db, ia, hit, other}
Participant Other Interest Description
Other
Other Description
我正在寻找允许的内容以及最佳实践,因为我有几个类似格式的实体。
答案 0 :(得分:0)
我发现每个数据库设计都存在这种困境,根据我的经验,最好选择第一个选项并将所有内容放在同一个表中。它并不完美,因为你会为很多行提供空值,但它会使你的查询更容易和更快(你不必进行连接),会降低复杂性(少一个表)并且不会影响存储空间(如果你将另一列定义为varchar,那么如果它为null则不会占用任何空格。
对于一些复杂的情况,我会创建一个额外的表来实现1-0..1关系,但对于这个简单的情况,我会说最好只在主表中创建一个可为空的OtherDescription属性。
类似的讨论: