这个问题试图为这个问题找到一个实际的解决方案。
我的 SQL 数据库需要一个半模式少的设计。但是,我可以限制将其硬塞到整个 SQL 范式中的灵活性。迁移到无模式数据库可能是未来的一种选择,但现在,我坚持使用 SQL。
我在 SQL 数据库中有一个表(我们称之为Foo
)。当添加一行时,它需要能够存储任意数量的“元”字段。一个例子是能够附加任意元数据,如标签、合作者等。所有字段都是可选的,但问题是它们属于不同的类型。有些可能是数字,有些可能是文本等。
一个简单的设计链接Foo
到带有 , , , 等字段的表格似乎很直接OptionalValues
,尽管它下降到 Alex 在最后一个答案中提到的整个EAV模型中,而且看起来很浪费。另外,我想当它增长时,查询会很慢。不过,我不希望按此表中的任何内容进行搜索或排序。我所需要的是,当我从 中取出一行时,这些额外的属性也应该是可以获得的。name
value_type
value_string
value_int
value_date
Foo
在 SQL 数据库中实现这种设置是否有任何最佳实践,或者我只是错误地看待整个事情?