• 検索結果がありません。

講義資料 DBMS講義

N/A
N/A
Protected

Academic year: 2018

シェア "講義資料 DBMS講義"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

データベース

第 11 回 正規化

鈴木幸市

(2)

今日の内容

正規化の概要と背景

正規化の段階

 第一正規形~第三正規形

演習

(3)

正規化 (normalization) とは

 実際のデータをテーブルに展開するための方法

効率よく

矛盾なく

データをデータベースに格納するための方法

正規化とは

データの重複がないようにデータベースの構造を作ること

一つの情報は一箇所に格納する。

2 箇所以上に重複格納すると

こらのデータがたまたま違っていると大変

変更の順序もきちんと決めないといろいろ不具合が

デッドロック

どのデータを見るかで結果が違ったり

 正規化されていないデータベースも設計できる

故意にそうすることもある

性能の問題

テーブルが増えすぎて、結合演算が多くなるなど(正規化を進めるとテーブ ルの数が増える傾向になる)

正規化されていないところをきちんと意識してアプリケーションの設 計までおこなうことが重要

(4)

データの構造をとりあえず書いてみる

( 1 )

 とりあえずリレーショナルモデルは忘れる

 同じ構造のデータがたくさんできるはず

一つしかないものはデータベースにはしない

レコード:たとえば「書籍」

(5)

データの構造をとりあえず書いてみる

( 2 )

レコードの内容を詳しく書いてみる

(6)

第一正規形 (the first normal form,

1NF)

データ型で規定される値だけが入っている

繰り返し項目がない

 参考書の例では ...

(7)

第 1 正規形 (2)

参考書の例

入っているデータは基本データ型のみ → これは OK

伝票明細が繰り返されている → これが第一正規形に違反している!!

伝票明細の枚数が固定なら、「繰り返しではない」と言い張るのもできるが

上記では明細が何枚あるかわからない

(8)

第 1 正規形 (3)

 どうやって第一正規形にするか?

 繰り返し項目を別な表にする

 上で作った新しい表にキーをつけて、これを

元の表の外部キーにする。参照制約をつけて

おくとよい。

(9)

第一正規形

繰り返し項 目を別なリ レーション にする 伝票番号を

外部キーに する

(10)

さらに先に進める前に (1)

 関数依存性 (functional dependency) を理

解しておくとよい

 テーブルの各カラムの間の論理的な関係

 あるカラム X の値が決まると他のカラム Y の値が

決まるような関係の場合、「 Y は X に関数従属であ

る」 という。

X → Y  と表記する

 例: 学籍番号の値が決まると氏名が決まる 学籍番号→氏名

 X → Y かつ Y→ Z の場合、「 Z は X に推移的関数従

属である」という。

 例: 学籍番号の値が決まると学部番号が決まる。学部番 号が決まると学部名が決まる

学籍番号→学部番号、学部番号→学部名 すなわち、学籍番号→学部名

(11)

第二正規形

 テーブルの各カラムの関数従属性が

主キー→主キー以外のカラム

だけになっているもの

候補キー

(*)

→ 主キー以外のカラム

があってはならない

(*) 候補キー: 主キーを構成するカラムの部分集 合

(12)

第二正規形への変換 (1)

 別な例で考える:仕入先情報を考える

仕入れ先名→ ( 住所、代表電話番号 ) ---(1)

( 仕入れ先名、部署名 )→ 担当者内線番号 --- (2)

(1) は第二正規形に適合していない 主キー

これを避けて第二正規形にする 候補キー

(13)

第二正規形への変換 (2)

正規化前

正規化後

適合していない従属性の候補キーを主 キーにして、別なテーブルを作る

住所は「仕入 れ先名」に従

代表番号は

「仕入れ先 名」に従属

(14)

第二正規形になっていないデータベース

の様子

同じデータのコピーが大 量にできてしまう

修正するときは全部一緒 に修正しないとデータに

矛盾が生じる 主キー

(15)

第二正規形にした場合のデータベースの

様子

主キーと外 部キーの関

データなし重複した 主キー

主キー

(16)

もう一つの第二正規形の例

 まだ隠れた従属性がある

担当者番号→ (担当者名、担当部署番号、担当部署名 ) 確かに担当者番号は他のカラムの候補キーになっている

担当部署番号→担当部署名 主キー以外のカラム同志

の従属性がある!

遷移従属性

(17)

データベースの様子

同じデータのコピーが大 量にできてしまう

修正するときは全部一緒 に修正しないとデータに

矛盾が生じる

(18)

担当者を第三正規形にすると

主キー以外の従属性のあ る部分を別のテーブルに する

(19)

第 3 正規形にした後のデータベースの様

主キーと外 部キーの関

データなし重複した

(20)

正規化のゴール

まずは第三正規形を目指す

工程は

まず第一正規形に→繰り返し項目を別な表にする

次に第二正規形→第一正規形の候補キーを見つける

さらに第三正規形→第二正規形の中に別な従属性があったらこれも別な表にする

第二正規形 担当者情報

第三正規形 担当部署情報

第三正規形 担当者情報

(21)

正規化を行う際のポイント

 一つのレコードには繰り返し項目は入れてはいけない

 基本型のデータ項目だけで表を作ってみる

テーブルの主キーの

 キー以外のデータが複数回現れないようにする

 レコードの中に別な従属性はないかを調べてみる

 キー以外のデータが複数回現れないようにする

第一正規形

第二正規形

第三正規形

(22)

正規化の背景 ( 復習 )

 実際のデータをテーブルに展開するための方法

効率よく

矛盾なく

データをデータベースに格納するための方法

正規化とは

データの重複がないようにデータベースの構造を作ること

一つの情報は一箇所に格納する。

2 箇所以上に重複格納すると

こらのデータがたまたま違っていると大変

変更の順序もきちんと決めないといろいろ不具合が

デッドロック

どのデータを見るかで結果が違ったり

カラム間の関数従属性を正しく導き出すことが重要

関数従属性はデータの性質そのもの

 正規化されていないデータベースも設計できる

故意にそうすることもある

性能の問題

テーブルが増えすぎて、結合演算が多くなるなど(正規化を進めるとテーブ ルの数が増える傾向になる)

(23)

演習1

 次のレコードを第一正規形にせよ。結果のレコードの候

補キーはそれぞれ何か

(24)

演習2

 次のレコードを第三正規形にせよ。そのように導

出した理由を述べよ。

演習3

 2 つ以上の操作からなるトランザクションの例を

一つあげよ ( 講義資料の例は除く )

参照

関連したドキュメント

FEED キーを押しながら LINE キーを押します FEED キーを押し. ながら LINE

臨脈講義︐

MENU キーを 3 秒間押して設定モードに入ります。次に ( DISP ) キーと ( FUNC ) キー を同時に 3

講義の目標.

定可能性は大前提とした上で、どの程度の時間で、どの程度のメモリを用いれば計

添付資料4 地震による繰り返し荷重を考慮した燃料被覆管疲労評価(閉じ込め機能の維持)に

[r]

授業科目の名称 講義等の内容 備考