データベース
第1回
データベースとは
1
2015年4⽉9⽇(⽊) 7・8時限
担当:奥 健太
本⽇の講義で学ぶこと
2
⾝の回りの
データベース
データベース
システム
⾝の回りの
データベース
3
銀⾏ATM
4
これで美味しい
ものでもお⾷べ
ありがとう!
⺟から息⼦への仕送り
振込み引出し
新幹線の座席予約
5
京都から東京への切符の購⼊
図書館の貸出管理
6
貸出をお願いします
オンラインショッピングサイト
7
ゲームデータの管理
8
さまざまなWebアプリケーション
9
インフラを⽀える
データベース
10
データベースシステム
11データベースシステム(DBS)
データベース管理システム(DBMS)
データベース
(DB)
ユーザ群 アプリケーション群
データベースシステムの⽤語
12
 データベース(DB; DataBase)
 データの集合そのもの
 データ(data):ディジタル化された情報
 ベース(base):⼟台,基盤,基地
 データベース管理システム
(DBMS; DataBase Management System)
 データベースを操作し管理するために必要なソフト
ウェア(システム)
 データベースシステム
(DBS; DataBase System)
 データベースとデータベース管理システムから構成
される情報システム
データベース管理システムの機能
13
データの⼀元
管理と共有化
同時実⾏制御
効率的なデータ
アクセス機構
整合性維持 機密保護 障害回復
データ独⽴性
データの⼀元管理機能
14
vs.
データの⼀元管理機能
15
本店
⾐笠店 びわこ店 朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
データの⼀元管理機能
16
本店
⾐笠店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
びわこ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
データの重複
データの⼀元管理機能
17
本店
⾐笠店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
びわこ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
バナナの値段を400円に変更せよ
400円
400円 400円 400円
更新の⼿間
データの重複
データの⼀元管理機能
18
本店
⾐笠店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
びわこ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
400円 300円 500円
バナナの値段を400円に変更せよ
400円
更新の⼿間
データの重複
データの⽭盾
データの⼀元管理機能
19
本店
⾐笠店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
びわこ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
くさつ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
更新の⼿間
データの重複
データの⽭盾
データの⼀元管理機能
20
本店
⾐笠店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
びわこ店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
朱雀店
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
いちご 500円
バナナ300円
ぶどう 200円
メロン 800円
データベース データの⼀元管理
データの共有
更新の⼿間
データの重複
データの⽭盾
データの⼀元管理機能
回 ⽇付 テーマ
8 5/28 関係データモデルと関係代数
9 6/4 データベース設計
10 6/11 正規化
11 6/18 データベースとプログラム
21
 関係データモデルについて学ぶ
 正規化,1事実1箇所について学ぶ
同時実⾏制御
22
vs.
同時実⾏制御
23
¥20,000引出 ¥50,000振込
READ READ
WRITE
Y=Y-¥20,000
Y=¥20,000
Y=¥0 Y=Y+¥50,000
Y=¥70,000
WRITE
更新の喪失
¥50,000でなければおかしい…
同時実⾏制御
24
¥20,000引出
¥50,000振込
READ
READ
WRITE
Y=Y-¥20,000
Y=¥20,000
Y=¥0
Y=Y+¥50,000
Y=¥50,000
WRITE
同時実⾏制御
回 ⽇付 テーマ
12 6/25 トランザクションと同時実⾏制御
13 7/2 トランザクションと障害回復
14 7/9 データベース構造とインデックス
25
 トランザクション,ロック,同時実⾏制御
について学ぶ
効率的なデータアクセス機構
26
vs.
効率的なデータアクセス機構
27
2分経過…
ユーザは1分も待ってくれない…
検索中…
効率的なデータアクセス機構
28
0.01秒後!
⽬的のものが瞬時に検索される
効率的なデータアクセス機構
回 ⽇付 テーマ
12 6/25 トランザクションと同時実⾏制御
13 7/2 トランザクションと障害回復
14 7/9 データベース構造とインデックス
29
 データベース構造,ファイル編成,イン
デックスについて学ぶ
整合性維持機能
30
vs.
整合性維持機能
31
商品番号 商品名
110 ノートPC
250 外付けHDD
330 USBメモリ
420 ディスプレイ
伝票番号 商品番号 売上数
123 330 10
124 250 5
125 420 2
126 110 1
商品表 売上表
商品番号を330→340に変更
商品番号 商品名
110 ノートPC
250 外付けHDD
340 USBメモリ
商品番号420を削除
整合性がとれなくなる
整合性維持機能
32
商品番号 商品名
110 ノートPC
250 外付けHDD
330 USBメモリ
420 ディスプレイ
伝票番号 商品番号 売上数
123 330 10
124 250 5
125 420 2
126 110 1
商品表 売上表
商品番号 商品名
110 ノートPC
250 外付けHDD
340 USBメモリ
420 ディスプレイ
整合性を維持
340
売上表も変更商品番号を330→340に変更
商品番号420を削除
整合性維持機能
回 ⽇付 テーマ
3 4/23 SQL(CREATE, INSERT, DELETE, UPDATEなど)
4 4/30 SQL(SELECT:基本)
5 5/7 SQL(SELECT:結合,副問合せ)
6 5/14 SQL(VIEW, ALTER, GRANTなど)
33
 参照整合性制約について学ぶ
 Consistency(整合性)について学ぶ
回 ⽇付 テーマ
12 6/25 トランザクションと同時実⾏制御
13 7/2 トランザクションと障害回復
14 7/9 データベース構造とインデックス
機密保護機能
34
vs.
機密保護機能
35
会員DB
不正アクセス
クレジットカード情報GET
個⼈情報などの機密情報が不正にアクセスされる
X社,会員3万⼈のクレジットカード情報流出!
機密保護機能
36
会員DB
不正アクセス
アクセス権限がありません!
アクセス権限を設定し,操作できるユーザを制御
OK 管理者
機密保護機能
回 ⽇付 テーマ
3 4/23 SQL(CREATE, INSERT, DELETE, UPDATEなど)
4 4/30 SQL(SELECT:基本)
5 5/7 SQL(SELECT:結合,副問合せ)
6 5/14 SQL(VIEW, ALTER, GRANTなど)
37
 アクセス権限について学ぶ
障害回復機能
38
vs.
障害回復機能
39
座席予約DB
Y航空,10万⼈の座席予約データ紛失!
座席予約DB
座席予約DB
障害回復機能
40
ミラーリング
ミラーデータベース
ミラーデータベースにまったく同じデータが
保存されているため,データ復旧が可能
障害回復機能
回 ⽇付 テーマ
12 6/25 トランザクションと同時実⾏制御
13 7/2 トランザクションと障害回復
14 7/9 データベース構造とインデックス
41
 トランザクション,Durability(耐久性),
障害回復について学ぶ
データ独⽴性
42
vs.
データ独⽴性
43
public class HelloDb {
public static void main(String[] args) {
...
...
...
}
}
110, ノートPC
250, 外付けHDD
330, USBメモリ
プログラムの仕様変更
データの記述⽅法変更
ファイルの保存場所変更
プログラムの仕様やデータファイルの内容に合わせて,
相互的に修正する必要がある
アプリケーション
相互依存
データ独⽴性
44
public class HelloDb {
public static void main(String[] args) {
...
...
...
}
}
それぞれ独⽴に実装,運⽤が可能
DB
独⽴
アプリケーション
データ
データ独⽴性
回 ⽇付 テーマ
8 5/28 関係データモデルと関係代数
9 6/4 データベース設計
10 6/11 正規化
11 6/18 データベースとプログラム
45
 3層スキーマモデル,データ独⽴性について
学ぶ
 データベースプログラミングについて学ぶ
まとめ
46
⾝の回りの
データベース
データベース
システム
データベースシステム
47データベースシステム(DBS)
データベース管理システム(DBMS)
データベース
(DB)
ユーザ群 アプリケーション群
データベース管理システムの機能
48
データの⼀元
管理と共有化
同時実⾏制御
効率的なデータ
アクセス機構
整合性維持 機密保護 障害回復
データ独⽴性

データベース01 - データベースとは