NoSQLは非常に幅広い分野です。これは、データの構造化方法についてまったく異なる概念を持つ、まったく異なる多くのデータベースシステムを対象としています。
データベースの正規化の教義は、主に従来のリレーショナルデータベースに適用されます。NoSQLデータベースがリレーショナル哲学から離れるほど、このドグマに疑問を投げかける必要があります。
正規化の哲学は、データベースのJOINが安価であることを前提としています。したがって、冗長性を排除するために複数のテーブルに分割できるデータはすべて分割する必要があります。ただし、これはすべてのNoSQLデータベースに当てはまるわけではありません。それらのいくつかはJOIN操作をサポートしていないため、多くの異なるデータベースエントリにデータを格納することは、データベースへの複数の連続したクエリまたは高価なデータベース側のコード実行を必要とする非常に高価な操作になる可能性があります。これらのデータベースの1つを使用する場合は、データが冗長になる場合でも、できるだけ少ないエントリを検索することで、パフォーマンスが重要なすべてのユースケースを満たすことができるようにデータを保存する必要があります。
JOINをサポートしない非リレーショナルNoSQLデータベースは、代わりにデータベースエントリの配列をサポートすることがよくあります。これらは通常、1:nの関係をモデル化するための好ましい方法です。したがって、1人の人がn個の電話番号を持っている場合、電話番号を別のテーブル/ドキュメント/コレクション/何を呼び出しても保存せず、人のエントリの配列に保存します。SQLが単一のフィールドの複数の値で適切に機能できない場合は、通常、電話番号を自立したエンティティとして処理する理由はありません。