【发布时间】:2011-04-24 06:38:34
【问题描述】:
我必须设计一个模式来存储具有许多属性但很少有共同点的对象。
我在这里找到了一些解决方案,但我仍然不相信最好的办法。我看到了四种方法:
- 一张表有很多字段:这可能会导致很多
NULL值,并且在需要添加一些属性或修改一些数据类型时会遇到困难。 - 为每个属性创建一个新表:这使得添加和更新列变得容易,并保留了搜索功能,尽管每个
SELECT都会产生很多JOIN。 - 为每个 type 属性创建一个表,例如:标签、数量、间隔等。我不确定在这种情况下是否需要区分浮点数、小数、整数等。
- 创建抽象表(我在这里读到它称为观察模式),用于存储属性名称和数据类型。
我应该遵循哪些标准,我应该回答哪些问题才能在这些解决方案之间进行选择?
谢谢
【问题讨论】:
-
您是否考虑过为此使用document database 而不是关系?
-
“视情况而定。”对于“开发人员控制的架构”,我将继续使用 #1,除非有 已证明需要 走其他路线之一(将 volatile 用户定义的字典映射到表列通常是#1的双输,但考虑稀疏列等)。应该注意“亲吻”和“只做谨慎的事”。
标签: design-patterns database-design orm custom-fields