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

2010年度講義資料 DBMS講義 É│ïKë╗

N/A
N/A
Protected

Academic year: 2018

シェア "2010年度講義資料 DBMS講義 É│ïKë╗"

Copied!
33
0
0

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

全文

(1)

データベース

第 10 回 正規化

鈴木幸市

(2)

理解度調査講評 (1-1)

a b c

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

16 17 18

19 20 21

SELECT a FROM S WHERE b > 10;

FROM S

(3)

理解度調査講評 (1-2)

a b c

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

16 17 18

19 20 21

SELECT a FROM S WHERE b > 10;

FROM S WHERE b > 10

(4)

理解度調査講評 (1-3)

a b c

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

16 17 18

19 20 21

SELECT a FROM S WHERE b > 10;

SELECT a FROM S WHERE b > 10 a

10 13 16 19

(5)

理解度調査講評 (2-1)

a b c

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

16 17 18

19 20 21

SELECT a,d FROM S,T WHERE b=e AND a>10; S

d e f

21 20 19

18 17 16

15 14 13

12 11 10

9 8 7

6 5 4

3 2 1

T

(6)

理解度調査講評 (2-2)

a b c d e f

SELECT a,d FROM S,T WHERE b=e AND a>10; FROM S,T ( その

1 )

(7)

理解度調査講評 (2-3)

a b c d e f

1 2 3 21 20 19

1 2 3 18 17 16

1 2 3 15 14 13

1 2 3 12 11 10

1 2 3 9 8 7

1 2 3 6 5 4

1 2 3 3 2 1

4 5 6 21 20 19

4 5 6 18 17 16

SELECT a,d FROM S,T WHERE b=e AND a>10; FROM S,T ( その

2)

(8)

理解度調査講評 (2-4)

a b c d e f

1 2 3 3 2 1

4 5 6 6 5 4

7 8 9 9 8 7

10 11 12 12 11 10

13 14 15 15 14 13

16 17 18 18 17 16

19 20 21 21 20 19

SELECT a,d FROM S,T WHERE b=e AND a>10; FROM S,T WHERE b=e

(9)

理解度調査講評 (2-5)

a b c d e f

1 2 3 3 2 1

4 5 6 6 5 4

7 8 9 9 8 7

10 11 12 12 11 10

13 14 15 15 14 13

16 17 18 18 17 16

19 20 21 21 20 19

SELECT a,d FROM S,T WHERE b=e AND a>10; FROM S,T WHERE b=e AND a>10

(10)

理解度調査講評 (2-6)

a b c d e f

1 2 3 3 2 1

4 5 6 6 5 4

7 8 9 9 8 7

10 11 12 12 11 10 13 14 15 15 14 13 16 17 18 18 17 16 19 20 21 21 20 19

SELECT a,d FROM S,T WHERE b=e AND a>10; SELECT a, d FROM S,T WHERE b=e AND a>10

a d

13 15 16 18 19 21

(11)

理解度調査講評 (3-1)

a b c

1 2 3

4 5 6

7 8 9

10 11 12

13 14 15

16 17 18

19 20 21

SELECT a,d FROM S,T WHERE b=e AND a>10; S

d e f

21 20 19

18 17 16

15 14 13

12 11 10

9 8 7

6 5 4

3 2 1

T

(12)

理解度調査講評 (3-2)

SELECT count(*) FROM T WHERE d > 5;

d e f

21 20 19

18 17 16

15 14 13

12 11 10

9 8 7

6 5 4

3 2 1

FROM T

(13)

理解度調査講評 (3-3)

SELECT count(*) FROM T WHERE d > 5;

d e f

21 20 19

18 17 16

15 14 13

12 11 10

9 8 7

6 5 4

3 2 1

FROM T WHERE d>5

(14)

理解度調査講評 (3-4)

SELECT count(*) FROM T WHERE d > 5;

d e f

21 20 19

18 17 16

15 14 13

12 11 10

9 8 7

6 5 4

3 2 1

SELECT count(*) FROM T WHERE d>5

6行

count(*) 6

(15)

今日の内容

正規化の概要と背景

正規化の段階

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

演習

(16)

正規化 (normalization) とは

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

効率よく

矛盾なく

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

正規化とは

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

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

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

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

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

デッドロック

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

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

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

性能の問題

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

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

(17)

第一正規形 (the first normal form,

1NF)

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

繰り返し項目がない

 参考書の例では ...

(18)

第 1 正規形 (2)

参考書の例

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

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

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

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

(19)

第 1 正規形 (3)

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

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

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

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

おくとよい。

(20)

第一正規形

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

外部キーに する

(21)

第二正規形

 別な例で考える:仕入先情報を考える 住所・代表電話は

仕入先で決まる

内線番号は部署もわか らないと決まらない 主キー

(22)

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

の様子

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

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

矛盾が生じる 主キー

(23)

第二正規形

正規化前

正規化後

候補キー以外のカラムは 候補キーに従属している

住所は「部 署」で共通

代表番号は

「部署」で共

(24)

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

様子

主キーと外 部キーの関

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

主キー

(25)

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

 担当者情報を抜き出してみる

確かに担当者番号は他のカラ ムの候補キーになっている

担当部署番号は担当部 署の候補キーになって この表を作ると同じ「担

当部署名」が何度も現れ

遷移従属性

(26)

データベースの様子

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

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

矛盾が生じる

(27)

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

(28)

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

主キーと外 部キーの関

データなし重複した

(29)

正規化のゴール

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

工程は

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

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

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

第二正規形 担当者情報

第三正規形 担当部署情報

(30)

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

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

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

 候補キーを捜してレコードを整理する

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

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

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

第一正規形

第二正規形

第三正規形

(31)

正規化の背景 ( 復習 )

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

効率よく

矛盾なく

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

正規化とは

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

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

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

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

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

デッドロック

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

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

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

性能の問題

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

(32)

演習1

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

補キーはそれぞれ何か

(33)

演習2

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

出した理由を述べよ。

演習3

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

参照

関連したドキュメント

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

臨脈講義︐

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

講義の目標.

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

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

[r]

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