講義・段ノ壱

データベース基礎理論 その1



Accessを使う前に覚える言葉

リレーショナルデータベース ビュー表 主キー 候補キー 外部キー 参照整合性  
フィールド レコード テーブル
※太字は必ず覚えること

データベースとは?

いろいろなデータを整理して保存しておくもの。
必要なときに必要なデータをすぐに取り出すことができるもの

データベースの種類
カード式データベース(階層型・網型)
あるテーマに沿ってデータをまとめたもの
例:職業別電話帳、プロ野球選手名鑑(階層型)
  カラオケ選曲リスト(曲名別、歌手別、テーマ別)(網型)
リレーショナルデータベース
複数の表を互いに関連付けて一つのものとしてまとめたもの。
表形式でデータを整理することができる。
例: 企業のデータベース
Accessはリレーショナルデータベース

リレーショナルデータベースの概念モデル
      
「会社」のデータ(会社名・住所・電話番号)が一つだけなのに対して、
そこに所属する「社員」のデータ(社員コード・氏名・所属)や
「顧客」のデータ(顧客コード・会社名・住所・担当者名)はたくさんある。
ゆえにリレーショナルデータベースにおけるデータのつながりの関係としては
「1対1」「1対多」「多対多」の3種類があげられる。

リレーショナルデータベースの構造と特徴
氏名住所趣味
福沢 祐一静岡県静岡市野球
佐渡 誠静岡県浜松市野球とサッカー
天野 道雄静岡県掛川市サッカー
	
リレーショナルデータベースは表形式でデータを表現できる。
そして「表」とは縦の「」と横の「」によって表現される。
Accessにおいては「列」は項目名が入るところとして「フィールド」、
「行」は一件当たりのデータが入るところとして「レコード」、
この表のことはデータを格納する場所として「テーブル」と呼ばれる。
また、リレーショナルデータベースの特徴としては次の4つが挙げられる。

1、表中の行の順序には意味がない
2、表中の列の順序には意味がない
3、表中に同一の組は存在しない
4、表中のデータは集合などを持つ事がない
行、列の順番はデータを取り出すたびに表示方法の指定や並び替えが行なわれるため、 「3行目」「5列目」などという指定は全く通用しない。 また、表の中に同一のデータがあっても容量のムダであり、 データを検索するときに対象を特定できなくなってしまう。 さらに「趣味」の列に「野球」「野球とサッカー」「サッカー」とあるため、 一見すると「野球」を趣味とする人が2人、「サッカー」を趣味とする人が2人いる ように見えるが、「野球とサッカー」はそれ自身が一つの独立したデータと認識されるため、 前述のようなことは起こらない。

ビュー表
	
リレーショナルデータベースでは登録した表をそのまま使うこともあるが、
登録した表を元にして目的別の表を加工して作ることもある。
その中でも使用頻度の高くなるものはあらかじめ表を定義しておいて、
定型操作に使用することができる。このような表を「ビュー表」とよぶ。
Accessでは「デザインビュー」という名で登場する。

主キー(Primary key)と外部キー
	
リレーショナルデータベースにおいて同一の行(レコード)が存在しないということは、
何らかの方法によって行を識別しているはずである。
その方法として使われるのが識別するための列(項目)を決めることや
列の組み合わせを決めることである。
このような行を識別するための列のことを候補キーといい、
その候補キーが複数あるときはその中から主要なものを選んで主キーとして設定する。
この主キーを指定することにより目的とする行を特定することができるほかに
新しく行を追加するときに主キーが重複するという誤ったデータの追加を防止できる。

例えば次の表を見てもらいたい。
学生コード(主キー)名前学部年齢
10001 福沢 祐一 経済20
10002 天野 道雄 経済19
10003 福沢 祐一 文学21
この表では同姓同名の「福沢祐一」がいる。 このとき「福沢祐一」の行という条件だけで目的のデータを特定できるだろうか? 表に示されたように現在2人の「福沢祐一」が居り、 今後も同姓同名の人が増える可能性も否定できない。 そのため経済学部のほうか文学部のほうかは特定が困難な状況である。 そこで大学入学時に重複することのない学生コードを学生全員に割り振り、 それを主キーに設定すれば「学生コード」が「10001」の行という条件なら 該当するデータは一件しかないことになる。 では次のような場合はどうだろうか。
講義番号(主キー) 講義名 学生コード(外部キー)得点
11111Excel入門 10001 85
22222Access入門 10002 55
33333Word入門 10003 90
今度は学生コードだけで学生の名前が抜けている。 が、学生コードを手がかりに先ほどの表と組み合わせることによって 講義番号が22222、学生コードが10002の成績は「天野道雄」の「Access入門」の成績、 というようにデータを特定することは可能である。 このとき、先ほどの学生の名前が入った表には空白を作ることが許されなくなる。 なぜなら、これに反したときには学生コードから名前が判別できなくなってしまうからである。 データの入力や削除によって生じる矛盾を回避するために設定する この制約のことを参照制約(Accessでは参照整合性という呼び方をする)といい、 そしてこのような制約が加えられる列のことを外部キーと呼ぶ。




戻る