我正在为一个客户端工作,该客户端目前有一个DataAttributes表,其中包含Name,Type,Value和ParentID列。此表用于存储几乎所有内容,例如美国州,解剖项目,组合框选择和系统设置。我真的很想摆脱这张桌子并将每个部分分成自己的表格。
这样做有利有弊吗?
答案 0 :(得分:4)
这种方法抛弃了DBMS的许多功能。您无法使用数据库设计来强制实施数据完整性。一些例子:
我不确定是否有任何专业人士能够真正抵消这种缺点。
答案 1 :(得分:3)
这是一个称为EAV表的数据库反模式。它会产生性能问题,而且大多数时候都是一个非常糟糕的主意。
http://www.simple-talk.com/opinion/opinion-pieces/bad-carma/
答案 2 :(得分:3)
优点 - 一个用户界面可用于维护整个系统中的任何内容
缺乏效率,潜在风险(例如腐败或意外删除可能会导致系统范围的后果)
另一方面,“如果没有破坏则不解决它”是一个非常好的规则。除非你遇到性能问题,否则这将成为你必须做的未来发展的障碍,现在重新设计它的成果是什么?