RDBMSと正規化について
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
■RDBMSの構造 RDBMのデータモデルは、表という概念にもとづいている。 【学生データ】
●表(テーブル) 表は、テーブルと呼ばれ、「学生データ」がテーブル名になります。 ●列(カラム) ブルーの縦の列は、カラムと呼ばれ、「氏名」のようにカラム名をつけて他の列と区別できるようにしている。 各カラムは、数値・文字・日付などデータの属性(アトリビュート)が定義されており、カラムに複数のデータを入れ ることや違う種類のデータを入れることはできません。このように定義されたカラムを、これ以上分割できないデータの単位の 集合体いうことで、定義域とも言われている。 ●行(ロー) ピンクの横の行は、組(ロー)とも呼ばれている。行の重複はゆるされません。 ●キーについて 表の中で、行を特定するための手がかりとなる列をキーと言います。列の中で、キーとなりうる列のことを候補キーといいます。 学生番号や氏名は、本人を特定できるので、候補キーと言えます。しかし、同姓同名の人がいる場合もあり、氏名の列のキーで、一意に 行を特定できないことも考えられます。しかし、学生番号は、重複してつけられることはなく、学生番号により一意に行を特定することが できます。このように重複した値を持たず、一意であるキーを主キーと呼んでいる。 ■SQL言語(Structured Query Language・構造化問い合わせ言語)について このテーブルを作成しデータ定義のために使うデータベース言語が、SQL言語である。テーブルを作成する場合には、 データ型の種類・アクセス権等のデータの定義をする必要があり、これをデータベースのスキーマと呼んでいる。SQL言語は、 このようなデータベースの定義だけではなく、データベースの操作(データの登録・更新・削除・検索)やトランザクション処理 (複数のアクセスがあった場合に対する処理)に使用する。現在は、オブジェクト指向を取り入れたSQL99が標準で、ISOでも認定されています。 現在のRDBMSは、基本的にSQL99に準拠していますが、多少、RDBMSによって方言があります。標準化されたSQLを 使っているRADBMSであれば、別のRDBMSに変えても、基本的にSQL言語を書き換える必要がありません。 SQL言語の種類
■正規化について データベースを設計する場合に、情報を効率よくデータベースで管理するためにモデル化することを正規かと言います。 具体的には、一つの項目に複数のデータが入っているというようなことを排除したり、表を分割することにより 最小限のアクセスで、データの検索や更新ができるようにすることも正規化と言います。正規化の段階により、 第一正規化から第五正規化までありますが、ここでは、第三正規化まで紹介します。 【非正規化表】
●第一正規化 非正規化の表では、「選択科目」や「点数」に複数のデータが入っています。たとえば、日付属性の列であれば 複数の日付データを入れると、日付データとして認識されません。さらに検索する場合に、複数のデータがあると 正しい検索することもできません。このような非正規化表から、一事実・一カ所に修正することを第一正規 化といいます。 【第一正規化した表】
●第二正規化 第一正規化された表で、現代文の担当者が変わった時にデータ修正をする場合、2カ所訂正が必要です。 しかし、実際データでは、修正個所が数万件にもなる場合もあります。その時に、修正ミスや修正にかかる時間を 考えると非常に効率が悪い。そこで、表を分割することでこれを解消することができます。ある値(キー)が 決まれば、他の値も自動的に決まる場合を従属関係にあるという。ある値が決まることで、すべての 値が決まる場合を完全従属いいます。この表の場合、「学生番号」が決まれば、「組」「氏名」が決まり、 「科目コード」が決まれば、「選択科目」「担当」「教科コード」「教科名」が決まります。このようにこの表には、 2つの完全従属関係があります。「学生番号」「科目コード」を主キーとして2つの従属関係を、2つの表に分けることを 第二正規化といいます。これにより、データの修正が簡単になります。また、3つの表を結合することで、もとの 第一正規化した表を作成することができます。
●第三正規化 第二正規化された科目表で、「科目コード」から「教科コード」「教科名」が推移的に決まるものの、他の科目でも 同じ教科に属する場合があり、違う科目でも同じ教科名が入ることがあるので一意にはならない。このような関係を、 推移従属性と呼んでいる。このような推移従属性を排除して、表を分割することを第三正規化といいます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
HOMEへ | データベーストップへ | <<<DBMSの役割と構造 | SQLの演習>>> |