45
データベース 第9回 データベース設計 1 2015年6⽉4⽇(⽊) 7・8時限 担当:奥 健太

データベース09 - データベース設計

Embed Size (px)

Citation preview

データベース第9回

データベース設計

1

2015年6⽉4⽇(⽊) 7・8時限担当:奥 健太

これから学習する内容

2

データベース設計について学ぶ

CREATE DATABASE

CREATE TABLEデータベース設計

エンドユーザ

結果データベース

問合せ(クエリ)

データベースアプリケーション

要求

応答

復習

データベース設計編での学習⽬標

3

基礎となるデータモデルを理解する

データベース設計の⽅法を理解する何をデータとして表現し,データ間の関係を

どう定義すべきかどのように関係データモデルに落とし込むべ

きかどのようにテーブルを設計すべきか

データの冗⻑性と不整合問題の解消⽅法を理解する

データベースプログラミングの⽅法を理解する

データベース設計編

回 ⽇付 テーマ8 5/28 関係データモデルと関係代数9 6/4 データベース設計10 6/11 正規化11 6/18 データベースとプログラム

4

本⽇の講義で学ぶこと

5

概念設計論理設計物理設計

3層スキーマモデル

図書館データベースを設計せよ

6

ミッション

データベース設計⼿順

7

現実の世界

概念データモデル

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

データベース設計⼿順

8

現実の世界

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

(1) 実体の抽出(2) 実体間の関連の抽出(3) 主キーと属性の定義概念データモデル

(1) 実体の抽出実体 (entity)

実際にデータベースが対象とする実世界で存在するもののうち,データベースとして表現すべき対象物

ひと,組織

場所,建物

もの

会員 図書館員

書籍

施設

9

(2) 実体間の関連の抽出

10

関連 (relationship)実体同⼠の相互関係

会員

図書館員書籍

施設

返却貸出

購⼊

配架

N N

1N

M M

1

N

1 1

1 N

M N

カーディナリティ

11

実体間の量的関係

監督と球団1対1

12

監督 球団契約1 1

監督番号

監督名

88 原86 和⽥79 緒⽅

球団記号

球団名

G 読売ジャイアンツT 阪神タイガースC 広島東洋カープ

⼀⼈の監督は⼀つの球団と契約する⼀つの球団は⼀⼈の監督と契約する

学⽣番号

学⽣名

19 藤浪67 岩崎11 ⼤⾕

学⽣と研究室1対多,多対1

13

学⽣ 研究室所属N 1

研究室番号

研究室名

86 和⽥研80 栗⼭研

⼀⼈の学⽣は⼀つの研究室に所属する⼀つの研究室には複数の学⽣が所属する

学⽣番号

学⽣名

6 ⾦本39 ⽮野42 下柳

学⽣とサークル多対多

14

学⽣ サークル所属N M

サークル番号

サークル名

201 釣り202 トレーニング203 格闘技

⼀⼈の学⽣は複数のサークルに参加する⼀つのサークルには複数の学⽣が参加する

⽒名

(3) 主キーと属性の定義

15

会員

図書館員書籍

施設

返却貸出

購⼊

配架

N N

1N

M M

1

N

⽒名会員番号

図書館員番号

資料番号

書籍名

著者

出版社

施設番号

施設名

所在地

貸出⽇返却⽇

購⼊⽇

配架⽇

主キーの選定基準

16

値ができるだけ変わらないもの

できるだけ桁数の少ないもの

必ず値が存在すること(NULLがあってはならない)

ユニークな値を有する

複合キーでの連結が多くならない

⽒名

概念データモデル

17

会員

図書館員書籍

施設

返却貸出

購⼊

配架

N N

1N

M M

1

N

⽒名会員番号

図書館員番号

資料番号

書籍名

著者

出版社

施設番号

施設名

所在地

E-R (Entity-Relationship) モデル実体と関連と属性で表現するデータモデルであり,ER図で記述する

貸出⽇返却⽇

購⼊⽇

配架⽇

データベース設計⼿順

18

現実の世界

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

(1) 概念データモデルから論理データモデルへの変換(2) 正規化

概念データモデル

(1) 概念データモデルから論理データモデルへの変換

19

i) 実体を関係に変換

会員(会員番号,⽒名)

図書館員(図書館員番号,⽒名)

書籍(資料番号,書籍名,著者,出版社)

施設(施設番号,施設名,所在地)

(1) 概念データモデルから論理データモデルへの変換

20

ii) 多対多の関連を処理

会員(会員番号,⽒名)

図書館員(図書館員番号,⽒名)

書籍(資料番号,書籍名,著者,出版社)

施設(施設番号,施設名,所在地)

貸出(会員番号,資料番号,貸出⽇)

返却(会員番号,資料番号,返却⽇)

(1) 概念データモデルから論理データモデルへの変換

21

iii) 1対多,多対1の関連を処理

会員(会員番号,⽒名)

図書館員(図書館員番号,⽒名)

施設(施設番号,施設名,所在地)

書籍(資料番号,書籍名,著者,出版社,施設番号,配架⽇,購⼊図書館員番号,購⼊⽇)

貸出(会員番号,資料番号,貸出⽇)

返却(会員番号,資料番号,返却⽇)

22

i) 実体を関係に変換

ii) 多対多の関連を処理 双⽅の実体の主キーと関連の属性を含んだ関係

を作成

iii) 1対多,多対1の関連を処理 1側の実体の主キーと関連の属性を,多側の実

体に対応した関係に追加

iv) 1対1の関連を処理 ⽚⽅の実体の主キーと関連の属性を,他⽅の実

体に対応した関係に追加

(1) 概念データモデルから論理データモデルへの変換

論理データモデル

23

会員(会員番号,⽒名)

図書館員(図書館員番号,⽒名)

施設(施設番号,施設名,所在地)

書籍(資料番号,書籍名,著者,出版社,施設番号,配架⽇,購⼊図書館員番号,購⼊⽇)

貸出(会員番号,資料番号,貸出⽇)

返却(会員番号,資料番号,返却⽇)

関係データモデルは論理データモデルの⼀つ

データベース設計⼿順

24

現実の世界

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

(1) 概念データモデルから論理データモデルへの変換(2) 正規化

概念データモデル

正規化回 ⽇付 テーマ8 5/28 関係データモデルと関係代数9 6/4 データベース設計10 6/11 正規化11 6/18 データベースとプログラム

25

第10回(次回)講義で詳しく学ぶ データの冗⻑性と不整合問題の解消⽅法を

理解する

データベース設計⼿順

26

現実の世界

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

(1) DBMSの選定(2) テーブル設計(3) インデックス設計

概念データモデル

(1) DBMSの選定

27

DBMSによって機能や特⻑が異なる機能や特⻑を踏まえ,DBMSを選定する

(2) テーブル設計

28

カラム名 データ型 制約member_id INT PRIMARY KEY,

REFERENCES member(id)resource_id INT PRIMARY KEY,

REFERENCES resource(id)checkout_date DATE NOT NULL

CREATE TABLE checkout (member_id INT REFERENCES member(id),resourc_id INT REFERENCES resource(id),checkout_date DATE NOT NULL,PRIMARY KEY(member_id, resource_id)

);

貸出(会員番号,資料番号,貸出⽇)

回 ⽇付 テーマ12 6/25 トランザクションと同時実⾏制御13 7/2 トランザクションと障害回復14 7/9 データベース構造とインデックス

(3) インデックス設計

29

第14回講義で詳しく学ぶ インデックスを設計することで効率的な

データアクセスを可能にする

データベース設計⼿順

30

現実の世界

1. 概念設計

2. 論理設計

論理データモデル3. 物理設計

物理データモデル

概念データモデル

データとアプリケーションの接続

31物理的な記憶領域

アプリケーション側からみると,いくつもの⾒え⽅が存在

データの構造やアクセス⽅法を変更すると,アプリケーション側も作り替える必要が発⽣

アプリケーション1 アプリケーション2

データとアプリケーションの接続

32

内部スキーマ

物理的な記憶領域

概念スキーマ

外部スキーマ1 外部スキーマ2

アプリケーション1 アプリケーション2

3層スキーマモデル

33

内部スキーマ

物理的な記憶領域

概念スキーマ

外部スキーマ1 外部スキーマ2

アプリケーション1 アプリケーション2

3層スキーマ• 概念スキーマ

– 開発者側の視点からデータベースをみたもの.データベース全体を表現した構造.特定のアプリケーションに依存しない構造を定義する.論理データモデルに対応する.

• 外部スキーマ– アプリケーションやユーザ側の視点からデータベー

スをみたもの.アプリケーションで必要な部分のみの構造を定義する.ビューとよぶこともある.

• 内部スキーマ– 物理的な視点からデータベースをみたもの.データ

の物理的な格納表現を⽰す構造.データベース内の構造を定義する. 34

概念スキーマ = 論理データモデル

35

会員(会員番号,⽒名)

図書館員(図書館員番号,⽒名)

施設(施設番号,施設名,所在地)

書籍(資料番号,書籍名,著者,出版社,施設番号,配架⽇,購⼊図書館員番号,購⼊⽇)

貸出(会員番号,資料番号,貸出⽇)

返却(会員番号,資料番号,返却⽇)

例;図書館データベース

アプリケーションで必要な部分のみの構造を定義 アプリケーションの数だけ外部スキーマが存在

外部スキーマ

CREATE VIEW 貸出状況AS SELECT 貸出日, 書籍名, 施設名FROM 貸出, 書籍, 施設WHERE 会員番号=1234

AND 書籍.資料番号=貸出.資料番号AND 書籍.施設番号=施設.施設番号;

例;会員番号1234の貸出状況ビュー

施設

書籍

貸出

貸出状況ビューCREATE VIEW貸出⽇ 書籍名 施設名

2015.04.10 MySQL メディアセンター... ... ...

フィールド

レコード

ファイル

内部スキーマ

37

会員番号 ⽒名1 ⿃⾕3 関本4 上本

1 ⿃⾕3 関本4 上本

ディスク関係

データの物理的な格納表現を⽰す構造 ファイル編成法やインデックスに関連

※ファイル編成法やインデックスの詳細ついては第14回講義で学ぶ

3層スキーマモデル

38

内部スキーマ

物理的な記憶領域

概念スキーマ

外部スキーマ1 外部スキーマ2

アプリケーション1 アプリケーション2

3層スキーマモデル

39

内部スキーマ

物理的な記憶領域

概念スキーマ

外部スキーマ1 外部スキーマ2

論理的データ独⽴性概念スキーマが変更されても,アプリケーション側のデータ利⽤⽅法には影響しない

アプリケーション1 アプリケーション2

アプリケーション1 アプリケーション2

3層スキーマモデル

40

内部スキーマ

物理的な記憶領域

概念スキーマ

外部スキーマ1 外部スキーマ2

物理的データ独⽴性物理的なファイル編成や実装⽅式の変更があっても,その変更が概念スキーマには影響しない

3層スキーマとデータモデル

41

現実の世界

論理データモデル

物理データモデル

対応

内部スキーマ

概念スキーマ

外部スキーマ概念データモデル

まとめ

42

概念設計論理設計物理設計

3層スキーマモデル

まとめ

43

実体と関連の抽出概念データモデルとE-R図

概念データモデルから論理データモデルへの変換

DBMSの選定,テーブル設計,インデックス設計

概念スキーマ,外部スキーマ,内部スキーマ論理的データ独⽴性と物理的データ独⽴性3層スキーマとデータモデル

本⽇学習したキーワード〜データベース設計編〜

44

1事実1箇所 繰返しグループ 第三正規形3層スキーマモデル 更新不整合問題 第⼆次正規化ER図 削除不整合 第⼆正規形E-Rモデル 差集合演算 タプル(組)JDBC θ結合演算 直積演算インスタンス θ⽐較可能 等結合演算カーディナリティ 次数 導出属性概念スキーマ ⾃然結合演算 ドメイン(定義域)概念設計 実体 内部スキーマ概念データモデル 射影演算 濃度外部スキーマ 修正不整合 ⾮正規形関係(リレーション) 商演算 物理設計関係スキーマ 推移関数従属性 物理的データ独⽴性関係代数 選択演算 部分関数従属性関係データベース(RDB) 挿⼊不整合 論理設計関係(リレーショナル)

データモデル属性(アトリビュート) 論理データモデル

関係名 属性値 論理的データ独⽴性完全関数従属性 第⼀次正規化 和集合演算関連 第⼀正規形 和両⽴共通(積)集合演算 第三次正規化

これまでに学習したキーワード〜データベース設計編〜

45

1事実1箇所 繰返しグループ 第三正規形3層スキーマモデル 更新不整合問題 第⼆次正規化ER図 削除不整合 第⼆正規形E-Rモデル 差集合演算 タプル(組)JDBC θ結合演算 直積演算インスタンス θ⽐較可能 等結合演算カーディナリティ 次数 導出属性概念スキーマ ⾃然結合演算 ドメイン(定義域)概念設計 実体 内部スキーマ概念データモデル 射影演算 濃度外部スキーマ 修正不整合 ⾮正規形関係(リレーション) 商演算 物理設計関係スキーマ 推移関数従属性 物理的データ独⽴性関係代数 選択演算 部分関数従属性関係データベース(RDB) 挿⼊不整合 論理設計関係(リレーショナル)

データモデル属性(アトリビュート) 論理データモデル

関係名 属性値 論理的データ独⽴性完全関数従属性 第⼀次正規化 和集合演算関連 第⼀正規形 和両⽴共通(積)集合演算 第三次正規化