2003年度 データベース論

リレーショナル・データベース
J2EE I
第4回 / 2006-01-14
1
ここでの内容



リレーショナルデータベースの基本概念
主キー
正規化
2
リレーショナルデータベースの
基本概念
3
データベースとは何か

データベース = データを蓄積したもの



データモデル = データベース中のデータ
整理の方法


文字情報 (商品の情報、名簿、記事など)
画像、映像
リレーショナルモデル、オブジェクト指向モデ
ルなど
「データベース管理システム」でデータベー
スを管理する。
4
データベース管理システムの
役割

トランザクション



同時アクセスへの対応
高速なアクセス


いくつかの処理をひとまとめにしたもの
データ量が増えても速く処理できる
データの整合性の維持

不都合なデータを入れないようにできる。例え
ば銀行の残高にアルファベットを入れないよう
にできる。
5
トランザクション (1)

いくつかの処理をひとまとめにしたもの。
例えば口座Aから口座Bに1万円を振り込
む処理。
1.
2.

口座Aから1万円を引く
口座Bに1万円を足す
こうした処理は、ひとまとめになっていな
ければならない。上の例で、1で処理が途
切れると困る。
6
トランザクション (2)

トランザクションの途中で処理が中断した場合



それまでの処理を取り消し、なかったことにする
これを「ロールバック」と言う
あるトランザクションを実行しているあいだ、別
のトランザクションの実行を止めることができる。

これを「ロック」と言う
7
データベースを利用した
システム


データを処理するシステムの場合、データ
ベースを使ってデータを管理するのが良い。
データベース管理システムの処理内容を
自分で作るのはとても面倒



トランザクション
高速なアクセス
データの整合性の維持
8
リレーショナルデータベース
(関係データベース)



リレーショナルモデルを用いる
現在のデータベースの標準
多くの商用・オープンソースのシステムが
ある





Oracle
Microsoft SQL Server
PostgreSQL (オープンソース)
MySQL
(オープンソース)
HSQLDB
(オープンソース)
9
リレーショナルデータベースの
仕組み



「データベース」は、「テーブル」から構成さ
れる
「テーブル」は、「行」から構成される
「行」は、「項目」から構成される
number title
author
publisher
42377
伽藍とバザール
山形浩生訳 光芒社
42872
Java言語で学ぶデ 結城浩 著 ソフトバンク
ザインパターン入門
10
SQL



リレーショナルデータベースを操作するた
めの言語。
標準化されているので、あるデータベース
で利用したSQLを、他のデータベースでも
(だいたい)使える。
いくつかのバージョンがある。

SQL99, SQL92, SQL89
11
主キー
12
主キー (1)



テーブルでは、重複した行を無くすように
する。つまり、1行1行がそれぞれ違ってい
るようにする。
ということは、テーブル中の特定の1行を
選び出すには、最悪でもすべての項目を
指定すればよい。
特定の1行を選び出すのに必要な項目の
組を「主キー」と言う。実際には、ある特定
の1つの項目が主キーとなるようにする。 13
主キー (2)


このテーブルでは、“Number” が主キーと
なる(学籍番号には重複がないから)
姓や名だと、同姓同名がいると困る
項目名
意味
Number
学籍番号
Family_name
姓
Last_name
名
14
正規化
15
正規化



テーブル設計を決められたルール通りにす
ること。
正規化によって、適切に分割された、保守し
やすいテーブルを作成できる。正規化された
テーブルを「正規形」と呼ぶ。
正規化にはさまざまな段階がある。通常は
第三正規形くらいまで。

第一正規形、第二正規形、第三正規形、Boyce-Codd 正
規形、第四正規形、第五正規形、ドメインキー正規形
16
第一正規形 (1)


テーブルの項目には、複数の値を入れる
ことはできない。
だめな例
number タイトル
42872 Java言語で
学ぶデザイ
ンパターン
入門
著者
結城浩
著
出版社
ソフトバ
ンク
keyword
Java
デザイン
パターン
17
第一正規形 (2)
第一正規化されたテーブルの例
Number タイトル
著者
出版社
keyword
42872
Java言語で学 結城浩 著
ぶデザインパ
ターン入門
ソフトバンク Java
42872
Java言語で学 結城浩 著
ぶデザインパ
ターン入門
ソフトバンク デザインパ
ターン
18
関数従属


このテーブルの主キーは「Number」と「keyword」
しかし、「Number」という項目があれば、「タイトル」「著
者」「出版社」という項目が決まる。(関数従属)
Number
タイトル
著者
出版社
keyword
42872
Java言語で学ぶデザイン
パターン入門
結城浩 著
ソフトバンク
Java
42872
Java言語で学ぶデザイン
パターン入門
結城浩 著
ソフトバンク
デザイン
パターン
19
第二正規形 (1)



第二正規形 = 主キーが複数あるとき、主
キーの一部にだけ関数従属している項目
を、別のテーブルに移す。
この例では、 「タイトル」「著者」「出版社」と
いう項目が「No」に関数従属している。
そこで、「No」「タイトル」「著者」「出版社」か
らなるテーブルを別に作成する。
20
第二正規形 (2)
第二正規化されたテーブルの例
number
42872
number
42872
42872
タイトル
Java言語で学
ぶデザインパ
ターン入門
著者
結城浩
著
出版社
ソフトバンク
keyword
Java
デザインパターン
21
外部キー
number
42872
タイトル
著者
Java言語で学ぶデザ 結城浩
インパターン入門
著
number keyword
42872
42872
Java
デザインパターン
出版社
ソフトバンク
それぞれのテーブルには
「number」という項目がある。
この項目を通じて2つの
テーブルを結合できる。
↑ この「number」が外部キー。元のテーブルを参照できる。
22
参照整合性制約


「図書」テーブルに「42377」という主キーを
持つ行がないとき、「キーワード」テーブル
に「42377」の外部キーを持つ行を追加で
きない。
「キーワード」テーブルに「42377」の外部
キーを持つ行があるときに、「図書」テーブ
ルから「42377」という主キーを持つ行を削
除できない。
23
第三正規形 (1)


no
このテーブルでは、「出版社の所在地」が
「出版社」に関数従属している。
第三正規形 = 主キーではないキーに関数
従属している項目を、別のテーブルに移す
タイトル
著者
出版社
出版社の
所在地
42872 Java言語で学 結城浩 著 ソフトバン 東京
ク
ぶデザインパ
24
ターン入門
第三正規形 (2)
第三正規化されたテーブルの例
number タイトル
著者
42872
Java言語で 結城浩 著
学ぶデザイン
パターン入門
出版社
ソフトバンク
出版社
ソフトパ
ンク
出版社の所在地
東京
25
参考文献・URL

UNIXデータベース入門


http://www.wakhok.ac.jp/DB/DB.html
丸山学長によるデータベース入門。内容が古
くなりつつありますが、よくまとまっている有益
なテキストです。
26