2017-03-04 1 views
0

MySQL supports JSONデータ型。 フィールドのアトミック性のために1NF ruleに違反していますか?そうでなければ、それはどのように正当化されますか?MySQLの1NF違反

答えて

1

はい、それは1NFと2NFに違反しています(おそらく他の標準形もそうですが、私は決して頭を丸くすることはできません)。

しかし、リレーショナルDBMSは、不透明なブロブとしても小さなデータを格納するのに非常に便利な場所です。これは、同時アクセス、承認、レプリケーション、注釈を制御するためのメカニズムを提供します。

JSONは単に特殊な書式設定の文字列であるため、ほぼすべてのDBMSがサポートしているため、MySQLはBLOBの内容を検査するための限定されたスコープを提供します。

3

データ型(jsonだけでなく)が1NFに違反するかどうかは、データ型自体だけでなく、rdbms内でのデータの使用方法によって異なります。ただし、データ型は、1NFに違反する形でデータを格納するためにデータ型が使用される頻度に影響します。 Jsonは、固有の構造を持つ複雑なデータ型であり、1NFに違反する形で使用される可能性が非常に高いです。

私は、この質問の決定的要因としてデータを使用することによって、私が意味するものを少し広げてみましょう。

1NF上のWikipediaの記事は、アトミックの解釈の周りにあいまいさを説明section on atomicityがあります

アトミックの概念は、「絶対的な意味を持ちません:[10]の値は、いくつかのために、原子 を考慮することができます目的は、他の目的のために、より基本的な要素の 集合体と考えることができる。これは、

その特定のJSONフィールドは、データベース層でその内部構造を忘れ原子方法で扱われている場合1NFに違反することはありません。

しかし、データベースが特定のjsonフィールドの内部構造(たとえば、その内部の検索)を認識しなければならない場合、データベースは1NFに違反します。

アナログを提供するには、varcharフィールドに格納されている文字列は、ほとんどのユーザー(ゼウス理論家を除いて)のアトミックとみなされます。しかし、区切り値(またはjsonまたはxml)を格納し、そのデータベース層がそのようなフィールドの内部構造を認識していなければ、varcharフィールドでも1NFに違反する可能性があります。

+0

熱心な理論家は、「[原子](http://stackoverflow.com/a/24038895/3404097)」と言っても意味のない無意味なファジィ化であり、「1NF」はあまり意味がない「原子」に関していくつかを含む多くの異なるもの。そうでなければ、あなたは、あなたが定量化したいデータベース状態のどの部分も属性でなければならないとあなたに同意するでしょう。 PSそのwikiの記事は混乱です。 – philipxy