Comments
Description
Transcript
RDBに関する知識 - IPA 独立行政法人 情報処理推進機構
OSS モデルカリキュラムの学習ガイダンス 7-1-応. RDB に関する知識 ※ 1. 科目の概要 関係データベース(RDB)に関して、インデックスの取り扱いや SQL によるデータベース の操作など、実際の活用に際して必須の知識について解説する。またオープンソース RDBMS の紹介や企業 DB 設計、DB アプリケーションの例など、RDB に関する応用的な 知識を紹介する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント 説 明 シラバスの対応コマ 7-1-応-1. インデックスの概念 データベース検索の高速化に必須の技術であるインデックスの概念につい て解説する。探索のアルゴリズムなどインデックスの原理について説明し、イ ンデックスの物理的な構造や性能、リカバリ特性など、インデックスに関する 基本的な考え方を示す。 1 7-1-応-2. インデックスの種類と特徴 バイナリツリー(B 木)、索引構成表、ビットマップ・インデックス、逆キー・イン デックス、ハッシュ・クラスタ(ハッシュ・インデックス)など、様々なインデックス の種類を紹介し、それぞれの特徴と利点・欠点について解説する。 2 7-1-応-3. データベースの物理設計 関係データベースを実装する際に必要なデータベースの物理構造につい て説明する。データベース物理設計の目的や、物理設計時に留意すべきト レードオフ、データとインデックス、ログをどのように配置するか、データベー ス記憶領域の確保など、物理設計に必要な具体的な手順を示す。 3 関係データベース設計の重要な表現法であるER モデル(Entity-Relational 7-1-応-4. ER モデルの具体的な考え方と作 Model)について、基本的な考え方、データの表現方法や構成要素、具体的 成手順、記述法 な作成手順を解説する。またERD(Entity-Relational Diagram)を用いたデー タ設計手順について説明する。 4 関係データベース設計の必須技術である「正規化」について、具体的な考 え方と正規形の種類、関数従属といった基本的な概念を説明する。また正 規化の手順を示し、各手順におけるポイントや正規化を崩すケースなどにつ いて述べる。 5 7-1-応-5. データベース正規化の具体的な 考え方と手順 外部結合や自己結合、副問合せといった表の結合(ジョイン)に関するSQL 7-1-応-6. 表の結合、複雑な処理、テーブル による操作方法や、SQLを用いた複雑な検索・照会の方法、テーブルの更 の更新 新、削除など、SQL による様々なテーブル操作について説明する。 ※ 6 7-1-応-7. オープンソースRDBMS の種類と 特徴 PostgreSQL、Firebird、MySQL といった代表的なオープンソースRDBMS に ついて、開発の歴史や主たる機能、特徴やライセンスなどについて解説す る。さらに商用RDBMS との比較やオープンソースRDBMS を利用する理由 についても説明する。 7,8 7-1-応-8. RDB を用いた企業DB 設計の例 業務分析としてエンティティを洗い出しER 図を作成したのち、スキーマとイ ンデクスの設計、分散データベースの設計という企業基幹データベースの 設計手順を示す。また物理設計として性能設計や処理効率化検討といった 項目についても解説する。 9,10 【学習ガイダンスの使い方】 1. 「習得ポイント」により、当該科目で習得することが期待される概念・知識の全体像を把握する。 2. 「シラバス」 、「IT 知識体系との対応関係」 、「OSS モデルカリキュラム固有知識」をもとに、必要に応じて、 従来の IT 教育プログラム等との相違を把握した上で、具体的な講義計画を考案する。 3. 習得ポイント毎の「学習の要点」と「解説」を参考にして、講義で使用する教材等を準備する。 独立行政法人 情報処理推進機構 OSS モデルカリキュラムの学習ガイダンス 3. IT 知識体系との対応関係 「7-1-応. RDB に関する知識」と IT 知識体系との対応関係は以下の通り。 科目名 1 7-1-応. RDBに関する基礎知識 データベースイン デックス 概念 2 3 データベースイン デックス 種類と特 徴 データベースの物 理構造 4 ERモデル 5 6 7 8 正規化の手順と方 SQL実践演習ワー 代表的なオープン オープンソース 法 クショップ ソースRDBMS製品 RDBMSの拡張 9 10 データベース設計 構築の実践 データベース構築 <IT 知識体系上の関連部分> 分野 組 織 報 関 シ 連 ス 事 テ 項 ム と 情 応 用 技 術 1 2 IT-SP 社会的な 観点とプロ フェッショナル としての課題 3 IT-IM 情報管理 4 IT-WS Webシステ ムとその技術 5 ェ ソ フ ト ウ ア の 方 法 と 技 術 IT-WS1.Web技術 IT-WS2.情報アー IT-WS3.デジタル IT-WS4.Web開発 IT-WS5.脆弱性 キテクチャ メディア IT-WS6.ソーシャ ルソフトウェア IT-PF1.基本デー IT-PF2.プログラ IT-PF3.オブジェ IT-PF4.アルゴリ IT-PF5.イベント IT-PF6.再帰 ミングの基本的 クト指向プログ ズムと問題解決 駆動プログラミ IT-PF プログラ タ構造 構成要素 ラミング ング ミング基礎 CE-SWE0.歴史と CE-SWE1.ソフト CE-SWE2.ソフト CE-SWE3.ソフト CE-SWE4.ソフト CE-SWE5.ソフト CE-SWE6.ソフト CE-SWE7.ソフト CE-SWE8.言語翻 CE-SWE9.ソフト CE-SWE10.ソフト CE-SWE11.ソフ 概要 ウェアプロセス ウェアの要求と ウェアの設計 ウェアのテスト ウェアの保守 ウェア開発・保 ウェアプロジェ 訳 ウェアのフォー ウェアの構成管 トェアの標準化 仕様 と検証 守ツールと環境 クト管理 ルトトレランス 理 IT-SIA システム IT-SIA1.要求仕 インテグレー 様 ションとアーキ テクチャ IT-NET1.ネット ワークの基礎 IT-NET ネット ワーク IT-SIA2.調達/手 IT-SIA3.インテ IT-SIA4.プロ 配 グレーション ジェクト管理 IT-NET2.ルー ティングとス イッチング CE-NWK0.歴史と CE-NWK1. 通信 概要 ネットワークの アーキテクチャ CE-NWK テレコ ミュニケーショ CE-NWK13.クラス CE-NWK14.イン ン タシステム ターネットアプ リケーション IT-SIA5.テスト IT-SIA6.組織の IT-SIA7.アーキ と品質保証 特性 テクチャ IT-NET3.物理層 IT-NET4.セキュ IT-NET5.アプリ IT-NET6.ネット リティ ケーション分野 ワーク管理 CE-NWK2.通信 CE-NWK3.LANと ネットワークの WAN プロトコル CE-NWK4.クライ CE-NWK5.データ CE-NWK6.ワイヤ CE-NWK7.データ CE-NWK8.組込み CE-NWK9.通信技 CE-NWK10.性能評 CE-NWK11.ネット CE-NWK12.圧縮と アントサーバコ のセキュリティ レスコンピュー 通信 機器向けネット 術とネットワー 価 ワーク管理 伸張 ンピューティン と整合性 ティングとモバ ワーク ク概要 グ イルコンピュー ティング CE-NWK15.次世代 CE-NWK16.放送 インターネット IT-PT1.オペレー IT-PT2.アーキテ IT-PT3.コン IT-PT4.デプロイ IT-PT5.ファーム IT-PT6.ハード ピュータインフ メントソフト ウェア ウェア IT-PT プラット ティングシステ クチャと機構 ム ラストラクチャ ウェア フォーム技術 CE-OPS0.歴史と CE-OPS1.並行性 CE-OPS2.スケ CE-OPS3.メモリ CE-OPS4.セキュ CE-OPS5.ファイ CE-OPS6.リアル CE-OPS7.OSの概 CE-OPS8.設計の CE-OPS9.デバイ CE-OPS10.システ CE-OPS オペレー 概要 ジューリングと 管理 リティと保護 ル管理 タイムOS 要 原則 ス管理 ム性能評価 ティングシステ ディスパッチ ム 13 CE-CAO0.歴史と CE-CAO1.コン CE-CAO コン 概要 ピュータアーキ ピュータのアー テクチャの基礎 キテクチャと構 成 14 IT-ITF IT基礎 15 CE-ESY5.ライフ CE-ESY6.要件分 CE-ESY7.仕様定 CE-ESY8.構造設 CE-ESY9.テスト CE-ESY10.プロ CE-ESY11.並行設 CE-ESY12.実装 サイクル 析 義 計 ジェクト管理 計(ハードウェ ア、ソフトウェ ア CE-ESY 組込みシ CE-ESY13.リアル CE-ESY14.組込み CE-ESY15.組込み CE-ESY16.設計手 CE-ESY17.ツール CE-ESY18.ネット CE-ESY19.インタ CE-ESY20.センサ CE-ESY21.デバイ CE-ESY22.メンテ CE-ESY23.専門シ CE-ESY24.信頼性 ステム タイムシステム マイクロコント プログラム 法 によるサポート ワーク型組込み フェースシステ 技術 スドライバ ナンス ステム とフォールトト 設計 ローラ システム ムと混合信号シ レランス ステム ェ ー 12 ア ュー ー ャ 複 数 領 域 に ま た が る も の 13 IT-IM1.情報管理 IT-IM2.データ IT-IM3.データ IT-IM4.データモ IT-IM5.データと IT-IM6.データ の概念と基礎 ベース問合わせ アーキテクチャ デリングとデー 情報の管理 ベースの応用分 言語 タベース設計 野 CE-SWE ソフト ウェア工学 11 12 IT-SP5.知的財産 IT-SP6.コン IT-SP7.組織の中 IT-SP8.プロ IT-SP9.プライバ 権 ピュータの法的 のIT フェッショナル シーと個人の自 問題 としての倫理的 由 な問題と責任 7 10 コ ウタ ン ハ キ ピ ア テ とド ク 6 7 8 9 10 11 IT-IAS6.情報セ IT-IAS7.フォレ IT-IAS8.情報の IT-IAS9.情報セ IT-IAS10.脅威分 IT-IAS11.脆弱性 キュリティ分野 ンジック(情報証 状態 キュリティサー 析モデル 拠) ビス IT-IPT1.システ IT-IPT2.データ IT-IPT3.統合的 IT-IPT4.スクリ IT-IPT5.ソフト IT-IPT6.種々の IT-IPT7.プログ IT-IPT 技術を統 ム間通信 割り当てと交換 コーディング プティング手法 ウェアセキュリ 問題 ラミング言語の 合するためのプ ティの実現 概要 ログラミング 9 チ IT-SP1.プロ IT-SP2.コン IT-SP3.コン IT-SP4.チーム フェッショナル ピュータの歴史 ピュータを取り ワーク としてのコミュ 巻く社会環境 ニケーション 5 IT-IAS5.攻撃 6 8 シ ス テ ム 基 盤 科目名 1 2 3 4 IT-IAS1.基礎的 IT-IAS2.情報セ IT-IAS3.運用上 IT-IAS4.ポリ IT-IAS 情報保証 な問題 キュリティの仕 の問題 シー と情報セキュリ 組み(対策) ティ CE-CAO2.メモリ CE-CAO3.インタ CE-CAO4.デバイ CE-CAO5.CPUアー CE-CAO6.性能・ CE-CAO7.分散・ CE-CAO8.コン CE-CAO9.性能向 システムの構成 フェースと通信 スサブシステム キテクチャ コスト評価 並列処理 ピュータによる 上 とアーキテク 計算 チャ IT-ITF1.ITの一 IT-ITF2.組織の IT-ITF3.ITの歴 IT-ITF4.IT分野 IT-ITF5.応用領 般的なテーマ 問題 史 (学科)とそれに 域 関連のある分野 (学科) CE-ESY0.歴史と CE-ESY1.低電力 CE-ESY2.高信頼 CE-ESY3.組込み CE-ESY4.開発環 概要 コンピューティ 性システムの設 用アーキテク 境 ング 計 チャ IT-ITF6.IT分野 における数学と 統計学の活用 独立行政法人 情報処理推進機構 OSS モデルカリキュラムの学習ガイダンス 4. OSS モデルカリキュラム固有の知識 OSS モデルカリキュラム固有の知識はデータベースの OSS 実装に関する知識であり、 他の内容は IT 知識体系と共通した RDB に関する内容を扱う。 科目名 第1回 第2回 第3回 第4回 第5回 (1)インデック (1) インデック (1)データベー (1)ER モデル (1)正規化 スの原理 スの種類 スの物理設計 (EntityRelationship Model) (2)インデック (2)更新系と (2)ERD を用 (2)正規化の スの構造 検索系処理の いたデータ設 手順 物理的特性 計手順 (3) インデック スの特徴 7-1-応 RDB に関する基礎 知識 第6回 第7回 (1) 表の結合 (1) PostgreSQL 第8回 第9回 (1) フロントエ (1)業務分析 ンド 第10回 (1)テーブル の作成 (2) データ操 作命令 (2)Firebird (2) データ型 の拡張 (2)企業基幹 データベース の設計 (2)業務帳票・ 画面の作成 (3)MySQL (3) その他の (3)物理設計 拡張 (3)パフォーマ ンスの検討 (4)Oracle 10g とMySQL 4.1.7 の機能比較 (5)オープン ソースRDB が 用いられる理 由 (網掛け部分は IT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している) 独立行政法人 情報処理推進機構 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-1. インデックスの概念 第 1 回 データベースインデックスの概念 コースウェア 7-1-応-1. インデックスの概念 データベース検索の高速化に必須の技術であるインデックスの概念について解説する。探索のア ルゴリズムなどインデックスの原理について説明し、インデックスの物理的な構造や性能、リカバリ特 性など、インデックスに関する基本的な考え方を示す。 【学習の要点】 * データベースに保存されたデータは、二分検索、B 木検索、B+木検索などの検索アルゴリズム を利用したインデックスを作成して検索が行われる。 * インデックスは物理的な配置方法の違いにより、クラスタードインデックスと非クラスタードインデ ックスがある。 39 ルート 33 を検索! 分岐 小さい 大きい 32 12 41 36 ノード 60 ! 33 55 図 7-1-応-1. 木構造の例 7-1-応-1 88 【解説】 1) インデックスとは インデックスはデータベースのレコードを効率よくアクセスするために用いられる。 インデックスは本の巻末に記載されている索引と同様の役割を持つ。例えば、本に索引が存在し ない場合は、目的の語を見つけるためには、全文を最初から読んで探していかなければならない。 本にアルファベット順に並べられた索引があれば、語句の一覧に示されたページを見て、そのペ ージから目的の語句をすばやく探し出すことができる。その反面、本の索引を作成するには相応の 労力とページ数が必要でコストがかかる。本の内容によっては索引の有用性が低いこともある。 2) インデックスの構造 データベースにおいても本の索引と同様に、インデックスによって、検索時にレコードに対してより 効率よくアクセスすることができる。 本の索引と同様の考え方で、コンピュータ上でファイルに索引を持たせる方法を、ISAM(索引表付 き順編成ファイル)と呼ぶ。このような構造を持たせたインデックスを利用しても、検索効率は向上 するが、データの更新を繰り返すと、性能が低下していく問題がある。 そのため、よりも高いパフォーマンスを得るために、木構造と呼ばれるインデックスを採用する場合 も多い。 3) インデックスの特徴 インデックスは DB の性能のみに関係する。インデックスの設定によって、検索やソートのパフォー マンスを上げることができる。言い換えれば、インデックスを設定しなければ、目的のレコードを抽 出するために、全レコードを読み込んで検索することが必要になることがある。 主キーやユニークキーはデータベースの行を一意に特定するもので、インデックスを必ずしも内包 するわけではなく、異なる概念であるが、キーは行の追加時に重複の確認をする必要があるので、 パフォーマンス向上のためにキーを設定するとインデックスも自動的に設定される RDMBS も存在 する。重複がないインデックスをユニークインデックスという。 4) インデックスの設定 インデックスは全体的に張り巡らせれば良いというわけではない。インデックスの設定が効果的な 場合と、逆効果になりがちな場合がある。効果的な場合とそうでない場合の例を以下に挙げる。 インデックスは、インデックス用にデータ量が増大するためディスク必要量が増大することにも注意 が必要である。 また、データの更新が多いテーブルでは、レコードの登録、削除と同時にインデックスを更新する 処理が必要になるため慢性的に負荷が増大しパフォーマンスが低下することがある。 * 効果的な場合 - 検索条件に使われることが多い - 結合に使われることが多い - ソートやグループ化で使われることが多い * 非効果的な場合 - レコード数が少ない - カーディナリティが低い(重複した値が多く値の分布が少ない) 7-1-応-2 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-2. インデックスの種類と特徴 第 2 回 データベースインデックスの種類と特徴 コースウェア 7-1-応-2. インデックスの種類と特徴 バイナリツリー(B 木)、索引構成表、ビットマップ・インデックス、逆キー・インデックス、ハッシュ・クラス タ(ハッシュ・インデックス)など、様々なインデックスの種類を紹介し、それぞれの特徴と利点・欠点 について解説する。 【学習の要点】 * B 木インデックスは、木構造のページ群にアドレス情報を格納し、インデックス値を比較しながら 二分検索法で該当する行の検索を行う。 * ハッシュ・インデックスはハッシュ関数を使って直接アドレス計算を行って該当する行検索を行 う。 * ビットマップ・インデックスは 1 行に 1 ビットを割り当てたビットマップデータの相対位置から該当 する行検索を行う。 45 36 小さい 10 25 14 ノード(ルート) を検索! 大きい 25 50 36 ! 45 40 66 80 50 ノード 55 ノード(リーフ) データベース 図 7-1-応-2. B+木インデックス 7-1-応-3 【解説】 1) インデックスの種類 インデックスには様々な種類があり、それぞれ利点と欠点を持っている。B+木インデックスが、 RDBMS のインデックスで最も多く使われる木構造といわれている。 * 二分木インデックス 木構造は木のように広がっていく構造をもつ。二分木は木構造のなかで最も基本的なもので、 ノード(節)の下にある子のノードが最高で2つであるという構造を持つ。 検索方法は、検索したい値をルート(根)から分岐(枝)へたどっていき、目的のキー値がノード のキー値よりも小さければその前の枝へ向かい、大きければその次の枝へ向かう。その次のノ ードでもその動作を繰り返す。等しいときに完了となる。 データの追加により二分木のバランスが崩れ片側だけに集中するようになると、パフォーマンス が低下するという欠点がある。 * B 木インデックス B 木(バランス木)は、二分木インデックスの欠点を解消するために考えられたもので、バランス 木の名前の通り、データの分岐の先がすべて同一の階層に属した多分木の構造を持つ。ノー ド内にもソートされた複数のキーが含まれる。 検索方法は、ノード内のキーを検索し、目的のキーが、ノードのキー値よりも小さければその前 の枝へ向かい、大きければその次の枝へ向かい、その次のノードでもその動作を繰り返す。リ ーフノードにキーがあったときに完了となる。 利点は、レコード追加後の検索性能が保たれること、欠点は、レコード削除での検索性能が低 下することである。 * B+木インデックス B 木はノードにもデータを記録するが、B+木ではデータは木の最下層にあるノード(葉ノード、リ ーフレベルのノード)に格納され、内部ノードにはキーのみが記録される。 また隣のノード同士をポインタで結合してシーケンシャルアクセスの性能向上が図られている。 B 木インデックスと B+木インデックスともに区別なく B 木インデックスと呼ぶこともある。 * ハッシュ・インデックス B 木インデックスを使った場合には、目的のレコードのアドレスを得るためには、数回のアクセス が必要になることがある。これをハッシュ関数と呼ばれるものを使って、一回で目的のレコードの アドレスを取得できるようにしたものである。 B 木とは異なり、BETWEEN などの範囲検索には利用できない欠点がある。 * ビットマップ・インデックス キーとなる値をビット列で用意するものである。ビット列はキーの値の数だけ用意される。 利点は、通常ではインデックスの設定に不向きとされる、カーディナリティが低い場合に検索性 能が高く、インデックスの容量を少なくできる。欠点は、キーの値の数が多い場合にはビット列が 増えるため不向きであることと、レコード追加がある場合に性能の低下が大きいことである。 * 逆キー・インデックス キーの値を逆にしてインデックスを格納する方式で、連番(シーケンス番号)などに付加する索 引では同じノードに更新が集中するのを避け更新を分散させることができる。範囲検索ができな い欠点がある。 7-1-応-4 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 7-1 RDB に関する知識 レベル 応用 7-1-応-3. データベースの物理設計 第 3 回 データベースの物理構造 コースウェア 7-1-応-3. データベースの物理設計 関係データベースを実装する際に必要なデータベースの物理構造について説明する。データベー ス物理設計の目的や、物理設計時に留意すべきトレードオフ、データとインデックス、ログをどのよう に配置するか、データベース記憶領域の確保など、物理設計に必要な具体的な手順を示す。 【学習の要点】 * RDB におけるデータベース物理設計の目的は、表内と表間の整合性制約の定義、性能向上の ための構造定義、セキュリティの設定を含んでいる。 * データベースの物理設計では、データの非正規化、インデックスの利用、問合せ処理の最適化 などを行う。 * システムで必要となる容量や性能を想定して、I/O の分散化や容量設計を実施する。 非正規化 図 7-1-応-3. 非正規化による性能向上 7-1-応-5 【解説】 1) 整合性制約 関係データベースでは、整合性制約を定義することにより、整合性制約と異なるデータの更新が禁 止され、矛盾しない状態を保つことができる。制約の種類として、以下の項目がある。 * 主キー制約(一意性制約) レコードを一意に特定するために、テーブル内の項目での値の重複を禁止する。 * 参照制約 外部キーによって、関連テーブル間での依存関係を定義する。 * ドメイン制約 値の制限値の範囲を事前に設定することで、それ以外の値の入力を禁止する。 * NOT NULL 制約(非ナル制約) NULL 値の入力を禁止する。NULL 値とは0(ゼロ)や文字列の” ”とは異なり、値が入っていない 空の状態のことを言う。 2) 性能向上のための構造定義 * インデックス インデックスの設定によって、検索やソートのパフォーマンスを上げることができる。 * 非正規化 正規化を行うと、データの整合性が高く保たれるが、数多いテーブルに分解され、結合条件が 多くなりパフォーマンスが低下する。そのため、データベースのパフォーマンス向上のために、 非正規化という、正規化後に故意に正規化を冗長化する構造定義の方法が用いられる。 非正規化は、重複してデータを持つことになるため、整合性が低くなる欠点がある。これは、正 規化とはトレードオフの関係になるため、物理設計時に留意すべきである。 3) セキュリティ データベースは共有して利用することが多い性質上、不正利用を防止するための機能がある。 * アクセス制限管理 多くの RDBMS では、特定の表の参照のみ可能なユーザを設けるなど、ユーザの属性毎に参照 や更新の許可設定をすることにより、きめ細かいセキュリティ管理をすることができる。また、全て のユーザにパスワードを設定することで、なりすましでのログインを防止できる。更に、外部の IP アドレスからの接続を拒否できる設定を持つものもある。 * ログ ログは、データベースに対して発行したクエリの監視結果を保存する機能である。不正アクセス の監視やデータベースの障害時復旧の情報として使われる。また、長時間を要したクエリを記 録する機能を持つ RDBMS もあり、性能向上のための情報としても役立つ。 4) 容量設計と I/O 分散 運用中に容量不足が発生した場合には、データベースに障害が発生し、停止してしまう場合があ る。それを避けるために、あらかじめシステムで必要となるデータ量を想定した上で、十分なものと なるように、容量設計を実施する。 処理性能が必要となる用途では、ディスクの性能を向上させるべく、ファイルを複数のディスクに分 散配置することや、ディスクアレイシステムを構築するなど、I/O 分散の工夫を図る。 7-1-応-6 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-4. ER モデルの具体的な考え方と作成手順、記述法 第 4 回 ER モデル コースウェア 7-1-応-4. ER モデルの具体的な考え方と作成手順、記述法 関係データベース設計の重要な表現法である ER モデル(Entity-Relational Model)について、基本 的 な 考 え 方 、 デ ー タ の 表 現 方 法 や 構 成 要 素 、 具 体 的 な 作 成 手 順 を 解 説 す る 。 ま た ERD (Entity-Relational Diagram)を用いたデータ設計手順について説明する。 【学習の要点】 * ER モデルは、エンティティとリレーションシップに注目したデータモデリングの手法であり、ER モ デルを表現した図を ERD という。 * ERD は、関係データベースの設計図として広く利用されている。 凡例 (Cはカーディナリティ ) アトリビュート アトリビュート アトリビュート C エンティティ リレーション シップ C エンティティ アトリビュート アトリビュート アトリビュート 使用例 住所 生年月日 正社員 所在地 N 勤務 1 性別 給与 図 7-1-応-4. ERD の記法 7-1-応-7 会社 資本金 【解説】 1) ER(Entity-Relationship)モデル データ構造をエンティティとリレーションシップとで表現するデータモデリングの一種。 * エンティティ (Entity) データベースで管理すべき事象。名詞に相当する。(例: 銀行、支店、振込) * リレーションシップ (Relationship) エンティティ間の関連。動詞に相当する。(例: 銀行は複数の支店を「持つ」) * アトリビュート エンティティやリレーションシップの特性や状態。(例: 銀行の「銀行コード」「銀行名」) 2) ERD (Entity-Relationship Diagram、ER 図) ER モデルを表現した図のこと。ERD にはさまざまな表記法があるが、図では Peter Chen による表 記法を示している。 * エンティティ 矩形を書き、その中にエンティティの名称を書く。 * リレーションシップ ひし形を書き、その中にリレーションシップの名称を書き、ひし形の頂点を各エンティティと直線 で結ぶ。 * アトリビュート 楕円を書き、その中にアトリビュートの名称を書き、エンティティやリレーションシップと直線で結 ぶ。 3) 関係データベースの設計における ER モデルの適用 関係データベースの設計においては、関係データベースに適した形で ER モデルが利用されてい る。エンティティを表(の行)、リレーションシップを表と表との結合、アトリビュートを表の列としてあて はめていく。関係データベース向けの ERD 作成ツールも存在し、OSS の DBDesigner4 などがある。 * カーディナリティ リレーションシップは、エンティティの対応関係により、「1 対 1」「1 対多」「多対多」のいずれかに 分類できる。例えば、1 つの銀行エンティティが、複数の支店エンティティに対応するときは「1 対 多」となる。この対応関係をカーディナリティという。ERD では、エンティティとリレーションシップと を結ぶ直線のそばに「1」「N」を書くことで、カーディナリティを表現する。 * リレーションシップが「多対多」の対応関係となる場合、関係データベースとしては、このリレーシ ョンシップ自体をエンティティとし、専用の表を作成することが望まれる。これを連関エンティティ という。 * オプショナリティ リレーションシップにおいて、一方のエンティティに対応する他方のエンティティが存在する必要 があるかどうかという、対応関係の任意性のことをオプショナリティという。 7-1-応-8 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-5. データベース正規化の具体的な考え方と手順 第 5 回 正規化の手順と方法 コースウェア 7-1-応-5. データベース正規化の具体的な考え方と手順 関係データベース設計の必須技術である「正規化」について、具体的な考え方と正規形の種類、関 数従属といった基本的な概念を説明する。また正規化の手順を示し、各手順におけるポイントや正 規化を崩すケースなどについて述べる。 【学習の要点】 * 関係データベースを設計する上で、データの冗長性を減らす正規化という作業が、品質確保の ために重要となる。 * 正規化には段階があり、一般に、第 1 正規化、第 2 正規化、第 3 正規化の順で行われる。 * 実際問題として、あえて正規化を崩す(データに冗長性を持たせる)場合もある。 A0 (非正規形 ) 銀行コード 支店コード 名称 0000 001 X銀行本店 0000 002 X銀行Y支店 0000 003 X銀行Z支店 銀行名 X銀行 X銀行 X銀行 支店名 本店 Y支店 Z支店 都道府県コード 都道府県名 電話番号 01 北海道 011-000-0000,011-000-0001 01 北海道 0138-00-0000 02 青森県 017-000-0000 第1正規化 A1 (第1正規形 ) 銀行コード 支店コード 0000 001 0000 002 0000 003 銀行名 X銀行 X銀行 X銀行 支店名 本店 Y支店 Z支店 都道府県コード 都道府県名 01 北海道 01 北海道 02 青森県 第2正規化 A2 (第2正規形 ) 銀行コード 支店コード 0000 001 0000 002 0000 003 支店名 本店 Y支店 Z支店 都道府県コード 都道府県名 01 北海道 01 北海道 02 青森県 B (第3正規形) 銀行コード 支店コード 0000 001 0000 001 0000 002 0000 003 C (第3正規形) 銀行コード 銀行名 0000 X銀行 第3正規化 A3 (第3正規形 ) 銀行コード 支店コード 0000 001 0000 002 0000 003 支店名 本店 Y支店 Z支店 都道府県コード 01 01 02 D (第3正規形) 都道府県コード 都道府県名 01 北海道 02 青森県 図 7-1-応-5. 正規化の例 7-1-応-9 電話番号 011-000-0000 011-000-0001 0138-00-0000 017-000-0000 【解説】 1) 正規化とそのメリット 関係データベースにおける正規化とは、データの整合性を保ったまま、データの冗長性を減らす 作業のことである。冗長性を減らすことで、関係代数による演算に適した形となり、データの操作や データベースの保守が容易になり、データベースやアプリケーションの品質を確保することが期待 される。正規化の具体的な手順としては、第 1 正規化→第 2 正規化→第 3 正規化の順に行うのが 一般的であり、以下、図を例に説明する。 * 第 1 正規化 表の各列の値から分割可能な値を排除する作業を第 1 正規化といい、正規化されていない表 (非正規形という)に第 1 正規化を適用した結果を第 1 正規形という。ここで、分割可能かどうかは、 分割した結果のデータが必要かどうかで判断される。第 1 正規形を満たさない表では、関係代 数の演算の対象にできない値が存在しうるという問題がある。図の表 A0 は非正規形であり、[名 称]列の値は銀行名と支店名に分割され、[銀行名][支店名]列と重複しており、また、[電話番 号]列には複数の値が入っているものがある。表 A0 を第 1 正規化することで、表 A1 と表 B とに 分離される。 * 関数従属 表において、列(または列の組み合わせ)P、Q があり、P の値が定まると Q の値も一意に定まる 場合、(P に対して)Q は関数従属であるという。(ここで主キーは、実際に主キーに設定しなくとも、 主キーとなりうるものを指す。) - 部分関数従属 主キーの一部の列に対して関数従属であること。 - 完全関数従属 主キー全体に対して関数従属であり、部分関数従属でないこと。 - 推移関数従属 A に対し B が関数従属、かつ、B に対し C が関数従属の場合、A に対し C は推移関数従属 であるという。 * 第 2 正規化 表の部分関数従属である列を他の表に分離する作業を第 2 正規化といい、第 1 正規形に第 2 正規化を適用した結果を第 2 正規形という。図の表 A1 は第 1 正規形であり、[銀行コード]列に 対し[銀行名]列は関数従属である。[銀行コード]列と[支店コード]列との組み合わせは主キーと なりうるので、[銀行名]列は部分関数従属である。表 A1 を第 2 正規化することで、表 A2 と表 C とに分離される。 * 第 3 正規化 表の推移関数従属である列を他の表に分離する作業を第 3 正規化といい、第 2 正規形に第 3 正規化を適用した結果を第 3 正規形という。図の表 A2 は第 2 正規形であり、[都道府県コード] 列に対し[都道府県名]列は関数従属である。主キーに対し[都道府県コード]列は関数従属で あるので、[都道府県名]は推移関数従属である。表 A2 を第 3 正規化することで、表 A3 と表 D とに分離される。 2) 正規化のデメリットと非正規化 正規化には前述のメリットがある反面、多くの表に分解されるため、RDBMS の実装上の問題で、検 索速度の低下等を招く可能性もある。そこで、正規形を敢えて冗長化する場合がある。この作業を 非正規化という。 7-1-応-10 スキル区分 RDB 分野 習得ポイント 対応する OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-6. 表の結合、複雑な処理、テーブルの更新 第 6 回 SQL 実践演習ワークショップ(2) コースウェア 7-1-応-6. 表の結合、複雑な処理、テーブルの更新 外部結合や自己結合、副問合せといった表の結合(ジョイン)に関する SQL による操作方法や、SQL を用いた複雑な検索・照会の方法、テーブルの更新、削除など、SQL による様々なテーブル操作に ついて説明する。 【学習の要点】 * 表の結合により正規化で分割した表を一つの表として扱う事ができる。 * 表の結合を行う方法としては、他の表と結合する外部結合、同じ表で結合する自己結合、他の SQL 文の実行結果を使用する副問合せがある。 * 表の更新処理を行う SQL 文としては、行の挿入を行う INSERT 文、行の更新を行う UPDATE 文、 行の削除を行う DELETE 文がある。 発注 品目 注文番号 品コード 1 HIN1 2 HIN2 3 HIN1 仕入先 数量 商店A 商店A 商店A 発注日 10 2008/10/15 5 2008/11/30 20 2008/12/10 品コード 品名 HIN1 HIN2 HIN3 鉛筆 クレヨン 消しゴム 内部結合 注文番号 品コード 1 HIN1 2 HIN2 3 HIN1 品名 鉛筆 クレヨン 鉛筆 単価 仕入先 数量 60 商店A 80 商店A 60 商店A 図 7-1-応-6. 表の結合 7-1-応-11 発注日 10 2008/10/15 5 2008/11/30 20 2008/12/10 単価 60 80 55 【解説】 1) 表の結合 * 外部結合と内部結合 表の結合(JOIN)により、正規化で分割したいくつかの表を一つの表として扱う事ができる。 「ON」句の後ろに結合フィールドを指定する。 結合方法には内部結合と外部結合がある。内部結合(INNER JOIN)は結合したフィールドの両 方に合致したレコードを抽出する方法である。外部結合(OUTER JOIN)は結合したフィールド の両方に合致するレコードが存在しなかった場合でも抽出する方法で、左外部結合(LEFT OUTER JOIN)は、結合条件の左側のテーブルのレコードを全て抽出する方法である。 記述例: SELECT * FROM `hinmoku` AS A LEFT OUTER JOIN `hacchuu` AS B ON A.`shinacode` = B.`shinacode` WHERE A.`tanka` < 800 ; * 自己結合 自己結合とはテーブルに別名をつけて、同じテーブル同士を結合することである。下記の例で は「,」で結合し、結合条件を WHERE 句で記述しているが、INNER JOIN で記述しても同じ結果 になる。同一要素の組み合わせを排除する条件を入れることで、重複行の抽出が防止される。 記述例: SELECT A.`shinamei`,A.`tanka` FROM `hinmoku` AS A, `hinmoku` AS B WHERE A.`tanka` = B.`tanka` AND A.`shinacode` <> B.`shinacode` ; * 副問い合わせ 副問い合わせ(サブクエリー)とは、SELECT 文中に更に囲うことのできる SELECT 文である。問 い合わせ結果の一部として使用できる他、WHERE 句などでの条件式としても使用できる。 記述例: SELECT `shinamei` , (SELECT MAX(`suuryou`) FROM `hacchuu` WHERE `shinacode` = A.`shinacode`) AS `suuryou` FROM `hinmoku` AS A; 2) データ操作命令 * INSERT(追加) 「INSERT」はテーブルにレコードを追加する。INTO の後ろにテーブル名と項目名を、VALUES の後ろに追加する値を記述する。 記述例: INSERT INTO `hacchuu` (`denpyoubangou` ,`shinacode` ,`suuryou` ,`shiiresakimei` ) VALUES ('1', '1', '100', '仕入商店'); * UPDATE(更新) 「UPDATE」はテーブルの既存レコードを更新する。SET の後ろに更新する項目と値を「=」で続 けて記述する。WHERE 句の後ろは SELECT 文と同様に更新対象となる条件を指定する。 記述例: UPDATE `hacchuu` SET `shiiresakimei` = '山田商店' WHERE `denpyoubangou` = 1 ; * DELETE(削除) 「DELETE」はテーブルのレコードを削除する。FROM の後ろにテーブル名を記述する。 記述例: DELETE FROM `hacchuu` WHERE `denpyoubangou` = 2 ; 7-1-応-12 スキル区分 RDB 分野 習得ポイント 対応する コースウェア OSS モデルカリキュラムの科目 7-1 RDB に関する知識 レベル 応用 7-1-応-7. オープンソース RDBMS の種類と特徴 第 7 回 代表的なオープンソース RDBMS 製品 第 8 回 オープンソース RDBMS の拡張 7-1-応-7. オープンソース RDBMS の種類と特徴 PostgreSQL、Firebird、MySQL といった代表的なオープンソース RDBMS について、開発の歴史や 主たる機能、特徴やライセンスなどについて解説する。さらに商用 RDBMS との比較やオープンソー ス RDBMS を利用する理由についても説明する。 【学習の要点】 * 代表的なオープンソース RDBMS としては、企業が開発しオープンソース化した MySQL、大学 の研究プロジェクトで開発された PostgreSQL、商用 RDBMS から分岐した Firebird 等がある。 * オープンソース RDBMS は機能、性能共に商用 RDBMS と遜色ないものとなってきており、企業 システムで使えるレベルになっている。 MySQL ・MySQL AB社という企業が主体となり開発 ・無償のCommunity Serverと有償のEnterpriseの 二つのライセンス形態に分けられている PostgreSQL ・カリフォルニア大学バークレー校のプロジェクトにより開発 ・BSDライセンスに基づいて配布 ・商用RDBMSに匹敵するほど高機能 Firebird ・ボーランド(当時)がオープンソースとしてリリースした InterBase 6.0を基として発展 図 7-1-応-7. オープンソース RDBMS の種類と特徴 7-1-応-13 【解説】 1) オープンソース RDBMS の普及 昨今のオープンソース RDBMS は、商用 RDBMS と比較しても機能、性能共に遜色ないものとなっ ており、オープンソース OS や Web サーバの普及に伴って広く利用されている。 オープンソース RDBMS を利用する理由となるのは、通常のオープンソースソフトウェアと同様に改 変可能、ライセンス料金不要という点である。特に注目されるのは、ライセンス料金不要の側面であ る。Web システムでは利用ユーザ数が予測しづらく、コストも抑制されがちである。かかる利用目的 において、商用 RDBMS はコストが高く、ユーザ数でライセンス料金が変動する形式のものもあり、 採用しにくい面があった。そこで、代用としてオープンソース RDBMS が急速に普及していった。 2) オープンソース RDBMS の種類 オープンソース RDBMS は様々な製品が登場している。主たるものとして以下の3製品がある。 * PostgreSQL PostgreSQL は、カリフォルニア大学バークレー校のプロジェクトにより開発され、その後インター ネットコミュニティに引き継がれ開発が継続されている RDBMS である。 PostgreSQL は商用 RDBMS に匹敵するほど高機能な RDBMS で、企業システム用途での利用 を意識して機能強化が進められており、比較的早期にストアドファンクションやサブクエリーをサ ポートするなど機能が充実している。 また、プログラム改変後のソースコードの公開の義務がなく、商用利用でも制限なく使用可とす る、BSD ライセンスに基づいて配布されており、ライセンス上の懸念が少なく利用できる。そのた め、基幹業務システムで採用される場合も多い。 * MySQL MySQL はコミュニティ主体ではなく MySQL AB 社という企業が主体となり開発した RDBMS であ る。2008 年にサン・マイクロシステムズが買収した。 MySQL は、無償の Community Server と有償の Enterprise Server という二つのライセンス形態 に分けられている。両者ともオープンソースソフトウェアであるが、Enterprise Server のバイナリ プログラムの再配布はできない。Enterprise Server は安定性を重視し、Community Server は機 能実装を重視する方針で開発が進められている。 MySQL は従来から処理速度が高速であることで知られていたが、機能面でも他の RDBMS と遜 色がなくなってきている。 PostgreSQL と同様に、各種開発言語用の API が用意されており、Web システムのバックエンド RDBMS として多くの実績がある。また、ブログなどのオープンソース CMS では、対応 DB として MySQL が採用されている場合が多く、個人向けレンタルサーバで搭載される DB としての普及 も進んでいるため、個人ユースとしても広く利用されている。 * Firebird Firebird は、商用の RDBMS「InterBase」を起源として約 20 年の歴史を持つ RDBMS で、ボーラ ンド(当時)がオープンソースとしてリリースした InterBase 6.0 を基として、開発が続けられている。 Firebird プロジェクトには過去に InterBase の開発を行っていたメンバーが多く参加しており、商 用製品に遜色ないプロジェクト体制を有している。 ストアドファンクション、オンラインバックアップなど企業システムを意識した機能を備え、また、商 用の InterBase から派生した経緯から、InterBase ユーザの代替としても広く利用されている。 7-1-応-14 スキル区分 RDB 分野 習得ポイント 対応する コースウェア OSS モデルカリキュラムの科目 レベル 7-1 RDB に関する知識 応用 7-1-応-8. RDB を用いた企業 DB 設計の例 第 9 回 データベース設計構築の実践 第 10 回 データベース構築 7-1-応-8. RDB を用いた企業 DB 設計の例 業務分析としてエンティティを洗い出し ER 図を作成したのち、スキーマとインデクスの設計、分散デ ータベースの設計という企業基幹データベースの設計手順を示す。また物理設計として性能設計 や処理効率化検討といった項目についても解説する。 【学習の要点】 * データベース作成を行う業務のエンティティの洗い出しを行い、ER 図の作成を行い概念データ モデルの設計方法を習得する。 * 概念データモデルからスキーマやインデックスの設計を行い、論理データモデルの設計方法を 習得する。 * 論理設計の結果からレコードの構造、順番、アクセスパスなどの設計を行い、物理設計の方法 を習得する。 各種業務・帳票 ER図 発注 注文番号 1 仕入先コード エンティティの 洗い出し n 数量 仕入先 仕入先コード 1 n 発注内訳 注文番号 注文明細 品コード 発注日 住所 電話番号 支払条件 1 品目 品コード 品名 単価 仕入先名 資本金 n リレーション の設定 図 7-1-応-8. ER 図 7-1-応-15 【解説】 1) データモデリング データベースシステムを構築する場合には、現実にある様々な情報から、システムの要件に基づき、 構築に必要なデータ項目を探し出して、項目間の関係性をまとめ上げ、より無駄なく集合化して、 論理的かつ意味的に正しいデータモデルを組み立てることが必要になる。データモデルを組み立 てる行為のことをデータモデリングという。 データモデルの持つ機能としては、データ定義、データ操作、整合性維持の3つがある。 データモデルは、一般に次の3段階を経て完成し、段階を経る毎により詳細化していく手順となる。 * 概念データモデル システムの要件をコンピュータでの処理を前提に分析し識別し、ER 図などで定義した、特定の DBMS に依存しない大まかなデータモデルのことを「概念データモデル」という。 * 論理データモデル 概念データモデルに、システムで必要となるスキーマを作成して、コンピュータに実装可能な形 に変換したデータモデルのことを「論理データモデル」という。 スキーマは、表と表内のフィールド、フィールドや表の関係などのデータベースの構造の定義の ことである。 論理データモデルは、より詳細な ER 図などで作成され、DBMS の特性を加味して、それに依存 したデータモデルになることが多い。 * 物理データモデル 実装を意識して、データ型や索引までを定義し、CREATE TABLE 文などの、DBMS でサポート されている形式で記述可能となるレベルのデータモデルを「物理データモデル」という。 物理データモデルでのデータ定義は、実テーブルを設計することであり、整合性制約の定義、 性能向上のための構造定義(インデックス、パラメータ)など、RDB の物理的な内部構造を決定 する。 アクセスパスは、データの取得ルートのことをいう。インデックスや抽出条件、結合条件などを見 直すことで、よりパフォーマンスの高いアクセスパスとなることを目指す。 2) 分散データベースの設計 異なる場所にデータベースを配置しネットワークで接続されたデータベースシステムのことを分散 データベースという。この方法は、ネットワークの負荷低減のために有用である。分散データベース には、非同期型更新や2相コミットなどの方法がある。 * 非同期型更新 分散先のサイトに更新データを適宜送信してデータの同期を取る方法である。同じデータを複 数のサイトで同時に更新する必要がある場合は、更新内容に競合が生じる可能性があるため、 利用には注意が必要である。 * 2 相コミット(2 フェーズコミット) 主サイトから分散した処理先のサイトの更新処理がコミット可能か確認し、コミット処理待ちの指 示を出すフェーズ(第1フェーズ)と、それぞれのサイトが更新をコミットする指示を出すフェーズ (第 2 フェーズ)に分けて処理がおこなわれ、第 1 フェーズの結果を確認し、コミットするかロール バックするかを決定して、処理先のサイトへ指示を出す。比較的競合を防止できるが、ネットワ ークの負荷は増大しがちになる。 7-1-応-16