リレーショナル・データベース 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 丸山学長によるデータベース入門。内容が古 くなりつつありますが、よくまとまっている有益 なテキストです。
© Copyright 2024 ExpyDoc