SQLXML 是否打破 1NF?

Does SQLXML breaks 1NF?

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

我假设 SQLXML 可以打破 1NF 是错误的吗?

谢谢,

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

Oracle、DB2 和 Microsoft SQL 服务器并不是真正的关系型,但并不总是忠实地表示关系和关系操作。例如 SQL 服务器不支持 XML 值之间的比较,这意味着如果 x 是 XML,则像 σ(x=x)R 甚至 π(x)R 这样的操作是不可能的柱子。我还没有对 DB2 和 Oracle 进行过同样的尝试。由于 XML 被实现为 "special" 数据,而这些数据的行为与我们期望的数据在关系中的行为不同,因此是否可以恰当地说此类表满足 1NF 尚无定论。考虑到这些限制,我认为重要的问题是您选择的 DBMS 中的专有 XML 类型是否真的适合您的目的。

SQL standard defines in its part 14 the XML data type, its semantics and functions around that data type ("SQL/XML")。您可以 "legally" 在 XML 列中存储几个字节,或者将整个数据库填充到单个 XML 值中。对用户来说,是的,它打破了经典的数据库设计。但是,如果数据库的其余部分是 1NF 并且 XML 类型的列仅用于某些特殊的有效负载(应用程序数据、配置、法律文档、数字签名,...)它们是绝妙的组合。

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