我们正在为notes
进行新设计
我们为其他数据库表(persons
,stores
,items
)提供了三个选项,每个数据库表都与notes
相关联:
-
无关联表
-
notes
表格包含person_id
,store_id
,item_id
的单独列。三个中只有一个可以是非空的。
- 优势
- 更有效的连接(无关联表)
- 可以轻松确保仅与一个对象关联的单个笔记(防止未来的错误)
- 可以确保单个音符不会成为孤儿'没有引用它。
- 缺点
-
notes
的表格设计并不像许多列那样优雅(主观)
- 如果要将另一个对象与
notes
关联,则必须将列添加到现有表中
-
多个关联表
- 每个协会都有一张桌子
-
person_id / note_id
的一个表格
-
store_id / note_id
的一个表格
-
item_id / note_id
的一个表格
- 优势
- 在需要
notes
下一个对象 时,轻松添加新关联表
-
notes
表格不需要额外的列来显示单独的父母'
- 缺点
- 使用额外联接查找任何父级的
notes
,效果更差。
- 更多的关联表
-
单笔记组关联表
- 每个
note
都有一个note_group_id
;许多笔记都可以具有相同的note_group_id
-
person
表格中的每个persons
都有一个note_group_id
。 note
表格中与notes
相同的note_group_id
的每个stores
都属于该人。
- 同样适用于
items
和notes
。
- 优势
- 轻松为新的父级添加
note_group_id
- 只需添加notes
列。
-
notes
表格不需要额外的列来显示单独的父母'
- 单一关联表。
- 缺点
- 使用额外联接查找任何父级的
note
,效果更差。
- 查看数据库以跟踪{{1}}所属的父项
时更难
- 可能最容易产生未来的编码错误和孤立的笔记。
醇>
总体而言,人们会向这三个选项中的一个或多个提出建议,其数据库包含数百万个笔记。