3

这个问题试图为这个问题找到一个实际的解决方案。

我的 SQL 数据库需要一个半模式少的设计。但是,我可以限制将其硬塞到整个 SQL 范式中的灵活性。迁移到无模式数据库可能是未来的一种选择,但现在,我坚持使用 SQL。

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

一个简单的设计链接Foo到带有 , , , 等字段的表格似乎很直接OptionalValues,尽管它下降到 Alex 在最后一个答案中提到的整个EAV模型中,而且看起来很浪费。另外,我想当它增长时,查询会很慢。不过,我不希望按此表中的任何内容进行搜索或排序。我所需要的是,当我从 中取出一行时,这些额外的属性也应该是可以获得的。namevalue_typevalue_stringvalue_intvalue_dateFoo

在 SQL 数据库中实现这种设置是否有任何最佳实践,或者我只是错误地看待整个事情?

4

1 回答 1

1

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

于 2010-08-01T11:29:14.650 回答