在逻辑模型中,如何处理另一个属性的描述

时间:2013-06-04 06:55:35

标签: database-design

我有一个实体:Participantsparticipants的其中一个属性是Interest。有4个有效值(dbiahitother)。如果选择“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

我正在寻找允许的内容以及最佳实践,因为我有几个类似格式的实体。

1 个答案:

答案 0 :(得分:0)

我发现每个数据库设计都存在这种困境,根据我的经验,最好选择第一个选项并将所有内容放在同一个表中。它并不完美,因为你会为很多行提供空值,但它会使你的查询更容易和更快(你不必进行连接),会降低复杂性(少一个表)并且不会影响存储空间(如果你将另一列定义为varchar,那么如果它为null则不会占用任何空格。

对于一些复杂的情况,我会创建一个额外的表来实现1-0..1关系,但对于这个简单的情况,我会说最好只在主表中创建一个可为空的OtherDescription属性。

类似的讨论:

Normalization of an 1:1 or 1:0 relationship