假设您有一个只有一列xml类型的数据库表来保存用户定义的数据类型的各种键/值对,例如:
第1行:
<column>
<name>id</name>
<value>1</value>
</column>
<column>
<name>e-mail</name>
<value>abc1@abc.com</value>
</column>
第2行:
<column>
<name>id</name>
<value>2</value>
</column>
<column>
<name>e-mail</name>
<value>abc2@abc.com</value>
</column>
现在假设您要在应用程序代码中强制执行“电子邮件”的完整性约束。列在所有行中都是唯一的,就像数据库UNIQUE约束一样。如果我使用常规数据库列来保存它,数据库本身会为我处理这个问题,但是因为我现在使用这个设计,所以我必须自己做。
所以,我在这里问一下在代码中实现这一目标的正确方法。在我看来,唯一的方法是每次用户需要添加另一行更新名称&#39;现有的一行。
还有其他选择吗?
答案 0 :(得分:0)
使用RDBMS(关系型)数据库系统,这样做真的没有意义吗?您的值是xml文档本身,如果您关注电子邮件作为值,它将拥有自己的列。它并不意味着你不关心它是唯一的 - 这是关系模型的重点。
使用postgres你可以创建一个功能索引,但我不确定它是否值得给它带来麻烦,除非这只是你数据库的一个角落而其余部分是关系型的。
有许多基于文档的数据库系统可能适合您的需求,但这确实是您想要做的。很难说更多,因为他们都有不同的目标和行为以及跟踪记录。