1

我需要在数据库中表示以下信息(简化):

  1. 一套“账单”。(在表中Bills
  2. 一组“代表”。(在表中MPs
  3. 每个法案的作者。
    • 如果只有“代表”可以是作者,这将是一个简单的链接表,其中包含Bills和的外键MPs
    • 有一个(只有一个)其他“实体”也可以是法案的作者,因此:
      • 我可以重新定义NULL为“实体”,但这很难看。
      • 我可以简单地忘记 FOREIGN KEY 约束,但这更难看。

根据数据库理论,表示此信息的正确方法是什么?

linktable_authors有一个表格链接Bills和“代表”创作的“票据”是否合适MPs,而另一张表格authored_by_The_Entity仅用于“实体”创作的“票据”(如果我确定以后不会出现其他实体) )?

额外的问题:如果还有一个表“Other_Entities”并且“Other_Entities”和“Representatives”都可以是“Bills”的作者怎么办?

4

1 回答 1

1

使用 PK AuthorID定义实体Authors。将子实体代表其他实体的 PK 设置为AuthorID,以创建类型关系。为Authors添加属性AuthorType以区分子类型与冲突。将作者共有的所有属性放在Authors实体中。

顺便说一句:NULL 从不表示“其他已知值”。在其他一些选择中,它可以明智地表示“不适用”或“尚不知道”,但给它“一些其他已知值”的语义肯定是设计不佳的标志。

于 2013-04-20T14:36:57.817 回答