データのセットがあるとします。データと関係スキーマが与えられた場合、データのセットはいずれかの形式で正規化されていると想定できます。私の意見では、与えられた生データは何らかの形式に正規化する必要があります。しかし、友人との話し合いの結果、ここでこの質問をするようになりました。
質問をさらに詳しく説明すると、リレーションまたはテーブルの機能的な依存関係のセットが与えられた場合、テーブルが少なくとも 1NF にあることが保証されていると言えます。
データのセットがあるとします。データと関係スキーマが与えられた場合、データのセットはいずれかの形式で正規化されていると想定できます。私の意見では、与えられた生データは何らかの形式に正規化する必要があります。しかし、友人との話し合いの結果、ここでこの質問をするようになりました。
質問をさらに詳しく説明すると、リレーションまたはテーブルの機能的な依存関係のセットが与えられた場合、テーブルが少なくとも 1NF にあることが保証されていると言えます。
SQL モデルでは、真のリレーションではないテーブル (たとえば、重複する行を含むテーブル) が許可されます。したがって、SQL データベースが常に正規化されているとは限りません。データベースを扱っているほとんどの人は、キーのないテーブルの例に出くわしたことがあると思います。
私の経験では、実生活では、完全に正規化されたものから、データベースでは言うまでもなく、どこにも見られないような奇妙なものの完全な寄せ集めまで、スペクトル全体にまたがるデータベースに出くわします。
確かに、1NF (おそらく最も「基本的な」正規化形式) でさえデータを見つけることは期待できません。
また、正規化されたデータがデータベース設計の「目標」であるべきだと言っているわけではありません。クリーンな設計をパフォーマンス基準と比較検討する必要があり、完全に正規化されたデータベースはパフォーマンス基準に反することがよくあります。
いいえ、生データは必ずしも 1NF で正規化されているわけではありません。スキーマによって異なります。1NFにもないスキーマ設計があり得る。
例を挙げましょう。すべての学期の学生の成績を格納するテーブルがあるとします。各学期の学生 ID は 5 です。Marks のスキーマを次のように仮定します。
Marks(studentid,marks)
値が繰り返されるため、このテーブルは 1NF ではありません。
SOに関する別の会話を紹介します。