这个问题试图找到this question的实用解决方案。
我的SQL数据库需要一个半模式设计。但是,我可以限制将其软件化为整个SQL范例的灵活性。移植到架构较少的数据库可能是未来的选择,但是现在,我坚持使用SQL。
我在SQL数据库中有一个表(我们称之为Foo
)。当向其添加行时,它需要能够存储任意数量的“元”字段。一个例子是能够附加任意元数据,如标签,协作者等。所有字段都是可选的,但问题是它们是不同类型的。有些可能是数字,有些可能是文本等。
将Foo
与OptionalValues
表格相关联的简单设计,其中的字段包括name
,value_type
,value_string
,value_int
,{{ 1}}似乎是直接的,虽然它下降到整个EAV模型,Alex在最后的答案中提到它并且看起来很浪费。此外,我想象一下,当它增长时,查询会很慢。我不希望在这个表中搜索或排序任何东西。我所需要的只是当我从value_date
中获得一行时,这些额外的属性也应该是可以获得的。
是否有在SQL数据库中实现此类设置的最佳实践,或者我只是错误地查看整个内容?
答案 0 :(得分:1)
将字符串列“Metafields”添加到表“Foo”中,并将元数据存储为XML或JSON字符串。