データベース
第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
1
N
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
1
N
M M
1
N
⽒名会員番号
図書館員番号
資料番号
書籍名
著者
出版社
施設番号
施設名
所在地
貸出⽇
返却⽇
購⼊⽇
配架⽇
主キーの選定基準
16
値ができるだけ変わらないもの
できるだけ桁数の少ないもの
必ず値が存在すること
(NULLがあってはならない)
ユニークな値を有する
複合キーでの連結が多くならない
⽒名
概念データモデル
17
会員
図書館員書籍
施設
返却貸出
購⼊
配架
N N
1
N
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) 挿⼊不整合 論理設計
関係(リレーショナル)
データモデル
属性(アトリビュート) 論理データモデル
関係名 属性値 論理的データ独⽴性
完全関数従属性 第⼀次正規化 和集合演算
関連 第⼀正規形 和両⽴
共通(積)集合演算 第三次正規化

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