2003年度 データベース論

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