PostgreSQL选项的建议与三个选项之间的通用备注功能

时间:2018-02-01 22:37:33

标签: postgresql performance database-design

我们正在为notes

进行新设计

我们为其他数据库表(personsstoresitems)提供了三个选项,每个数据库表都与notes相关联:

  1. 无关联表

    • notes表格包含person_idstore_iditem_id的单独列。三个中只有一个可以是非空的。
    • 优势
      • 更有效的连接(无关联表)
      • 可以轻松确保仅与一个对象关联的单个笔记(防止未来的错误)
      • 可以确保单个音符不会成为孤儿'没有引用它。
    • 缺点
      • notes的表格设计并不像许多列那样优雅(主观)
      • 如果要将另一个对象与notes关联,则必须将列添加到现有表中 Option 1
  2. 多个关联表

    • 每个协会都有一张桌子
      • person_id / note_id
      • 的一个表格
      • store_id / note_id
      • 的一个表格
      • item_id / note_id
      • 的一个表格
    • 优势
      • 在需要notes下一个对象
      • 时,轻松添加新关联表
      • notes表格不需要额外的列来显示单独的父母'
    • 缺点
      • 使用额外联接查找任何父级的notes,效果更差。
      • 更多的关联表 Option 2
  3. 单笔记组关联表

    • 每个note都有一个note_group_id;许多笔记都可以具有相同的note_group_id
    • person表格中的每个persons都有一个note_group_idnote表格中与notes相同的note_group_id的每个stores都属于该人。
    • 同样适用于itemsnotes
    • 优势
      • 轻松为新的父级添加note_group_id - 只需添加notes列。
      • notes表格不需要额外的列来显示单独的父母'
      • 单一关联表。
    • 缺点
      • 使用额外联接查找任何父级的note,效果更差。
      • 查看数据库以跟踪{{1}}所属的父项
      • 时更难
      • 可能最容易产生未来的编码错误和孤立的笔记。 Option 3
  4. 总体而言,人们会向这三个选项中的一个或多个提出建议,其数据库包含数百万个笔记。

0 个答案:

没有答案