答案 0 :(得分:3)
这取决于数据在rdbms中的使用方式,而不仅仅取决于数据类型本身,是否有任何数据(不仅仅是json)违反了1NF。但是,数据类型会影响数据类型以违反1NF的方式存储数据的频率。 Json是一种具有内在结构的复杂数据类型,很可能以违反1NF的方式使用。
让我向我展示一下这个问题中使用数据作为决定性因素的意思。
关于1NF的维基百科文章有section on atomicity,它描述了解释原子性的模糊性:
原子性的概念没有绝对意义“:[10]一个值可能是 出于某些目的被认为是原子的,但可以被认为是 用于其他目的的更基本元素的组合。
这意味着如果特定的json字段以原子方式处理,而忽略了数据库层中的内部结构,那么它就不会违反1NF。
但是,如果数据库必须知道特定json字段的内部结构(例如在其中搜索),那么它会违反1NF。
为了提供模拟,存储在varchar字段中的字符串将被大多数用户视为原子(除了zelous理论家)。但是如果存储分隔值(或者json或xml)并且数据库层必须知道这样的字段的内部结构,那么即使varchar字段也可能违反1NF。
答案 1 :(得分:1)
是的,它违反了1NF和2NF(也许是其他普通形式,但我永远无法理解它们)。
但是关系型DBMS是存储小块数据的非常有用的地方 - 即使是不透明的blob。它提供了控制并发访问,授权,复制,注释的机制......
由于JSON只是一个具有特殊格式的字符串,几乎所有DBMS都支持它,MySQL只是提供了有限的范围来检查BLOB的内容。