哪个是更好的数据库设计,为什么?

时间:2018-03-07 07:09:22

标签: database-design

如果你有两张桌子"清单"和" ChecklistItems"其中每个checklistItem都属于1个清单。

您是否希望使用外键引用"清单"在" ChecklistItems"表,还是会创建一个单独的表来定义清单和项目之间的连接?

示例:

class Checklist {
  public int ID; // Primary Key
  public String Description;
}

class ChecklistItem {
  public int ID; // Primary Key
  public String Description;
  public int ChecklistID; // Foreign key
}

OR:

class Checklist {
  public int ID; // Primary Key
  public String Description;
}

class ChecklistItem {
  public int ID; // Primary Key
  public String Description;
}

class ChecklistAndChecklistItem {
  public int ChecklistID; //  primary key 1 AND foreign Key constraint
  public String ChecklistItemID //  primary key 2 AND Foreign Key constraint;

}

你为什么这样做呢?

1 个答案:

答案 0 :(得分:4)

第一个。这是一个标准的一对多关系,所以它应该这样建模。

使用关联表的第二种方法由于多种原因而劣质:

  • 额外的表只占用额外的磁盘/内存空间。
  • 您的联接查询会变慢,因为您必须加入3个表而不是2个。
  • 您必须在关联表上指定其他约束,以表达关系的一对多性质。