ホーム » 2009 » 11月 » 26

日別アーカイブ: 2009年11月26日

2009年11月
« 10月   12月 »
1234567
891011121314
15161718192021
22232425262728
2930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

データベースの設計

データベースの設計方法として、正規形の説明を行う。 テスト範囲としては、前週のSQLまでとし、テストはA4用紙1枚の資料持込可とする。

適切でないデータベースを例にしながら、更新不整合が発生することを説明する。 (不整合には、修正不整合・挿入不整合・削除不整合がある。) この不整合が発生しないデータベース(表)を作るためには、どうすべきかを解説。

ERモデル

不整合が起こらないようなデータベースとするには、実体関連にモデル化を行う。 実体・関連には、属性(attribute)が付随し、実体を長方形、関連をひし形、属性を楕円で表現する ER図を描く。

学生や教員といった実体は、人という汎化した視点であれば、識別番号と名前の属性で 表現できると意味で、共通である。人を学生という視点で特化した先に、学科名や学年といった 属性を持つと考えられる。こういった汎化階層は、オブジェクト指向と同じ。

実体の中には、他の実体と関連を持って初めて意味を持つ実体もある。 関連先の実体が消えれば、存在自体が無意味になってしまう実体は、弱実体と呼ぶ。

正規形

不整合が起こらないデータベースを構築するためには、様々な条件が存在する。 その条件を満たすデータ形式になっていることを、××正規形と呼ぶ。

第一正規形は、全属性が単一の値である原子値であるもの。

データを1つに絞り込めるデータ項目は超キーと呼ぶ。 必要最小限に厳選された超キーは、候補キーと呼ぶ。 候補キーで、管理上都合のいいものは主キーと呼ぶ。 属性の1つが決まると、他の属性も1つに自動的に絞り込まれる場合、 従属関係があるという。 候補キーに、非キー項目が従属する場合、完全従属と呼ぶ。 候補キーの一部が、非キー項目が従属するものは部分従属と呼ぶ。 部分従属がなく、非キー項目が候補キーに完全従属する場合第二正規形と呼ぶ。

非キーデータ項目A,Bの間に従属性があり、候補キーからAに従属性がある場合、 推移従属性があるという。 非キー・データ項目が、候補キーに完全従属し かつ 推移従属性がない場合第三正規形と呼ぶ。

不整合の発生しないデータベースにしたければ、第一正規形となるように、第二、第三と それぞれの正規形の条件を満たすように、ER図を書き換えていく。

B木の説明

2分木の応用ということで、式の表現などの説明を行ったが、 3項演算子などがでてくると、2本の木という枠からはずれてくる。 この延長として、B木の解説を行う。

B木の基本は、N-1個のデータd[]と、N個のポインタp[]から成り、 di-1と、diの間の値は、i番目の枝piの先に保存する方法。(以下の図はWikipediaより引用)

// BTreeの宣言の例
#define SIZE 5
struct BTree {
int  size ;                  // 1つのノード内のデータ数
int  data[ SIZE - 1 ] ;      // ノード内のデータ
struct BTree* next[ SIZE ] ; // 次のBTreeへのポインタ
} ;

実際のプログラムの概念を説明し、実コードは示さなかったが、 ノード内の検索などを説明する。

B木は、広く利用されており、データベースエンジンでは、B木を拡張した、 B+ などを利用している。

データベースの説明の延長として、最近普及しているOracle,MySQL,PostgreSQLなどの 事例を紹介したり、Linux+Apache+MySQL+PHP(LAMP)などの用語を簡単に紹介する。