什么时候可以将多个关系存储为单个字段字符串而不是列

zsh*_*arp 0 database-design

如果我做标准的多对多表我可能会有500k XN!行.创建分隔的ID字符串并在检索时解析会更好吗?如果是这样,会有显着的性能差异吗?

Ode*_*ded 5

在列中保存多个值是错误的关系设计.

在单个字段中存储这样的关系会破坏第一个正常形式(最基本的形式).

其含义是:

  • 很难加入这个专栏
  • 难以正确索引此列
  • 很难更新此专栏
  • 很难在这个专栏上查询
  • 需求变化时难以扩展和使用

另外 - 对于大多数关系数据库而言,500k并不是那么多,特别是对于连接表.

因此,由于许多原因,将关系存储在单个分隔字段中会更糟糕.

关于性能 - 如果连接表被正确编入索引,您将看不到太多性能问题.使用单个字段,您需要为几乎所有操作解析字符串- 这不是关系数据库擅长的.

关系数据库针对通过这些表的关系进行了优化 - 以这种方式使用它们.