集合と写像#
関係データベースのデータモデルである関係データモデルは,代数学,特に集合と写像に関する数学理論に支えられている. 関係データモデルを理解するためにはこれらの知識が必要となるため,以下,最低限必要となる集合と写像の知識を説明する.
以下の説明はかなり形式的である. 当たり前のことを記号をふんだんに使って説明しているが,物事を抽象化して捉えるためには記号的(数学的)な道具が必要になるので,嫌がらず読んでほしい(ただし気負いすぎないこと). なお,集合と写像について知識がある読者は,本節を読み飛ばしても問題ない.
集合#
数学における集合(set) とは,何かを集めたものである. 集合を構成する個々の「何か」は 要素(あるいは元; element) と呼ばれる.
例えば,以下は集合の例である.
上記集合は整数1,2,3を要素として集めたものである. 1,2,3はそれぞれ集合{1, 2, 3}の要素である. 一般に,集合は波カッコの中に要素を並べて表現する.
集合には名前がつけられる. 例えば,上記集合について
とすれば,集合
ある要素がある集合に属していることは,記号
と書ける.
一方,ある要素がある集合に属して「いない」ことは,記号
と書ける.
集合の要素は数に限らない. 例えば,以下の平仮名集合Hのように文字の集合もありうる.
なお,集合の要素間の順序関係は無視される[1].
それゆえ,集合
となる.
また,(数学的な定義の)集合の要素は重複してはならない[2].
重複する要素があった場合は,重複は無視して扱われる.
例えば,
集合の外延的定義と内包的定義#
集合の定義(表記)方法には2種類ある.
1つは外延的定義である. これは,集合の要素を具体的に列挙することで集合を定義する方法である. 例えば,
は「20以下の偶数」である集合Aを外延的定義によって定義したものである. 外延的定義では集合の要素をすべて列挙するのが大変なため,以下のように途中の要素をテンテンで省略して書く場合もある.
2つめの定義方法は内包的定義である. 外延的定義では要素を具体的に列挙するのに対して,内包的定義では集合の要素が満たすべき条件(性質)を示すことで集合を定義する. 例えば,前述の集合Aであれば,
と書ける.内包的定義では波カッコの中を縦棒(|)で区切り,左側に集合の要素を表す文字を書き,右側には要素に関する条件を書く. なお,条件のAND(「かつ」)は以下のようにカンマで書くこともある.
よく使われる数の集合#
整数,自然数のように,よく使われる数の集合には特別な集合名が付けられている. 以下,代表的な数の集合を列挙しておく.
.
例えば,
.
空集合#
要素を持たない集合も集合である.
そのような集合を空集合と呼ぶ.
空集合は
.
集合の要素数#
集合Xの要素数は,
のとき,
要素を持たない集合も集合である.
そのような集合を空集合と呼ぶ.
空集合は
.
積集合(集合の共通部分)#
2つの集合A,Bが与えられたとき,集合A,Bに共通の要素を集めた集合を積集合(あるいは共通集合; intersection) と呼ぶ.
集合Aと集合Bの積集合は
以下の図は,集合
和集合#
2つの集合A,Bが与えられたとき,集合A,Bのいずれかに属する要素を集めた集合を和集合(union) と呼ぶ.
集合Aと集合Bの和集合は
以下の図は,集合
差集合#
2つの集合A,Bが与えられたとき,集合Aには属しているが集合Bには属していない要素を集めた集合をBからAを引いた差集合(set difference) と呼ぶ.
集合Bから集合Aを引いた差集合を
以下の図は,集合
以下は,集合Bから集合Aを引いた差集合
部分集合#
2つの集合A,Bが与えられたとき,集合Bが集合Aの一部としてすっぽり入っているとき,集合Bは集合Aの部分集合(subset) であるという.
もう少し堅い定義をすると,集合Bの任意の要素(あらゆる要素)が集合Aに属するとき,集合Bは集合Aの部分集合である,とする.
集合Bが集合Aの部分集合であることを,
例えば,以下の図では集合
直積#
2つの集合AとBが与えられたとき,Aの要素とBの要素を1つずつ取り出して作れるすべての組(ペア)を集めた集合を直積集合(Cartesian productあるいはdirect product) あるいは単に直積と呼ぶ.
集合AおよびBの直積集合は
.
例を見てみよう.
例えば,
となる.
もう1つ例を見てみよう.
直積
最後に数値ではない直積の例を見てみよう.
集合
となる.
関係データベースは直積と関連が深い. 高校数学では学ばなかった(と思われる)直積であるが,きっちり概念を押さえておこう(★Quiz5★).
写像#
写像とは,2つの集合間の対応づけを表すものである.
集合
また,写像
このとき,
最も馴染みのある写像の一つは関数である.
例えば,小売店で商品を購入する際には,商品価格
と書ける.
商品価格や最終的な支払い料金は実数であり,関数
と書くことができる. また,
と書くこともできる.
関数ではない現実的な写像の例を示そう.
大学では,学生が履修した科目に対して「優」「良」「可」「不可」の4段階の成績が付けられることが多い.
今,集合
といった感じになる.
さて,成績の種別を表す集合を
定義域と値域#
上で写像
1つ目は定義域である.
集合
2つ目は終域である.
集合
3つ目は値域である.
集合
終域と値域の違いが分かりづらいかもしれないが,
値域は終域の要素(
クイズ#
Q1. 外延的定義#
以下の集合
関数
は文字列xを”x@nagoya-c.ac.jp”という文字列に変換する関数
とする.
Q2. 内包的定義#
以下の集合
Q3. 和集合,積集合,差集合#
上記Q1およびQ2で扱った集合をもとに,以下の集合の要素を求めよ.
Q4. 部分集合#
集合
このとき,以下の1からの命題が真か偽かを求めよ.
※ 本問題は書籍「群論への第一歩: 集合、写像から準同型定理まで」に掲載された問題の改題である.
Q5. 直積#
集合
このとき,集合
Q6. 写像#
Q5で扱った集合
写像
と定義する.
写像
の定義域,値域,像を列挙せよ. となる集合 の要素を求めよ.