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