2003年度 データベース論

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