SQLXML会破坏1NF吗?

时间:2016-06-15 15:01:17

标签: sql-server oracle database-design db2 sqlxml

我看到Oracle,DB2和SQL Server包含一个新的列XML。我正在使用DB2进行开发,如果xml包含列表,您可以从数据库设计中打破1NF。

假设SQLXML可以破坏1NF我错了吗?

谢谢,

2 个答案:

答案 0 :(得分:7)

关系模型与类型正交,对类型复杂性没有特别限制。类型可以是任意复杂的,可能包含文档,图像,视频等,只要包含该类型的关系支持所有关系操作。 First Normal Form实际上只是关系模式的定义,所以原则上XML类型是1NF允许的。

但是,Oracle,DB2和Microsoft SQL Server并不是真正的关系,并不总是忠实地代表关系和关系操作。例如,SQL Server不支持XML值之间的比较,这意味着如果x是XML列,则不可能执行σ(x = x)R或甚至π(x)R等操作。我没有尝试过DB2和Oracle。由于XML被实现为“特殊”数据而不像我们期望数据在关系中表现的那样,因此这些表是否可以恰当地说满足1NF是没有意义的。考虑到这些限制,我认为重要的问题是您选择的DBMS中的专有XML类型是否真的适合您的目的。

答案 1 :(得分:1)

SQL standard在其第14部分中定义了XML数据类型,其语义和围绕该数据类型的函数(“SQL/XML”)。您可以“合法地”在XML列中存储少量字节,或将整个数据库填充到单个XML值中。这取决于用户,是的,它打破了经典的数据库设计。但是,如果数据库的其余部分是1NF,并且XML类型的列仅用于某些特殊的有效负载(应用程序数据,配置,法律文档,数字签名......),那么它们就是一个很好的组合。

已经有其他数据类型和SQL功能可以打破1NF。与上述相同,由用户决定。