兵庫県神戸市北区のQ&A

  • 締切済

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

    • 2014/6/21
    • candyrock9

    ITパスポートの勉強をしているのですが、その中で関係データベースについて参考書やネットで検索をしてもまったく理解ができません。
    下記の2点の問題についてですが、回答の解説を読んでも理解が全くできず、なぜこの答えが正しいのかがわかりません。
    できるかぎり詳しく解説をして頂ければと存じます。

    (1)
    問)関係データベースにおいて主キーを指定する目的はどれか?

    答)主キーに指定した属性(列)で、レコード(行)を一意に識別できるようにする


    (2)
    問)関係データベースを利用する際に、データの正規化を行う目的として、適切なものはどれか?

    答)データが重複したり、データの更新の際に矛盾が生じたりしないようにする。

    続きを読む

  • 回答

    • 2014/6/21
    • ngwave

    (1)
    例えば名簿に鈴木一郎という人の「名前」「住所」「生年月日」が入っているとする。
    「名前」を主キーにしたら同姓同名の人がいると、破たんするでしょう。
    なので、
    「名前」+「住所」で主キーにしたり、
    会員番号のようなものを作って主キーにしたりして、レコードを一意に識別(特定可能)にするのが主キーの役割です。

    ID01,鈴木一郎,東京都千代田区,1979-01-01
    ID02,佐藤学,兵庫県神戸市北区,1985-01-01
    ID03,鈴木一郎,大阪府大阪市中央区,1968-01-01



    (2)
    さっきの人達と、その兄弟をデータにする場合、
    ID01,鈴木一郎さんは、姉が3人
    ID02,佐藤学さんは兄と妹
    ID03,鈴木一郎さんは一人っ子
    とすると、

    横につなげると、わけわかんない
    ID01,鈴木一郎,東京都千代田区,1979-01-01,姉,長女,鈴木泪,姉,次女,鈴木瞳,姉,三女,鈴木愛
    ID02,佐藤学,兵庫県神戸市北区,1985-01-01,兄,長男,佐藤太郎,妹,長女,佐藤花子
    ID03,鈴木一郎,大阪府大阪市中央区,1968-01-01

    そのまま分割すると、前半部分が重複して(ダブって)しまう
    ID01,鈴木一郎,東京都千代田区,1979-01-01,姉,長女,鈴木泪
    ID01,鈴木一郎,東京都千代田区,1979-01-01,姉,次女,鈴木瞳
    ID01,鈴木一郎,東京都千代田区,1979-01-01,姉,三女,鈴木愛
    ID02,佐藤学,兵庫県神戸市北区,1985-01-01,兄,長男,佐藤太郎
    ID02,佐藤学,兵庫県神戸市北区,1985-01-01,妹,長女,佐藤花子
    ID03,鈴木一郎,大阪府大阪市中央区,1968-01-01

    この状態で、ID01,鈴木一郎が婿養子になって苗字が変わり、渡辺一郎になったら、ダブってるところを意識して全部変えないといけない。
    うっかりすると、1つ変更し忘れると、データが矛盾する。
    ID01,渡辺一郎,東京都千代田区,1979-01-01,姉,長女,鈴木泪
    ID01,渡辺一郎,東京都千代田区,1979-01-01,姉,次女,鈴木瞳
    ID01,鈴木一郎,東京都千代田区,1979-01-01,姉,三女,鈴木愛

    正規化して、分割し、主キーで関係付ける事で、重複も矛盾もなくなる。
    テーブル1(自分データ)
    ID01,鈴木一郎,東京都千代田区,1979-01-01
    ID02,佐藤学,兵庫県神戸市北区,1985-01-01
    ID03,鈴木一郎,大阪府大阪市中央区,1968-01-01

    テーブル2(兄弟データ)
    ID01,01,姉,長女,鈴木泪
    ID01,02,姉,次女,鈴木瞳
    ID01,03,姉,三女,鈴木愛
    ID02,01,兄,長男,佐藤太郎
    ID02,02,妹,長女,佐藤花子

    続きを読む