数据属性表与许多小表相对应

时间:2010-10-20 19:52:06

标签: design-patterns database-design

我正在为一个客户端工作,该客户端目前有一个DataAttributes表,其中包含Name,Type,Value和ParentID列。此表用于存储几乎所有内容,例如美国州,解剖项目,组合框选择和系统设置。我真的很想摆脱这张桌子并将每个部分分成自己的表格。

这样做有利有弊吗?

3 个答案:

答案 0 :(得分:4)

这种方法抛弃了DBMS的许多功能。您无法使用数据库设计来强制实施数据完整性。一些例子:

  • 参照完整性(外键)
  • 域完整性(检查约束)
  • Nullability(NULL / NOT NULL)
  • 数据类型
  • 唯一性(唯一约束)
  • ...

我不确定是否有任何专业人士能够真正抵消这种缺点。

答案 1 :(得分:3)

这是一个称为EAV表的数据库反模式。它会产生性能问题,而且大多数时候都是一个非常糟糕的主意。

http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/

答案 2 :(得分:3)

优点 - 一个用户界面可用于维护整个系统中的任何内容

缺乏效率,潜在风险(例如腐败或意外删除可能会导致系统范围的后果)

另一方面,“如果没有破坏则不解决它”是一个非常好的规则。除非你遇到性能问题,否则这将成为你必须做的未来发展的障碍,现在重新设计它的成果是什么?