作为对所需内容的描述的一部分,客户要求能够添加要保存的属性 我有两个想法如何做到这一点:
答案 0 :(得分:1)
这是一个很难问的问题。
如果您的客户端数据真正或有效地无模式 - 即每行记录的属性可能会因每行不可预测而变化 - 那么关系模型在这种情况下并不合适,您需要查看不同的解决方案 - 也许是NoSQL,或者是面向文档的。
如果您的客户真的在说“我希望以后能够为数据模型添加属性,而我现在还不想对这些属性做出决定”,但它基本上是一个关系数据模型,您可以考虑自动化模式生成过程;这很痛苦,但在Ruby on Rail中,有一个Active Record模式迁移的例子。可能有一个已建立的编程语言库。
如果您的客户说“我们有这个固定的数据核心,但是根据具体情况,我们希望添加我们现在无法描述的其他数据”,那么我会选择XML / Jason / YAML样式记录,附加到核心关系记录。大多数数据库引擎现在本身都支持XML,包括通过XPath等进行查询。
根据我的经验,关系模型中包含的XML文档提供了很大的灵活性和合理的性能;编程模型有点尴尬,但在大多数情况下远不如EAV笨拙。