[英]Enforce unique constraint across rows in a user defined datatype column
假设您有一个数据库表,其中只有一列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>
现在假设您要在应用程序代码中强制执行完整性约束,即“ e-mail”列在所有行中都是唯一的,例如数据库UNIQUE约束。 如果我使用常规的数据库列来保存此内容,则数据库本身将为我解决此问题,但是当我现在使用此设计时,我必须自己完成此操作。
因此,我只是在这里问什么是在代码中完成此操作的正确方法。 以我的观点,唯一的方法是每次用户需要添加另一行更新时都阻塞整个表,该行的名称为现有行的“列”。
还有其他选择吗?
对于RDBMS(关系)数据库系统,这样做真的没有意义吗? 您的值是xml文档本身,如果您关心电子邮件作为值,它将具有自己的列。 它并不意味着您不关心它的独特性,这就是关系模型的全部要点。
使用postgres可以创建一个功能索引,但是我不确定这样做是否值得,除非这只是数据库的一个角落,而其余部分都是关系型的。
如果确实要这样做,那么有许多基于文档的数据库系统可能适合您的需求。 很难说更多,因为它们都有不同的目的,行为和跟踪记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.