講義では、講師が主キーのないテーブルを見せてくれました。質問したところ、彼は3NFで推移的な依存関係を削除するときに、主キーのないテーブルがあっても問題ないと述べました。
ただし、主キーがないということは機能的な依存関係がないことを意味しますが、3NFは推移的な依存関係の削除であり、すべての機能的な依存関係のため、各テーブルには正規化のための主キーが必要であると教えられました。
主キーなしでテーブルを作成することは完全に可能ですが、そのテーブルが存在する場合、そのデータベースは正規化されていると見なされますか?
追加する必要があります、テーブルには「一意のキー」、プライマリ、コンポジット、外部はありません。
表示されているテーブルには3つの属性があり、どれもプライマリまたは一意としてラベル付けされていません。私はそれが間違いかどうか尋ねました、そして彼はそれがなくても大丈夫だと言いました。この表の情報を一意に特定できないため、私はその発言に疑問を呈し、彼はこのようにしてよいと主張しました。これは私が正規化について教えられたことに反しています。
リレーションにany候補キーがない(および主キーが候補キーの1つにすぎない)場合、重複する行がある可能性があります。実際それは関係ではありません! (関係は常にセットであるため)。
その場合、質問で行ったように、リレーションではなくテーブルと呼ぶ方がより正確であり、実際にはいくつかのRDBMSが非リレーションを管理できるため、この場合でも一意性の制約なしにテーブルを使用できます。非常にまれであり、データの操作時に問題(異常)が発生します。
しかし、この場合、正規形について話すことは適切ではありません。正規化理論はすべて、対象のオブジェクトが関係であるという基本的な仮定に基づいています、マルチセットではありません。実際、この理論は、データベースのすべての関係が、すべての関係のすべての属性を含む、そのような関係の投影のサブセットであると想定する(やや議論された)普遍的関係の仮定に基づいています。そして、そのオブジェクトは実際には関係(つまり、セット)であり、マルチセットではありません。
Relational Data Modelのデータについて話すとき、2つの用語、テーブルとリレーションを交換することがありますが、それらが実際に同義語であることを意味するわけではなく、正規化理論について話すとき、この違いは根本的なものです。本では、いくつかの通常の形が導入されているとき、それは常に次のように言われていることを覚えておいてください:
relationは、次の場合にxxx正規形になります...
3NFは、データ正規化の最初の3つのルールに準拠したテーブルを指します。
3番目のルールにはキーが必要です。そうです、講師のテーブルは3NFではありませんでした。