P粉9482589582023-08-28 11:49:53
「その理由の一つは怠惰です。」
これは警鐘です。このようなことをすべき唯一の理由は、それを「正しい方法」で行う方法を知っている場合ですが、それを行わない明確な理由があると結論付けている場合です。
そうは言っても、この方法で保存することを選択したデータが、クエリを実行する必要がないデータである場合は、選択した方法で保存することもできるかもしれません。
(一部のユーザーは、前段落の私の発言に異議を唱え、「将来どのような要件が追加されるか分からない」と主張します。これらのユーザーは、誤った情報を与えられているか、宗教的信念を表明しているかのどちらかです。時には、ハードワークが前に有利になることがあります。必須です。)
P粉5459565972023-08-28 09:02:45
第一正規形に違反することに加えて、重複するグループ値列や単一の値に格納されるカンマ区切りリストには、他にも多くの実用的な問題があります:
:]]'<:]]2[[:> または MySQL 8.0 の場合:
idlist REGEXP '\\b2\\b'
李>リスト内の要素を数えたり、他の集計クエリを実行したりするのは困難です。 カンマ区切りリストは間違っているので、これを私の本の最初の章にしました:
SQL アンチパターン、第 1 巻: データベース プログラミングの落とし穴の回避。
非正規化が必要な場合もありますが、@OMG Ponies が言及したように、これらは例外です。リレーショナル以外の「最適化」は、データの他の用途を犠牲にして、あるタイプのクエリに利益をもたらすため、非正規化に値するように特別な処理が必要なクエリを必ず把握してください。