はじめに
皆さんは、データベースという言葉を聞いたことはありますか。
名前の通り、なんかデータが入っているんだろうな~。と思っている方も多いかと思います。
そうなんです!なんかデータが入っているんです!
ただ、もちろん乱雑に入っているわけではなく、色々なルールで整理されて入っています。
今回は、そんなデータベースについて学んでいきましょう!
データベースとは
データベースとは、様々なデータが整理されて格納されたものです。
分かりやすいように、例を出して説明していきますね。
以下の表は、ある架空のクラスの生徒の、所属部活と得意教科、苦手教科をまとめたものです。
このような感じで、データベースには様々なデータが、関連のある項目で整理されて格納されています。
そして表を見てみると、縦の列と横の列で関連がありそうなのが分かるでしょうか。
縦の列では、同じ項目についての値が入っています。
対して横の列では、同じ人物に対してのデータが入っています。
このように、縦の列(属性)と横の列(タプル(組))で表されているデータベースを、関係データベースと言い、属性、タプル(組)などを関係モデルと言います。
急に「属性」とか「タプル(組)」とかが出てきましたが、これらをもう少し詳しく解説していきますね。
属性
まず最初に説明するのは属性です。
属性は、表の縦の列のことで、項目と言い換えるとイメージしやすいかもしれません。
一つの列はすべて、同じ項目名に対しての値が入っており、
図の赤い枠の列では、「野球」も、「サッカー」もすべて「部活」という項目名に対しての値が入っています。
また、属性は、属性ごとに定義域(入れることのできるデータの型)が決まっています。
例えば、「部活」という属性名の列には、本来「サッカー」や、「卓球」のような文字列だけが入るはずですよね。
そのため、「4」というように、数字は入れることができないようになっています。
このように属性ごとに、入れることのできるデータの型が決まっています。
他にも、属性名について、以下二つのルールがあります。
①属性名は、必ずつけなければいけないこと
②属性名の名前は被ってはいけないこと
属性名とは、属性の一番上の部分、項目のタイトルになる値です。
この表では、「生年月日」や、「部活」などが当たりますね。
もし属性名がないと、その属性に何を入れていいのか分かりません。
なので、属性名は必ずつけなくてはなりません。
また、属性名は被ってもいけません。
「部活」の属性名が3つ4つあっても、無駄なだけですからね。
最後に、属性名の順番は、入れ替わっても問題がありません。
例えば上の表で、生年月日と部活の列が入れ替わったとしましょう。
何か困ることはあるでしょうか。
属性が左から「生年月日」→「部活」→「得意科目」でも、「得意科目」→「部活」→「生年月日」でも、変わらないですよね。
そのため属性は、順番を入れ替えても問題ないという特徴があります。
タプル
次に説明するのは、タプル(組)です。
タプル(組)は、表の横の行のことで、1行には同じ人のデータが入っています。
そのため、人が増えたりしたときにはこの1行丸ごと追加することになります。
この1行1行をレコードと呼ぶこともあります。
タプルも、属性と同じく順番を入れ替えても問題ありません。
スキーマ
最後にもう一つ試験に出やすい単語として、スキーマを解説しますね。
スキーマとは、データの構造や、定義の集合と捉えられることが多いです。
もう少しイメージしやすいように言うと、データベースの構造を表を作る人、表を見る人、機械の、3つの層で分けて管理しているという感じです。
スキーマは3層に分かれており、概念スキーマ(表を作る人)、外部スキーマ(表を見る人)、内部スキーマ(機械)となっています。
概念スキーマ
概念スキーマは、データベースの構造の内、表を作る人の分野を管理しています。
例えば上記のような、表原本を作成したり、表の正規化が相当しています。
外部スキーマ
外部スキーマは、データベースの構造の内、表を見る人の分野を管理しています。
外部スキーマには、主にビューなどが相当しています。
ビューとは、表を自分の必要な項目のみになるように削除したり、いくつもの表から必要な項目を持ってきて結合させたりして作成した、独自の表のようなイメージです。
例えば下記の表は、もともとの表から男性の氏名と部活のみを抽出したビューです。
このようなビューは、外部スキーマに相当します。
内部スキーマ
内部スキーマは、データベースの構造の内、データベースに近い部分のスキーマです。
具体的には、記憶媒体にどのように格納するかなどが相当します。
試験では、表を作成することよりももっと内部的なことを聞かれたら内部スキーマだと考えて大丈夫です!
まとめ
いかがでしたでしょうか。
試験では、属性やタプルという名前ではなく、その単語の内容を問われることが多いです。
内容を暗記するのもいいですが、属性は縦の列、タプルは横の列だということさえ知っていれば、その場で考えて解けてしまうこともあります。
なので、関係モデルはそれぞれ何のことか、スキーマはそれぞれ誰視点のものかを理解しながら学ぶといいですよ!
練習問題
練習問題1
関係データベースの説明として,適切なものはどれか。
ア、親レコードと子レコードをポインタで結合する。
イ、タグを用いてデータの構造と意味を表す。
ウ、データと手続を一体化(カプセル化)してもつ。
エ、データを2次元の表によって表現する。
答)エ
関係データベースは、縦の列(属性)と横の行(タプル)によって構成された2次元の表のことです。
練習問題2
RDBMSにおけるスキーマの説明として,適切なものはどれか。
ア、実表ではない,利用者の視点による仮想的な表である。
イ、データの性質,形式,ほかのデータとの関連などのデータ定義の集合である。
ウ、データの挿入,更新,削除,検索などのデータベース操作の総称である。
エ、データベースの一貫性を保持するための各種制約条件の総称である。
答)イ
スキーマは、データの構造や、データ定義の集合のことです。
この問題はよく出るので、単純暗記で覚えておきましょう!
練習問題3
データベースを記録媒体にどのように格納するかを記述したものはどれか。
ア、概念スキーマ
イ、外部スキーマ
ウ、サブスキーマ
エ、内部スキーマ
答)エ
概念スキーマは表を作る人、外部スキーマは表を見る人、内部スキーマは概念スキーマよりもっと内部的な視点です。
データベースを度のように格納するかは、表を作る人よりさらに内部的なので、内部スキーマが正解です。