データベースの正規化で第一正規化、第二正規化、第三正規化
がありますが
「第一正規化」では、データの重複をなくす事をする
「第二正規化」では関数従属をおこないxの値が決まればyの値が決まるのと同じように
あるキーが決まれば、他のキーも決まるようになること
「第三正規化」では関数従属をなくすと聞いたんですが、意味がわかりません
解釈としてはキー項目を2つ組み合わせてある項目を決めると解釈であってるでしょうか??
第一正規化と第二正規化はこの解釈でいいでしょうか??
バカな質問ですいません
データベースの正規化の理解に苦しんでいます
回答おねがいします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
まず、正確な定義を書いておきます。
「関係 (リレーション) がスカラ値のみを持ちうるとき、そのリレーションを第1正規形であるという。」
「あるリレーションが、第1正規形で、かつ、すべての非キー属性が、すべての候補キーに対して完全従属するとき、第2正規形であるという。」
「あるリレーションが、第2正規形で、かつ、非キー属性があるならば、それら全てが候補キーに非推移的に関数従属するとき、第3正規形であるという。」
となります。
まず、第1正規形では、表をフラットな形にすることを、目標とします。ここでフラットな形とは、繰り返し項目(配列)や構造体を持たないことを意味します。この段階では、キーに関する言及はありません。ただし、集合としての性質上、全てのレコードが一意に決定できる(重複がない)ことは必要です。
第2正規形では、候補キーへの「完全従属性」を求めます。これは、候補キーの一部だけが決まれば値が決まるという項目があってはいけないことを要求しています。完全従属性は、関数従属の特別な場合です。
そして、第3正規形では、「推移的な関数従属がない」ことを求めています。これは、Aが決まるとBがきまり、Bが決まるとCが決まる という関係です。つまり、Aが決まるとCが決まることになりますね。これが「推移的な」関数従属です。
例えば、「会員番号・氏名・支店コード・支店名」というテーブルを考え、会員番号を候補キーとしましょう。(つまり、会員番号は全社で一意な番号となっています。)会員番号が決まれば、氏名と所属する支店コードが特定できます。そして、支店コードが決まれば支店名が特定できます。この結果、会員番号が決まれば、推移的に支店名も特定できます。これが、推移的な関数従属です。
このテーブルが第2正規形は満たしていることに注意してください。候補キーは、会員番号のみですので、氏名・支店コード・支店名のいずれも、候補キーの一部分には関数従属していません。
さて、では、もう少し補足です。
>「第一正規化」では、データの重複をなくす事をする
すこし違いますね。データの重複がないことは集合としての条件で、正規化以前の話です。
>「第二正規化」では関数従属をおこないxの値が決まればyの値が決まるのと同じように
あるキーが決まれば、他のキーも決まるようになること
これも、少し残念。キーの一部分で決定できる項目がないようになることが目標です。
>「第三正規化」では関数従属をなくすと聞いたんですが、意味がわかりません
意味がわかったら、ある意味大変です。関数従属がなくなったら、データベースとして形をなしません。
なくすのは、「推移的な関数従属」です。「関数従属」を無くしてしまったら、データとしてのつながりがなくなる・・・つまり、テーブルとして存在しなくなってしまいます=^・・;=。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 最大エントロピー原理をpythonで実装したい 2 2022/06/21 13:10
- 社会学 日本政府は、片方では「少子化対策推進、少子化対策推進」と言いつつも、 その原因となっている、ここまで 3 2023/05/14 06:32
- 統計学 統計学 データサイエンスの問題 1 2023/01/22 20:16
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 統計学 統計学 二項分布の正規近似について 2 2023/02/10 11:58
- 労働相談 平等と自由 1 2022/08/20 23:47
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- その他(ニュース・時事問題) 本当に「異次元の少子化対策」??? 8 2023/04/01 22:13
- その他(社会・学校・職場) 非正規で生きていく人生について 6 2023/04/27 22:33
- 政治 私の憲法9条改正案はどうですか? これだったら改憲反対派も賛成してくれますか? 【9条】(平和主義) 3 2022/12/22 22:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本語のテーブル名、カラム名...
-
ORACLEでダミー行を作成したい
-
Accessから主キーの無いOracle...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessで数値型にNULLをInsert...
-
Accessのフィールド数が255しか...
-
Access テキスト型に対する指定...
-
ORACLEでLONG項目からCHAR項目...
-
ACCESSで和暦を西暦に・・・
-
他テーブルで一致する列から名...
-
Access IF文でテーブルに存在し...
-
作番ってどういう意味でしょうか?
-
Accessでテーブル名やクエリ名...
-
アクセス エラーを数値「0」に...
-
Accessの表形式のフォームについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
db2でisnumericは使えないので...
-
日本語のテーブル名、カラム名...
-
検索時にヒットしない
-
ACCESS2000:主キーに半角と全...
-
DB設計に要する見積もりについて
-
Accessから主キーの無いOracle...
-
各カテゴリの件数の計算方法に...
-
データベースでの質問です。
-
SQLServer2000のフィールドタイ...
-
「正規形」のよみかた
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Accessでコードを入れると名前...
-
Oracle 2つのDate型の値の差を...
-
Accessでテーブルの値をテキス...
-
Access テキスト型に対する指定...
-
作番ってどういう意味でしょうか?
-
セルの右クリックで出る項目を...
-
テーブルの存在チェックについて
おすすめ情報