関係データベース Relational Database (RDB)

大量に質的データを取り扱うときには、計算機を用いる。 質的データを整理するには関係データベースを用いた、 SQL (Structured Query Language) を使う。

SQL を学ぶ前に、関係データベースの用語をまとめる。

関係データベース

関係データベースとは、 データベースを 2 次元表形式にまとたもので、 行(record [組])と列(field [属性])の表を作る。 作られた表は関係表と呼ぶこともある。

関係表の例:キャラクタと番組
属性
フィールド 1「名前」フィールド 2「番組名」フィールド 3「性別」フィールド 4「キャラクタ」
レコード 1ブラサムパワパフガールズ
レコード 2バブルスパワパフガールズ
レコード 3バタカップパワパフガールズ
レコード 4モジョジョジョパワパフガールズ
レコード 5ミス・キーンパワパフガールズ
レコード 6メイヨールパワパフガールズ
レコード 7プロフェッサパワパフガールズ
レコード 8ジャックサムライジャック
レコード 9アクサムライジャック

各属性には、「名前」、「番組名」、「性別」、「キャラクタ」が記録されている。属性を鍵 (key) として、必要な情報を取り出していく。

候補キーとは、属性のことで、例えば「名前」フィールドや「性別」フィールドを探すときにこれらを指すために使われる。

演習5-1:候補キーを「キャラクタ」とする。それらのレコードを全て挙げよ。

主キーーとは、その中でも、フィールド内で重複のないものをさす。 主キーをもとに、データを探すことになる。 ここでは、重なっていない属性は「名前」フィールドのみである。

この他、他の関係表と照しあわせるときに用いるキーを外部キーと呼ぶ。

演習5-2:下の関係表と合せて何か情報を取り出したい(「参照する」という)。 下の 2 つの関係表の属性を取り出すとき、上の関係表のどの属性が外部キーとして適切だろうか?

住んでいる町と趣味・特技
属性
フィールド 1「名前」フィールド 2「住んでいる町」フィールド 3「趣味・特技」
レコード 1ブラサムタウンズビル新しい服
レコード 2バブルスタウンズビル動物と話す
レコード 3バタカップタウンズビルケンカ
レコード 4モジョジョジョタウンズビル発明
レコード 5ジャック未来世界
レコード 6デクスタラボ発明
レコード 7ディディラボバレエ

番組ストーリー
属性
フィールド 1「番組名」フィールド 2「概要」
レコード 1パワーパフガールズ3 人の女の子たちのお話
レコード 2サムライジャック未来世界の侍の話
レコード 3デクスタ研究所姉と弟の兄弟げんかの話
レコード 4快適な生活電気会社の CM 集
レコード 5ウォレスとグルミット犬と発明家の話
関係表の操作について

何枚にもわたる資料の中から、必要なデータを取り出したり、組み合わせて分析することがある。関係表でも同じような動作を行うことができる。

集合演算

データの集まり (集合) について何か行動を起こす (演算する) ので、 データを整理することを集合演算と呼ぶ。和演算、積演算、差演算の 3 つと、直積演算がある。

和演算: 2 つの関係表から、 どちらか一方あるいはどちらにも含まれるデータを取り出す

少なくともどちらか一方に存在しているものを取り出すので、表は大きくなる。

数学でいう C = \{A \cup B\} の集合のことである。

演習5-3:下の 2 つの関係表に和演算を施すとどうなるか。

マラソン順位
属性
名前順位
レコード 1カウ1
レコード 2チキン3
レコード 3アル4
レコード 4フレム2
レコード 5レッドガイ5
100 m 走順位
属性
名前順位
レコード 1ウィゼル1
レコード 2カウ3
レコード 3チキン2
レコード 4レッドガイ6
レコード 5フレム4
レコード 6アル4

実際 100 m 走とマラソンの順位を一緒にしても無意味であるが、 演算の練習のため行っている。

積演算(共通演算): 2 つの関係表から、両方に含まれるデータを取り出す

どちらかに存在しているものを取り出すので、表は小さくなる。

数学でいう C = \{A \cap B\} の集合のことである。

演習5-4:上の「マラソン順位」と「100 m 走順位」に積演算を施すとどうなるか。

差演算: 2 つの関係表から、どちらか一方にしか含まれないデータを取り出す

重なり合いが大きい場合、表は小さくなるが、 重なり合いが小さければ、表は大きくなる。 また、差演算はどちらの表を引くかで結果が異なる。

演習5-5:「マラソン順位」から「100 m 走順位」の差演算を施したものと、 「100 m 走順位」から「マラソン順位」の差演算を施したものと結果を比較せよ。

直積演算

数学でいう C = A \times B である。

具体的には 2 つの表を全て組み合わせたものを作る。以下の 2 つの表

問屋一覧
属性
問屋コード店名所在地
レコード 1220ウニクロ千葉県浦安市
レコード 2221ハッサン北海道札幌市

在庫一覧
属性
問屋コード品物在庫数
レコード 1220シャツグリーン4
レコード 2220タオルブラウン2
レコード 3221ジャケットブラック15

の直積は

属性
問屋コード店名所在地品物在庫数
レコード 1220ウニクロ千葉県浦安市シャツグリーン4
レコード 2220ウニクロ千葉県浦安市タオルブラウン2
レコード 3221ハッサン北海道札幌市ジャケットブラック15

となる。

関係演算

一つあるいは複数の関係表のデータをフィールドやレコードを取り出して、 新たに表を作ることである。射影、選択、結合の三種類がよく使われる。

射影 Projection:表からある属性を取り出す。

演習5-6:

選択 Selection:表からある行を取り出す。条件をつけることが多い。

演習5-7:

結合:複数の表から条件を満たす行を取り出して新しい表を作る。

演習5-8:

本日の演習の解答はこちら

本日のレポート課題 : (Subject: 第 5 回レポート 「データベース演習」)

宛先は
it-sip-0515-report@e.koeki-u.ac.jp
である。

自分の好きなことでデータベースを複数作り、 集合演算と直積演算を最低一つずつ選んで実行せよ。 データベースは .csv 型式で作り、全て添付せよ。 csv 型式はタブスペースやカンマで区切って作る。:

日本, 日本語, 東京
韓国, 韓国語, ソウル
中国, 中国語, 北京
フランス, フランス語, パリ
米国, 英語, ワシントンDC

を明記すること。

次回、どちらか一つの分析結果について発表する(5 分)。

.