ILA e-Teacher講座 東京・早稲田大学/Aug/2002
Copyright 2002 守屋悦朗
データベースへの数学的入門
~リレーショナルデータベース~
1.リレーショナルデータベースとは
データベース(database)とは、コンピュータ上で大量に蓄積されたデータを構造をもたせた形式で記録しておくことにより、データの効率的な利用ができるようにしたものである。
そういったデータ処理としては、データの検索(特定の条件を満たすデータを探し出すこと)、データの更新(追加や削除など)、データの加工(2つのデータベースを合併したり、既存データベースのうちの一部分を抜き出して新規データベースを作ったりすることなど)といった操作が含まれる。データベースとその利用者の間を仲介し、このような処理や管理を行
うプログラムをデータベース管理システム(DBMS, database management system)という。
データベース
氏名 住所 年齢
佐藤 渡辺 今井 田中 桜井
東京 大阪 京都 大阪 奈良
33 56 47 29 45
データベース の利用者
データベース 管理システム (DBMS)
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
ここで事前体験:データベースを使ってみよう → Excel実習 データを記録するための構造
データベースを実現するために考案されている「データを記録するための構造」(データ構造という)としては、歴史的に次の3つの主要な方法があった/ある。 ・ 階層型(hierarchical data model) ・ ネットワーク型(network dada model) ・ リレーショナル型(relational data modl)
階層型データモデルは、IBM社の DBMS(database management system:データベースを管理・利用するためのプログラム)をもとに 1968 年に提案されたもので、データを階層に類別し、データベース全体を階層間のつながり(上下関係)として表したものである。 ネットワーク型データモデルは、類別されたどのデータ同士にも自由につながりを設定
できるようにしたものであり、データベース全体はデータをノードとするネットワークの
ような構造になる。1971年に CODASYLの DBTGが COBOLのデータベース機能を制定する目的で定義したのが始まりで、ビジネスデータ処理のデータモデルとして現在でも広
く用いられている。 これらに対し、リレーショナルデータベースモデル(関係データモデル)は、1970 年に数学者 E.F.Coddが純粋に数学的なデータベースモデルとして提案したものであり、荒っぽくいうと、データの間の関係を表(n項関係、テーブル)として記録する方式である。 〔例〕プロ野球のデータベース プロ野球に関するデータベースとして、チームと選手個人の情報を集めたデータベース
が上記それぞれのデータモデルにおいてどのように表されるかを見てみよう。 (a) 階層型データモデル 球団 オーナー 監督 選手 都市名 球場 人口 守備位置 成績
年度
打率 本塁打
具体的には・・・
2
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
プロ野球 … 巨人 阪神 ダイエー … … … … … (読売新聞,原,松井) … (阪神電鉄,星野,檜山) … … (東京,後楽園,1200) … (大阪,甲子園,880) … (外野,2001) (外野,2002) … (外野,2001) …
(.332,36) (.329,19) (.300, 12) (b) ネットワーク型データモデル
球団
守備位置
選手
成績 年度
オーナー 球団
読売ジャイアンツ 読売新聞 原 辰徳
阪神タイガース 阪神電鉄 星野仙一
・・・ オーナー
東京 後楽園 1200万
大阪 甲子園 880万
・・・ 守備位置 選手
投手 捕手 外野手 ・・・
・・・ ・・・
松 井 秀 喜 檜山進次郎
3
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
年度 成績
松井秀喜 .3
松井秀喜 .3
檜山進次郎 .3
・・・
・・・ (c) リレーショナル型データ 球団
読売ジャイアンツ
阪神タイガース ・・・
オーナー
読売ジャイアンツ
阪神タイガース
選手
松井秀喜 読
檜山進次郎 阪
・・・ ・
2001年度成績
松井秀喜 .3檜山進次郎 .3
2002年度成績
松井秀喜 .3・・・ ・
このようにいろんなデータ
データモデルは、「表」とい
2001
32 36
29 19
00 12
モデル
読売新聞 阪神電鉄 ・・・
東京 後
大阪 甲
・・・ ・
売ジャイアンツ 神タイガース ・・
32 36 00 12
29 19 ・・ ・・・
ベースモデルがあ
う分かりやすい概
2002
原 辰徳 星野仙一 ・・・
楽園 1200万 子園 880万 ・・ ・・・
外野手 外野手 ・・・
る/あったが、その中でもリレーショナル
念に基づいていただけでなく、厳密に数学的
4
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
に形式化されたモデルであったために理論的な研究が活発に行われ、その結果として今日
のデータベースのほとんどはリレーショナル方式に基づいている。リレーショナルデータ
モデルに基づいたデータベースをリレーショナルデータベース(関係データベース、relational database, RDB)という。
2.データ操作言語 データベースに問い合わせ(検索)を行なったりデータの更新をしたするためにデータベースを操作するときには、DBMS と遣り取りをするための記述言語が必要であり、それはどのようなデータベースモデルを使っているかによって仕様も操作性も大きく異なる。直
感的に言うとデータ操作言語とはデータベースに対してどのような操作(=演算)ができるかということであり、数学的に言うとデータの集合(どのような構造をもった集合である
かが大事。それによって演算が決まる)とその上でどのような演算(複数個)が定義されているかということ(すなわち、一種の代数系)である。 リレーショナルデータモデルに対しては、
・リレーショナル代数(関係代数、relational algebra) ・タップルリレーショナル論理(タップル関係論理、tuple relational logic) ・ドメインリレーショナル論理(ドメイン関係論理、domain relational logic) という3つの代数的特徴づけ(第数系)が知られており、これらの代数系は一方から他方へ同値変換できるという意味で数学的に等価である。以下では、リレーショナル代数を中心に
してその概要を述べる。 リレーショナル代数 (関係代数) リレーショナル代数(relational algebra)とは、以下のように定義される「関係表」(リレーション)の集合とその上のいくつかの操作演算の集まりのことである。まず、その基本となる関係表とは何かを定義しよう。 リレーション(関係表) A1, A2, …, An を有限集合(データの集合)とする。直積 A1×A2×…×Anの部分集合 R
R ⊆ A1×A2×…×An (または、R[A1, A2, …, An] と表す)
のことを n項関係(n-ary relation、リレーション)とか、関係表(テーブル、relational table)と言う。nを Rの次数(arity, degree)という。各 Aiのことをドメイン(データベースに記録
5
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
される「もの」の集合の意、domain)と呼ぶこともある。 Rの元
(a1, a2, …, an)∈R
は、a1∈A1, a2∈A2, …, an∈An が Rの関係にある一組のデータであることを表す。(a1, a2, …, an)をタップル(組、tuple)とも呼ぶ。マイクロソフト社の関係データベース操作言語であるAccessのように、タップルのことをレコード(record)と呼ぶこともある。
A1, A2, …, Anそれぞれは、データの集合であると同時にその集合の名称であり、その集
合に属すデータが持つ属性(attribute)をも表す。Accessではこれをフィールド(field)と呼んでいる。 関係表は次のように表として表すとわかりやすい。
R[A1, A2, …, An] A1 A2 … An
a11 a12 … a1n a21 a22 … a2n … … … … ak1 ak2 … akn
タップル 属性
属性 A1をもつデータ 〔例〕学生情報の関係表 学生情報[学籍番号、氏名、性別、学部、学科、入学年度]
学籍番号 氏名 性別 学部 学科 入学年度
02A001 山田太郎 男 理学 数学 2002 02A003 朝倉美香 女 文学 日文 2002 01B023 南 卓美 女 法学 法律 2001 … … … …
00D102 伊藤 靖 男 理学 情報 2000
次数6
キー
6
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
上例のように、a=(a1, a2, ..., an), b=(b1, b2, ..., bn) のとき、
a≠bならば ai≠bi
であるような属性 Aiのことを R[A1, A2, ..., An]のキー(key)という。すなわち、キーとは、タップルを一意的に定める属性のことである。1つの属性だけではタップルが一意的に定ま
らないが複数の属性を考慮すると一意的に定まる場合、そのような属性の組をキーと呼ぶ
こともある。すなわち、属性の組 (Ai1, .., Aik) が R[A1, A2, ..., An]のキーであるとは、次が成り立つことである:
a≠bならば「ai1≠bi1 または ai2≠bi2 または ... aik≠bik 」
リレーショナル代数の演算
リレーショナル代数は、関係表の集合と、その上のいくつかの演算として定義される。 (a) 合併演算 属性名のリストが一致している2つの関係表を合併した関係表を求める演算。すなわち、
R[A1, A2, …, An] と S[A1, A2, …, An] とに対してその和集合
(R∪S)[A1, A2, …, An] := { x | x∈R または x∈S }
を得る操作を合併(union)という。 〔例〕 S[A,B,C]
A B C
b g a d a f
(d,a,f) 要素(d,a,た集合(多
R[A,B,C] A B C
a b c d a f
c b dのように同じ要素が 2個以上あるとき、R∪Sをf)は1つだけが残るが、実用的には、同じ要素が重集合(multiset)という)を考えることが多い。
(R∪S)[A,B,C] A B C
a b c d a f c b d
b g a集合とする限りはこの例のように
何個でも登録できるように考慮し
7
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
(b) 差演算 属性名一覧が一致している2つの関係表の一方に入っているが他方に入っていないよう
なタップルを求めて新しい関係表を求める。すなわち、R[A1, A2, …, An] と S[A1, A2, …, An] とに対してその差集合
(R-S)[A1, A2, …, An] := { x | x∈R かつ x∈S }
を得る操作を差演算(subtraction)という。 〔例〕
R[A,B,C] A B C
a b c d a f c b d
S[A,B,C] A B C
b g a d a f
(R-S)[A,B,C] A B C
a b c c b d
(c) 直積演算 2つの関係表のそれぞれのタップルの組み合わせすべてを新しいタップルとする関係表
を求める演算。すなわち、R[A1, A2, …, Am] と S[B1, B2, …, Bn] とに対してその直積集合
(R×S)[A1, A2, …, Am,B1, B2, …, Bn] := { (x1, x2, ..., xm, y1, y2,..., yn) | (x1, x2, ..., xm)∈R かつ (y1, y2,..., yn)x∈S }
を得る操作を直積演算(Cartesian product)という。 〔例〕
R[A,B] A B
a b d a c b
(R×S)[A,B,A,C,D] A B A C D
a b 1 3 5 a b 6 2 8 d a 1 3 5 d a 6 2 8 c b 1 3 5 c b 6 2 8
S[A,C,D] A C D
1 3 5 6 2 8
8
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
(d) 射影演算 1つの関係表から特定の属性だけを抜き出して新しい関係表を求める演算。すなわち、
R[A1, A2, …, Am] と、属性番号 1≦i1, ..., ik≦m に対して、Rの第 i1, ..., ik 成分の射影
πi1, ..., ik (R) [A11, Ai2, …, Aik] := { (xi1, xi2, ..., xik) | (x1, x2, ..., xm)∈R }
を得る操作を射影演算(projection)という。属性の添字の代わりに、属性名そのものを書いてもよい:
πA11, Ai2, …, Aik (R) [A11, Ai2, …, Aik]
〔例〕 S[A,C,D]
A C D
b g a d a f
S1,3[A,D] A D
b a d f
R[A,B] A B
a b d a c b
(e) 選択演算 1つの関係表から、ある特定の条件を満たす
係表を求める演算。「条件」としては、属性の間
考える。 R の元(エンティティ(entity)とも呼ばれる)を
「数」や「文字」や「文字列」などがあろう。「属性
ティは’ ’で囲んで表すことにする。このようのでもよいことにする)に比較演算子<,≦,=いはそういった論理式を論理演算子∧ (and),ρとしよう(条件式と呼ぶことにする)。 R[A1, A2, …, Am] と条件式 ρ(ただし、ρのこと)に対し、Rのタップルのうち、条件をρ
RA,A,B[A,A,B] A A B
a a b d d a
c c bようなタップルだけを抜き出して新しい関
の関係として記述できるようなものだけを
定数と考えよう。そのような定数としては
名を表す番数」と区別するために、エンティ
な定数や「属性名を表す番数」(属性名そのも,≠,>,≧を適用した形の論理式、ある
∨ (or),¬ (not) で結んでできる論理式を
中に現れる属性番号は1以上m以下である
を満たすものだけからなる集合
9
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
σρ(R)[A1, A2, …, Am] := { (x1, x2, ..., xm)∈R | (x1, x2, ..., xm) はρを満たす}
を求める演算を選択(selection)という。(x1, x2, ..., xm) がρを満たすとは、論理式ρの中に現れる各属性番号 ik に xik を代入して得られる論理式が成り立つことを言う。 〔例〕 R[A,B,X,Y,Z]
A B X Y Z
a b 2 3 2 d b 3 5 6 d b 1 3 7 d c 5 7 5 c a 3 8 2 b b 7 6 5
R3=5[A,B,X,Y,Z] A B X Y Z
a b 2 3 2a d c 5 7 5
R(A='d')∧X≧'2')[A,B,X,Y,Z]
A B X Y Z
d b 3 5 2 d c 5 7 5
〔注〕上述の「条件式」は、正確には次のように定義される: 1)エンティティを ’ ’でくくったもの、および属性名(属性番号でもよいが、属性名
と属性番号は混在させない)を定数という。 2)a,bがそれぞれ定数なら、a<b,a≦b,a=b,a≠b,a>b,a≧bはそれぞれ条件式
である。 3)α,βがそれぞれ条件式なら、¬α,α∧β,α∨βはそれぞれ条件式である。 4)1)~3)で定まるものだけが条件式である。 〔注〕実際のリレーショナルデータベース操作言語(例えば、後述の SQL)では、選択演算は単なる比較演算だけでなく、計算機能が組み込めるように拡張されている。 以上(a)~(e)の5つの演算があれば、他のどんな関係表操作も記述することができる。 その他の関係表操作のうち、頻繁に使われる重要なものいくつかを(a)~(e)を使って表してみよう。 (f) 共通集合演算 2つの関係表に同時に入っているようなタップルだけを求めて新しい関係表をつくる。
すなわち、R[A1, A2, …, An] と S[A1, A2, …, An] とに対してその共通集合
10
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
(R∩S)[A1, A2, …, An] := { x | x∈R かつ x∈S }
を得る操作を共通集合演算(intersection)という。R∩Sは
R∩S=R-(R-S)
と表すことができる。 (g) 商演算
直積演算とは逆に、1つの関係表のタップルの末尾が別の関係表のタップルであると
き、その末尾を削除したタップルを求める。すなわち、関係表 R[A1, …, Am, B1, …, Bn] の末尾属性が S[B1, …, Bn] の属性と等しいとき、
(R÷S)[A1, …, Am] := { すべての(y1, ..., yn)∈Sに対して(x1, ..., xm, y1, ..., yn)∈R }
を Rを Sで割った商(quotient)という。R÷Sは
R÷S = π1,2,...,m(R)-π1,2,...,m(π1,2,...,m(R)×S)-R)
と表すことができる。 (h) 結合
2つの関係表が与えられたとき、それぞれの関係表ごとに属性を指定し、その属性同
士の間で特定の条件が成り立つようなタップルだけを選ぶ。このようなやり方で2つの関
係表を結合して新しい関係表を求めることは、よく行われる重要な演算である。例えば、
学生データベース内の住所情報に関する関係表と成績情報に関する関係表とを合併して住
所と成績の両方を含む関係表を作る際には、同じ学生の住所と成績を一緒にしなければな
らない(このとき、同一人物であるかどうかを特定するためには、同姓同名の場合もあるかもしれないので、「名前」が等しいかどうかではなく、「キーとなるような属性」が等しい
かどうかで判断しなければならない)。 R[A1, …, Am] と S[B1, …, Bn] を関係表、1≦i≦mを Rの属性番号(属性名 Aiでもよい)、
1≦j≦nを Sの属性番号(属性名 Bjでもよい)、θを比較演算とするとき、
(R )[A1, A2, …, Am,B1, B2, …, Bn] := { (x1, x2, ..., xm, y1, y2,..., yn)∈R×S | xiθyj } S iθj
を Rと Sのθによる結合(join)という。R Sは
iθj
R S = σiθ(m+j)(R×S)
iθj
と表すことができる。
11
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
実際の RDBでは、比較演算θは2項演算に限らず多数の属性の間の関係式を表すことが許されている。 〔例〕
R S[A,B,A,C,D]
A B A C D
3 1 6 5 7 3 1 2 8 3 6 2 2 8 3
A<D
2 8 3
R[A,B] A B
3 1 6 2
3 1 6 5 7
(i) 自然な結合 結合の中でもとくに大事なのが自然結合である。自然結合では、「関係表 Rの属性と関係
表 S の属性のうち、「属性が同じところ(すなわち、属性名が等しいところ)は値も等しくなければならない」(そのような属性の対がいくつあろうとも、そのすべてについてそうでな
ければならない)という条件を満たすように結合する。すなわち、R[A1, …, Am] と S[B1, …, Bn] を関係表、1≦i1, i2, ..., ik≦mを Rの属性番号、1≦j1, j2, ..., jk≦nを Sの属性番号とする。もし、
Ai1 = Bj1, Ai2 = Bj2, ..., Aik = Bjk
(Rと Sの対応する k組の属性が等しい)であるなら、
R S := { (xp1, xp2, ..., xpq) | (x1, ..., xm+n)∈R×S, xi1 = xm+j1, xi2 = xm+j2, ..., xik = xm+jk }
により
p2, ...(q=
と表す
定義される関係表を R と S のθによる自然結合(natural join)という。ただし、p1,, pq は 1, 2, . , m+1, m+2, ..., m+n からm+j1, m+j2, ..., m+jk を除いたものであるm+n 。R Sは
R
こ
-k)
S = πとができ
.., m
p1,p2,...,pq(σ(i1
る。
S[A,C,D] A C D
1 2 4 6 5 7
R
(1=1)∨(1+2<3) S[A,B,A,C,D]
A B A C D
6 2 6 5 7
=m+j1)∧(i2=m+j2)∧…∧(ik=m+jk)(R×S))
12
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
〔例〕 R[A,B,C] A B C
a p 1 b r 2 a q 3 c q 5 a r 1
(R S)[A,B,C,D] A B C D
a p 1 3 a r 1 3 b r 2 7
S[A,C,D] A C D
a 2 4 b 2 7 a 1 3 c 6 8
タップルリレーショナル論理
タップルリレーショナル論理では、次のような「式 (tuple expression)」を使ってリレーションを表現する:
{ t | ψ(t)) }
ここに、t はタップルを表す変数であり、ψは以下のように定義されるタップル論理式である。 1)Rが関係表の名前で、sがタップル変数のとき、R(s) という形の式はタップル論理式である。この式は、sが Rのタップル(s∈R)であることを表す。
2)s,t がタップル変数で、θが比較演算子(<,=など)ならば、s[i]θt[j] という形の式はタップル論理式である。この式は、sの第 i成分と tの第 j成分はθの関係を満たすことを表す。
3)2)で述べた s[i] とθ、および定数 aに対して、s[i]θaという形の式はタップル論理式である。この式の意味は 2)と同様。
4)1)~3)で定義されたタップル論理式に現れるタップル変数はどれも自由変数であるという。
5)ψ1,ψ2がタップル論理式ならば、ψ1∧ψ2,ψ1∨ψ2,¬ψ1はいずれもタップル論
理式である。これらのタップル論理式ψ1∧ψ2,ψ1∨ψ2,¬ψ1 に現れるタップル
変数は、それがψ1またはψ2において自由変数であるか否か(自由変数でない変数は束縛変数という)に応じて、ψ1∧ψ2,ψ1∨ψ2,¬ψ1 においても自由変数または束
縛変数であるという。 ψ1∧ψ2は「ψ1かつψ2が成り立つ」ことを表し、ψ1∨ψ2は「ψ1またはψ2が成
り立つ」ことを表し、¬ψ1は「ψ1が成り立たない」ことを表す。 6)ψがタップル論理式で、sがタップル変数のとき、(∃s)(ψ) という形の式はタップ
ル論理式である。(∃s)のsと、ψの中に現れる自由変数sはどちらも (∃s)(ψ) に
13
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
おいては束縛変数となる。その他のタップル変数は、それがψにおいて自由である
か/束縛であるかに応じて (∃s)(ψ) においても自由/束縛であるという。 (∃s)(ψ) は、ψの中の自由変数sすべてに或る定数を代入するとその式が成り立つ(すなわち、ψを成り立たせるsが存在する)ことを表す。
7)ψがタップル論理式で、sがタップル変数のとき、(∀s)(ψ) という形の式はタップル論理式である。(∀s)のsと、ψの中に現れる自由変数sはどちらも (∀s)(ψ) においては束縛変数となる。その他のタップル変数は、それがψにおいて自由である
か/束縛であるかに応じて (∀s)(ψ) においても自由/束縛であるという。 (∀s)(ψ) は、ψの中の自由変数sすべてにどのような定数を代入してもその式が成り立つ(すなわち、任意のsに対してψが成り立つ)ことを表す。
8)以上の 1)~7)により定義されるものだけがタップル論理式である。 〔例〕タップル変数sの次数が nであることを s(n) と表すことにする。
a) R, Sを関係表とするとき、差 R-Sは
R-S={ t | R(t)∧¬S(t) }
と表すことができる。 b) R, Sがそれぞれ次数 r, sの関係表のとき、直積 R×Sは
R×S={ t(r+s) | (∃u(r)) (∃v(s)) (R(u)∧S(v)∧ t[1]=u[1]∧…∧t[r]=u[r]∧ t[r+1]=v[1]∧…∧t[r+s]=v[s]) }
と表すことができる。
c) 射影 πi1,i2,...,ik(R) は
πi1,i2,...,ik(R)={ s(k) | (∃t) (R(t)∧s[1]=t[i1]∧…∧s[k]=t[ik]) }
と表すことができる。 ドメインリレーショナル論理 ドメインリレーショナル論理では、R(x1, x2, ..., xn) といった形の式および xθyといった形の式(xi, x, yはドメイン変数または定数、θは比較演算子)をタップルリレーショナル論理と同様に∧,∨,¬,∃,∀を使って結合した論理式ψ(x1, x2, ..., xn) を使って
{ (x1, x2, ..., xn) | ψ(x1, x2, ..., xn) }
といった式で表す。R(x1, x2, ..., xn) は (x1, x2, ..., xn) が Rのタップルであることを表す。
14
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
例えば、Rが次数 2の関係表であるとき、
{ (x, y) | (∃u)(∃v) R(x,y)∧R(u,v)∧(x≠u∨y≠v) }
はタップルリレーショナル論理の論理式
{ t(2) | (∃s) (R(t)∧R(s)∧(t[1]≠s[1]∨t[2]≠s[2] )
と同じことを表しており、それは空の関係である(Rの要素数が 1以下の場合)か、または R自身である(Rが 2個以上の要素を含む場合)。 一貫性制約 関係データベースでは実世界のデータ(エンティティ)の間の関係を関係表で表すが、例えば、学生データベースにおいて、 ・ある学生の出身地が 2箇所ある ・ある科目の平均点が最高点より高い ・ある学生の年齢が 2002歳である というようなことがあってはデータベースとしての信頼性が落ちてしまう。そこで、デー
タ構造に一定の制約を加え、できるだけ完全無欠に近い状態に近づける努力をしている。
このような制約を一貫性制約(integrity constraint)と呼ぶ。 正規形 関係データベースの基本要素である関係表はドメイン(データの集合)の直積の部分集合である。もし、ドメイン自身がさらに単純なデータ集合の直積になっていたり、集合であ
ったり、もっと複雑なデータ構造であったりすると、取り扱いが困難になる。そこで、関
係データベースを構築する際には、ドメインはできるだけシンプルなものでなければなら
ないとする。すなわち、関係表として記述される基本データ(ドメインの元)がそれ以上分解できないものであるとき、そのような制約を満たしているものを第1正規形(first normal form)と呼ぶ。その他に、第 2正規形、第 3正規形と呼ばれるものがある。
15
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
3.関係データベース言語の標準化
実際の関係データベースにおいて問い合わせ(クエリ、query)等を記述するために使う言語は基本的に関係代数やリレーショナル論理に基づいて設計されているが、このような言
語を RDB言語と呼ぶ。ISOにより 1987年に SQRが RDB言語として国際規格化された。これは、IBM社が開発した SEQUEL (Structured English Query Language) をベースにしたものである。 SQLでは次のような形式で質問を記述する。
SELECT 値式1, 値式 2, …, 値式 n FROM表参照1, 表参照 2, …, 表参照 n WHERE 探索条件
例えば、 のとき
は、関
意味し
商品[商品番号,商品名,定価] 商品番号 商品名 定価
A1 テレビ 35000 A2 テレビ 128500 B1 ビデオ 68700
C1 洗濯機 98000、
SELECT 商品番号, 定価 FROM 商品
係表「商品」からすべての属性が「商品番号」「定価」であるものを選び出すことを
、その探索結果は
商品[商品番号,定価] 商品番号 定価
A1 35000 A2 128500 B2 68700
C1 9800016
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
となる。また、
SELECT 商品名, 定価, 定価*0.8 FROM 商品 WHERE 定価≦100000
により 商品[商品番号,商品名,定価]
商品名 定価 定価*0.8
テレビ 35000 28000 テレビ 128500 102800 ビデオ 68700 54960 洗濯機 98000 78400
が得られる。 ・ 「すべて」を表すためには「*」を用いる。 ・ 範囲を指定するために「BEWEEN ○○ AND □□」を用いる。 ・ 結果を大きさの順に並べるために「ASC」(昇順、ascending order)や「DSC」(降順, descending order)を指定する。
例えば、
SELECT * FROM 商品 WHERE 定価 BETWEE 50000 AND 100000 AND 商品≠'テレビ' ORDER BY 定価 DSC
により が得られる。
商品[商品番号,商品名,定価] 商品番号 商品名 定価
C1 洗濯機 98000 B1 ビデオ 68700
17
ILA e-Teacher講座 東京・早稲田大学/Aug/2002
18
〔演習問題〕 http://www.em.edu.waseda.ac.jp/~moriya/misc/ILA/2002/Aug/RDBproblems.pdf
5.データベースソフト Accessを用いた実習 マイクロソフト社のリレーショナルデータベース言語である Acees、および Excelを用いて実習を行います。Access の習得が目的ではなく、理論の具体化の例として体験することが目的です。講義を聞く前と比べて、どう感じるでしょうか? 参考ウェブサイト:
・データベースについては、ILAの e-Learning講座 http://www.ila.or.jp/project/learning/learning01.html
を受講するとよいでしょう。受講料は無料ですが、受講可能な期間は今年の 9月末まで(ILA会員を除く)です。 <受講方法>
e-Learning講座を受講するには、e-Learningアカウントが必要です。 http://www.ila.or.jp/project/participate/learning.php
から申込みしてください(ILA会員の方は申込み不要です)。 ・関係データベースの発案者の E.F.Codd の写真は〝IBM コンピュータ博物館″をご覧
ください: http://www-6.ibm.com/jp/event/museum/rekishi/rdb.html
参考書:
・寺田・中村・釈・松居、『情報数学の基礎』、サイエンス社、1999. ・増永良文、『リレーショナルデータベース』、サイエンス社、1991. ・上林弥彦、『データベース入門』、昭晃堂、1986. ・J.D.Ullman, Principles of Database Systems, Computer Science Press, 1982. ・広野忠敏&できるシリーズ編集部編、『できる Access完全入門』、インプレス、2002.
Top Related