リレーショナル・データベース 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
© Copyright 2024 ExpyDoc