データベースの正規形を解説

このQ&Aのポイント
  • データベースの正規形についての問題について解説します。
  • 問題の表における従属性を考えながら、正規形を判断する方法について説明します。
  • 第2正規形と第3正規形の違いについてのアドバイスをお願いします。
回答を見る
  • ベストアンサー

【データベース】 正規形を答える問題

正規形を答える問題で悩んでいます。 次のような問題です。 属性{A,B,C,D}をもつ表に対して、次の二つの従属性が見られる。 (1)A,B → C,D (2)C→B この表の正規形は何か。 第2正規形か第3正規形で迷っています。 第2正規形の条件を満たす理由は 候補キーは{A,B},{A,C}で どの候補キーも非キー属性に対して完全関数従属だからです。 その後、非キー属性が候補キーに対して推移的に関数従属していないかを考えたのですが、「おそらくしていない…」というくらいで第3正規形であると確証ができません。 確証ができない理由が一つあります。 実際の業務でこのテーブルをつくるときに、 {A,C}→D, C→Bを利用して、  ACD とCBの二つの表に分けると思うからです。 うまく分けられるってことは第2正規形だからかな…と考えてしまいます。 アドバイスいただけないでしょうか… よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#75656
noname#75656
回答No.1

答えは、第3正規形です。 この表には、部分関数従属性も、推移関数従属性も持たないからです。 この形は、ボイスコッド正規形で表せます。 なぜ、{A,C}→D, C→Bになると思ったのですか?

参考URL:
http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_2.html#6
ilnmfay
質問者

補足

早急な回答ありがとうございました。 第3正規形ですよね。 {A,C}→D,C→Bになると思った理由ですが、 AとCが決まれば、C→BよりBが決まるため、 {A,C}→Bが言えて、仮定の{A,B}→C,Dより AとBが決まれば、Dが決まるので、 {A,C}→{A,B}→Dが成立するからです。 紹介していただいたURLの内容を読んでわかったのですが、 私がABCDをACDとCBに分けたのは ボイスコッド正規形に 分解したことと同じことのようです。 ボイスコッドについて勉強不足だったため、上記のような疑問 が生じたのです。 回答ありがとうございました。 参考URLまでつけていただき、大変助かりました。

関連するQ&A

  • データベースの関係の正規化の問題です

    データベース設計者が関係R(A,B,C,D,E, F,G) に対し,次の関数従属性を定義した.ここで,関係R は第1 正規形として与えられたものとする.関係R の第3 正規形はどれか? 関数従属性: A → D, C→E, C → G, EG → F (A) {A,B,C,D}, {E, F,G} (B) {A,B,C}, {D,E,G}, {F} (C) {A,B,C,D,E,G}, {D, F} (D) {A,B,C,D,E,G}, {E, F,G} (E) None of these ご回答よろしくお願いいたします。

  • 正規化について

    データベースを勉強していて、正規化についての問題についてお聞きしたいです。とりあえず問題をまず書いてその後自分の考えたことを述べます。以下問題です。 いま表R(A,B,C,D)があり、 Aの列の値が(a1,a2,a3,a4,a4) Bの列の値が(b1,b2,b1,b2,b3) Cの列の値が(c1,c2,c1,c3,c4) Dの列の値が(d1,d2,d1,d2,d3) となっている。 1.このとき、表Rで成り立つ関数従属を選べ。 (1)A→CD(2)B→D(3)BC→A(4)AB→CD(5)D→A 2.表Rは第一正規形であるか? 3.表Rは第二正規形であるか? 4.表Rは第三正規形ではないが、この表Rを第三正規形になるような二つの表に分割せよ。 1.について 考え方がいまいちわからないのですが、自分で考えてみて、正解は(2)のB→Dかなと思ったのですが、どうやら正解は(2)と(4)っぽいのです。 これはどのように考えたらよいのでしょうか? 社員番号、とか社員名とかいう具体的な値ならまだわかるのですが、a1とかb1とかいう値のときにどのように考えたらいいのかがわかりません。 2.について これは第一正規形でよろしいですよね? 3.について これはもし1.の正解が(2)のB→Dであった場合、R1(A,B,C),R2(B,D)と分割できるので第二正規形ではないと考えました。答えはわかりません。 4.について 第三正規形と第二正規形の違いがわからないのでぜんぜんわかりません。 以上についてわかる方いらっしゃいましたら教えてください。よろしくお願いします。

  • また正規形について。

    http://www.techscore.com/tech/sql/16_02.html のURLの下の方の表 受注番号、商品番号、納入業者 12345  001   業者 A 12345  002   業者 B 12346  001   業者 A 12347  001   業者 D において、 ****以下引用**** このとき、非主キー列「納入業者」は「受注番号」と「商品番号」から決まりますので、(受注番号、商品番号) →納入業者は関数従属の関係が成立しています。よって、このテーブルは第二正規形の条件を満たしていると言えます。(中略) ****引用終わり**** とありますが、私には 商品番号→納入業者 という関数従属関係があるきがするのですが違うのでしょうか?なので第二正規形の時点で、 (商品番号、納入業者)という表が新たに分離される気がするのですが… さらに、 http://www.st.rim.or.jp/~ryoma/tips/seikika.htm のURLの同じくボイスコッド正規形で扱われ表、 商品コード、仕入先コード、担当者コード 000120001 111 401 000120001 112 402 000120002 111 401 000120002 150 403 仕入先コード、仕入先名 001 東京商店 002 大阪商会 003 名古屋流通 で、 *引用* 商品コード、仕入先コード、担当者コードを属性とする上の表は、繰り返し部分を持たず、また商品コード+仕入先コード、あるいは商品コード+担当者コードをキーとすることができ、かつ推移従属の関係が存在しないため、第三正規形です。 *終* とありますが、主キーを【商品コード、仕入先コード】と決めたとき、非候補キーである担当者コードは仕入先コードに関数従属している気が(私は)してしまうので第二正規形へ変形した時点で(仕入先コード、担当者コード)という表が分離されていると思うのですが。 以上の解釈で間違っている考えがあればご指摘ください。

    • ベストアンサー
    • MySQL
  • 第3正規化とは何でしょうか

    データベースの第三正規化がよく分かりません。 第二正規化との違いがよく分かりません。 第2→主キーの一部に従属する項目を分離 第3→主キーに従属しない項目を分離 という説明があったり (このテキストでは、主キーを常に複合キーとしているようであり、その複合キーの(2つとして)どちらかを主キーとする表をつくるのが2で、その複合キーのどちらとも関係しない列を主キーとする表を3としているようなのですが、そもそも主キーは複合キーとは限らないはずだと思うのですが・・) 別のテキストでは(ある基本情報技術者試験のテキスト) 第2→関数従属 第3→推移的関数従属 という説明があったりします(推移的関数従属というのをネットで調べてみましたが、その概念がここでどう当てはまるのか分かりません) このへん教えていただけませんでしょうか? あるいは、分かりやすくある程度体系的に教えているページや本があれば教えてください。

  • データベースでの質問です。

    データベースの正規化で第一正規化、第二正規化、第三正規化 がありますが 「第一正規化」では、データの重複をなくす事をする 「第二正規化」では関数従属をおこないxの値が決まればyの値が決まるのと同じように あるキーが決まれば、他のキーも決まるようになること 「第三正規化」では関数従属をなくすと聞いたんですが、意味がわかりません 解釈としてはキー項目を2つ組み合わせてある項目を決めると解釈であってるでしょうか?? 第一正規化と第二正規化はこの解釈でいいでしょうか?? バカな質問ですいません データベースの正規化の理解に苦しんでいます 回答おねがいします。

  • データベース設計

    今まで、サンプルデータを元にselect文の使い方を主に勉強していたのですが、突然データベース設計のレポートを出題されました。 同時に、自分で設計したレポートで意味のあるいろいろなselect文を実行してみる。と言うのも課題なのですが、こちらは何とかなるとおもうのですが、設計がよく分かりません。 課題の内容は以下の通りです。 1.1 ER図 1.2 スキーマ定義とドメイン制約 1.3 想定表における関数従属性、多値従属性、結合従属性 1.4 想定表における候補キーの算出 1.5 想定表における第3正規形判定と分解 1.6 外部キーの説明 具体的にどのように設計していけばよいか、各項目でなにをしなければいけないのか等、参考になるコトを教えてください。 授業の配付資料を読み直してみたのですが、ER図やスキーマ・ドメインなど、出てきてないようです。

  • ベクトルの問題です。

    ベクトルについて、ご教授頂けますでしょうか。 お時間頂いて申し訳ありませんが、ご回答のほど、よろしくお願い致します。 以下の問題になります。 (1)Vを実ベクトル空間とし、a,b,c,dをVに属するベクトルとする。 a,b,cが線形従属であるとき、a,b,c,dも線形従属であることを、定義に従い示せ。 (2)4つのベクトル a=(1, -1, 0, 0 ),b=(1, 0, -1, 0 ),c=( 1, 0, 0, -1 ),d=( 0, 1, -2, 1 ) について、それらが線形従属であるか理由を述べ、判断せよ。 可能でありましたあら、途中の計算等も教えて頂けると助かります。 申し訳ありません。

  • 第1正規形から第2正規形へ

    正規化についてお聞きしたいです。 大学の図書館の本の貸し借りのデータベースで 現在第1正規化した↓のテーブルがあるのですが 本の貸借 学生ID|学生氏名|学部|学部棟 | 図書番号|出版社|本のタイトル 111   山田花子 経済  102B   100122  A社  経済白書  222   小林武  理学  201C   200021  D社  人間失格 555   鈴木一郎 文学  301D   103455  D社  走れメロス  555   鈴木一郎 文学  301D 204333  B社  バカの壁 666   沢井竹子 経済  102B   104444  C社  雑学無駄知識 (図書番号は重複がないものとする。) これを第2正規形に正規化した場合 学生ID(主キー)|学生氏名|学部|学部棟 学生ID(主キー)|図書番号(主キー)|出版社|本のタイトル ↑のように2つの表に分ければ良いのでしょうか? まだ完全に第2正規化を理解できていないので みなさんもし宜しければ力を貸してください。 学生ID(主キー)|学生氏名|学部|学部棟 学生ID(主キー)|図書番号(主キー)|出版社|本のタイトル

  • 集合の問題

    集合A、B、Cがある。 この時、「BがAの部分集合であり、CがAに関数従属すれば、CはBに関数従属する。」は間違いであるそうなのですが、例えば、ABCがどんな集合のときに間違いなんですか? 上記文が真である例しか考えられません。 例えば、A:都道府県、B:関東の都道府県、C:面積です。

  • 第4正規系を説明する文章は、どちらだと思いますか?

    【データベース】第4正規系を説明する文章は、どちらだと思いますか? a) リレーションスキーマR中の結合属性*(X1, X2, X3,...,Xn)が自明な結合従属性であるか各XiがRのスーパーキーである場合に成り立つ b) リレーションスキーマR中の多値従属性X→→Yが自明な多値従属性であるか、XがRのスーパーキーである場合に成り立つ

専門家に質問してみよう