我必须设计一个模式来存储具有许多属性但很少共同的对象。数据库设计 - 一个表中有许多字段,许多表中有一个字段或抽象表?
我在这里找到了一些解决方案,但我仍然不相信要做的最好的事情。我看到这样做的四种方式:
许多领域- 一个表:这可能会导致许多
NULL
值,以及一个很难的时候,需要来添加一些属性或modifiy一些数据类型。 - 为每个属性创建一个新表:这使得添加和更新列变得容易,并且保留了搜索功能,尽管每个
SELECT
都会导致很多JOIN
。 - 创建一个表中的每个物业类型,例如:标签,数量,间隔等我不知道在这种情况下,如果我需要区分浮动,小数,整数等
- 创建抽象表(我在这里读取它称为Observation Pattern),它存储属性名称和数据类型。
我应该遵循哪些标准,我应该回答哪些问题以在这些解决方案之间进行选择?
感谢
您是否考虑过使用[文档数据库](http://en.wikipedia.org/wiki/Document-oriented_database)而不是关系数据库? – Oded 2011-04-23 18:58:06
“这取决于”。除非有*证明需要*去其他路由之一(将* volatile *用户定义的字典映射到表列上,否则我会留在#1中作为“开发人员控制的模式”),通常是#1的输出,但考虑稀疏列等)。应该注意“亲吻”和“只做谨慎的事”。 – 2011-04-23 19:02:16