|
■リレーショナルデータベースの操作 |
|
|
|
|
●学習内容 |
|
|
|
|
|
前の説明でRDBは集合演算とRDBのために作成された演算によってデータを操作すると述べましたね。ここでは、その演算を使ってどのようにデータを操作するのかを説明します。SQLを利用する場合には、この演算を使ってデータを操作します。SQLのコマンドについて説明しているわけではありませんのでどのような演算なのか理解しておいてください。 |
|
|
|
|
|
|
|
|
|
|
|
●関係代数 |
|
|
|
|
|
リレーショナルデータベースは表と集合論の概念に基づいて構成されたと前に説明しました。では実際にどのようにデータを操作したらよいのでしょうか?ご安心あれRDBにはデータを操作する演算が用意されています。その演算を関係代数といいます。ここではRDBの操作のために作られよく使われる以下の演算について説明します。
|
|
|
|
|
|
|
■選択演算 |
|
目的のデータを演算子を使って取り出すための演算です。 |
|
■射影演算 |
|
目的の属性の値を取り出すための演算です。 |
|
■結合演算 |
|
複数のテーブルを結合するための演算です。 |
|
|
|
|
|
|
|
|
|
|
|
|
●選択演算(Selection) |
|
|
|
|
|
選択演算は、ある選択条件を満たすタプルだけを取り出してテーブルを構成します。選択条件は、属性の値と定数の比較、あるいは属性と属性の値の比較を属性名と比較演算子(=,
≠,<,>,≦,≧)のいずれかを用いて表します。さらに選択条件は、「AかつB」という理論積(AND)、「AまたはB」という理論和(OR)、「Aでない」という否定(NOT)を用いて理論式として表現できます。この選択条件を用いて選択演算σは、次のように表現できます。
σ<選択条件>(テーブル名)
<Image3>では、
σStaff_Name=ジャック・ニコルソン(cinema_list)
という選択演算により<Image3>のようなタプルが選択されました。 |
|
|
|
|
|

<Image3>
|
|
|
|
|
|
|
|
|
|
|
|
●射影演算(Projection) |
|
|
|
|
|
射影演算は、テーブルからある属性だけを取り出してテーブルを構成します。射影演算πは、次のように表現できます。
π <属性の並び>(テーブル名)
<Image4>では、
πGenre_Name(cinema_list)
という射影演算により<Image4>のような結果となりました。もとになるテーブルには同じ値を持ったタプルがありました。しかし、演算結果には現れていません。これは、同じ値のタプルは存在しないという集合の特性から重複しているタプルは削除られたからです。
|
|
|
|
|
|

<Image4>
|
|
|
|
|
|
|
|
|
|
|
|
●結合演算(Join) |
|
|
|
|
|
結合演算は、2つのテーブルからある結合条件を満たすタプルだけを取り出して連結したテーブルを構成します。結合条件は、同じ定義域を持つ2つの属性を比較演算子(=,
≠,<,>,≦,≧)を使って表現します。
例えば、比較演算子が'=’であったなら、属性の値が同じタプルどうしが結合されます。そうすると結合されたテーブルには同じ属性の値を持つタプルが出来ます。このような結合演算を等結合演算といいます。
また、重複した属性を除去した結合演算を自然結合といいます。自然結合は次のように表現できます。
R1*属性1=属性2 R2
<Image5>では、
Cinema * genre_code = genre_code Genre
という結合演算により<Image5>の結果となりました。Genre_codeの値が等しいタプルが結合されています。そして、テーブル(Cinema)とテーブル(Genre)のGenre_codeは、重複してしていないので演算結果は自然結合です。
この結合演算は、複数のテーブルを処理する場合によく使われるためRDBの操作において重要な演算です。
|
|
|
|
|
|

<Image5>
|
|
|
|
|
|
|
|
|
|