• 締切済み

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

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

  • YRKD
  • お礼率0% (0/9)

みんなの回答

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 まず、正確な定義を書いておきます。  「関係 (リレーション) がスカラ値のみを持ちうるとき、そのリレーションを第1正規形であるという。」  「あるリレーションが、第1正規形で、かつ、すべての非キー属性が、すべての候補キーに対して完全従属するとき、第2正規形であるという。」  「あるリレーションが、第2正規形で、かつ、非キー属性があるならば、それら全てが候補キーに非推移的に関数従属するとき、第3正規形であるという。」  となります。    まず、第1正規形では、表をフラットな形にすることを、目標とします。ここでフラットな形とは、繰り返し項目(配列)や構造体を持たないことを意味します。この段階では、キーに関する言及はありません。ただし、集合としての性質上、全てのレコードが一意に決定できる(重複がない)ことは必要です。  第2正規形では、候補キーへの「完全従属性」を求めます。これは、候補キーの一部だけが決まれば値が決まるという項目があってはいけないことを要求しています。完全従属性は、関数従属の特別な場合です。    そして、第3正規形では、「推移的な関数従属がない」ことを求めています。これは、Aが決まるとBがきまり、Bが決まるとCが決まる という関係です。つまり、Aが決まるとCが決まることになりますね。これが「推移的な」関数従属です。  例えば、「会員番号・氏名・支店コード・支店名」というテーブルを考え、会員番号を候補キーとしましょう。(つまり、会員番号は全社で一意な番号となっています。)会員番号が決まれば、氏名と所属する支店コードが特定できます。そして、支店コードが決まれば支店名が特定できます。この結果、会員番号が決まれば、推移的に支店名も特定できます。これが、推移的な関数従属です。  このテーブルが第2正規形は満たしていることに注意してください。候補キーは、会員番号のみですので、氏名・支店コード・支店名のいずれも、候補キーの一部分には関数従属していません。  さて、では、もう少し補足です。  >「第一正規化」では、データの重複をなくす事をする  すこし違いますね。データの重複がないことは集合としての条件で、正規化以前の話です。  >「第二正規化」では関数従属をおこないxの値が決まればyの値が決まるのと同じように あるキーが決まれば、他のキーも決まるようになること  これも、少し残念。キーの一部分で決定できる項目がないようになることが目標です。  >「第三正規化」では関数従属をなくすと聞いたんですが、意味がわかりません  意味がわかったら、ある意味大変です。関数従属がなくなったら、データベースとして形をなしません。  なくすのは、「推移的な関数従属」です。「関数従属」を無くしてしまったら、データとしてのつながりがなくなる・・・つまり、テーブルとして存在しなくなってしまいます=^・・;=。

関連するQ&A

  • データベース設計

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

  • 第3正規化とは何でしょうか

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

  • データベースの正規化について

    データベースには正規化というのがありのを知りました。極力可能な限り、無駄なデータは持たない、データの重複はさせないとのことですが、これはあくまで理論モデルで、現実には多少そこから外れても問題ないのでしょうか?例えば、フィールドに税抜きの価格があったとします。理論的にはこれを利用して、税込み価格を表示させるのが、教科書的な理想の正規化に則ったものだと思いますが、その値に1.05を掛けた値のフィールドを持たせてもそれ程パフォーマンスに影響はないような気がします。しかしながら、データベースの設計上はやはりそのようなことは避けるべきなのでしょうか?もしそうだとするとそこまでする理由がよく分からないのですが。

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

    正規形を答える問題で悩んでいます。 次のような問題です。 属性{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正規形だからかな…と考えてしまいます。 アドバイスいただけないでしょうか… よろしくお願いします。

  • データベース情報無損失分解、第四正規形について

    データベースの学習をしています。 以下の語を説明する文章がそれぞれどれかわかりません。 用語 (1)情報無損失分解 (2)第四正規形 (a)リレーションスキーマリレーション中の結合従属性(X1, X2, ...., Xn)が自明な結合従属性であるか、各XiがRのスーパーキーである場合に成り立つ (b)リレーションスキーマR中の多値従属性X→Yが自明な多値従属性であるか、XがRのスーパーキーである場合に成り立つ

  • 自明な関数従属について

    自明な関数従属で2点意味がわからず困っております。 1点目:「属性集合X、Yにおいて、YがXの部分集合であるとき、X →Yが必ず成立する。」この場合を自明な関数従属という。 と記述がありました。 この「X→Yが成立する」部分が、理解できないのです。 試しに Xが{1,2,3,4,5} Yが{1,2,3} と考えてみたのですが、X→Yになる理由がわからないのです。 2点目:また、上の例として以下の項目が挙げられていました。 学生番号、科目が{学生番号、科目}の部分集合(真部分集合)である場合、 自明な関数従属性で、 {学生番号、科目}→学生番号、 {学生番号、科目}→科目 が必ず成立する。とありました。 この例に値を入れて考えてみたのですが、学生番号、科目が 導き出されるのかわかりません。 {学生番号、科目}→学生番号 で考えると、 {10001、数学}→10001 になると思うのですが、この「数学」という値を利用すると10001が 出ることになるのかわからないのです。 どなたか以上2点について解決できる策をお持ちの方が いらっしゃいましたらご教授のほうよろしくお願いします。

  • 関係データベースについて(ITパスポート)

    ITパスポートの勉強をしているのですが、その中で関係データベースについて参考書やネットで検索をしてもまったく理解ができません。 下記の2点の問題についてですが、回答の解説を読んでも理解が全くできず、なぜこの答えが正しいのかがわかりません。 できるかぎり詳しく解説をして頂ければと存じます。 (1) 問)関係データベースにおいて主キーを指定する目的はどれか? 答)主キーに指定した属性(列)で、レコード(行)を一意に識別できるようにする (2) 問)関係データベースを利用する際に、データの正規化を行う目的として、適切なものはどれか? 答)データが重複したり、データの更新の際に矛盾が生じたりしないようにする。

  • 「データベース」の意味について

    本当に単純な質問なのですが,考えているうちに分からなくなってしまいましたので,質問させていただきます. 「データベース」の意味についてはWikipediaなどでも出ているので理解はできるのですが以下の場合はデータベースというのでしょうか? 1. 収集するデータの項目を決めて,Microsoft AccessでTableを作ったがデータは入っていない. 2. 収集するデータの項目を決めて,Microsoft Excelで1行目に項目名を入力したがデータは入っていない. 上記の場合データが入っていない箱を作ったことになりますが,それでも「データベースを作った」と言えるのか?ということです. また,箱を作った人とデータを入れる人が別の場合は,「データベースを作った」人はどちらになるのでしょうか? よろしくお願いいたします。

  • データベースの初歩の質問

    一般的なSQLデータベース(予定、MySql等)を使って、Webサイト を作成するため書籍等で勉強中ですが、全然理解できません。 そこで、現在最も不明な点について質問させてください。 ●データベースの不明な点 ・(小規模)設計で痛い失敗や初心者の起こしやすいミス  てどこですか? ・データベースについて解かりやすいサイトがあれば教えて  いただけませんか? ・プログラム習得の際、殆どマニュアルで解からない所が多い  いので実際にソースを打ち込んでみて、動作から理解している  のですが、データベースもそのような方法でマスターできますか?  (現在実践中ですが、単にデータを書き込みや読み込みが出来る  だけで、そこから先に進めません。) ●正規化について ・正規化をしないと、困る事てなんですか? ・正規化して別れたテーブルに同じカラムが出来ますが、  データ変更などの操作は、どのテーブルに対して行うのですか? ・第3正規化位までが学習できる初心者向けサイトがあれば  教えていただけませんか? ※検討違いの質問があればすみません。

  • 関数についての質問

    よろしくお願いします。 以下の2問についての解答はあっていますか? もし間違えていたら解説していただけませんか? (1) 関数f(x)=1/x^2は定義域を区間[1,2)に制限した時、 単調増加であり、値域は(1/4,1] (2) 関数y=2x-1は1対1であり、逆関数はx=y/2+1/2 この逆関数はxを独立変数、yを従属変数とすればy=x/2+1/2