Schema较少的SQL数据库表 - 实用折衷

时间:2010-08-01 11:20:41

标签: sql schema-design schemaless

这个问题试图找到this question的实用解决方案。

我的SQL数据库需要一个半模式设计。但是,我可以限制将其软件化为整个SQL范例的灵活性。移植到架构较少的数据库可能是未来的选择,但是现在,我坚持使用SQL。

我在SQL数据库中有一个表(我们称之为Foo)。当向其添加行时,它需要能够存储任意数量的“元”字段。一个例子是能够附加任意元数据,如标签,协作者等。所有字段都是可选的,但问题是它们是不同类型的。有些可能是数字,有些可能是文本等。

FooOptionalValues表格相关联的简单设计,其中的字段包括namevalue_typevalue_stringvalue_int,{{ 1}}似乎是直接的,虽然它下降到整个EAV模型,Alex在最后的答案中提到它并且看起来很浪费。此外,我想象一下,当它增长时,查询会很慢。我不希望在这个表中搜索或排序任何东西。我所需要的只是当我从value_date中获得一行时,这些额外的属性也应该是可以获得的。

是否有在SQL数据库中实现此类设置的最佳实践,或者我只是错误地查看整个内容?

1 个答案:

答案 0 :(得分:1)

将字符串列“Metafields”添加到表“Foo”中,并将元数据存储为XML或JSON字符串。