10-データベース

データベース(Part.7)| リレーショナル代数 | 現役エンジニア&プログラミングスクール講師

目標

「リレーションの操作体系」の種類を確認する
「リレーショナル代数」について概要を理解する

リレーションの操作体系

リレーションの操作体系

リレーションの操作とは

データベースのユーザーはデータベースに格納されたデータに対して「検索」や「抽出」を行ったり、それらを組み合わせることで沢山の情報を得ることができます。この「検索」や「抽出」「組み合わせる」などがリレーションの操作となります。

リレーションの操作体系

リレーションの操作体系には次の2つの種類があります。

  1. リレーショナル代数
  2. リレーショナル論理式

どちらでも同様の操作が可能ですが、どんな操作でもできるというわけではありません。この記事ではリレーショナル代数の利用について取り上げています。

リレーショナル代数

リレーショナル代数とは

リレーショナル代数(関係代数)はリレーショナルデータベースにおいて集合の操作を体系化したものとなります。

リレーショナル代数の分類

リレーショナル代数には集合演算とリレーショナルデータベース固有の演算を定義したものがあります。

  1. 集合演算…和集合演算・差集合演算・共通集合演算・直積演算
  2. 固有演算…射影演算・選択演算・結合演算・商演算

和両立

集合演算のうち「和集合演算」「差集合演算」「共通集合演算」については演算の対象とする2つのリレーションで「リレーションの次数」「対応するドメイン(属性の型やその範囲)」が等しい必要があります。この関係のことを和両立といいます。

上の和両立のリレーションをベン図で表現すると次のようになります。

集合演算

和集合 青円∪黄円

和集合演算を行うと両リレーションで存在している全てのタプルを1パターンずつ抽出します。同じものが両方のリレーションにある場合は2度抽出はされません。

下の図では{たい焼き,180}と{おばあちゃん期間限定プリン,100}の2つのタプルは「夏期限定メニュー」と「冬期限定メニュー」でそれぞれ存在しています。この場合、和集合では「全体のメニューの種類」を抽出する操作と同じになるので和集合後のリレーションでは全てのタプルの個数は7つとなります。

差集合 青円ー黄円 黄円ー青円

差集合演算ではどちらかにしかないタプルのパターンを抽出します。

【差集合:夏期限定メニューだけに存在するタプルの抽出】

【差集合:冬期限定メニューだけに存在するタプルの抽出】

共通集合 青円∩黄円

共通集合演算では両方のリレーションに存在するタプルを抽出します。

直積

直積は2つのリレーションにある全てのタプルの組み合わせを求める演算です。例えば下の2つのリレーション「顧客テーブル」「冬期限定メニュー」について直積を考えてみたいと思います。

上のリレーションで直積を求めると下のようになります。

直積で出力したリレーションの属性名は「元のリレーション名.属性名」とします。例えば今回であれば「顧客テーブル」には「お客さんID」と「お客さん」があったので、表記は「顧客テーブル.お客さんID」と「顧客テーブル.お客さん」となります。顧客テーブルの省略を「C」とすれば「C.お客さんID」と「C.お客さん」と表記できます。

固有演算

射影演算

リレーションの中から指定した属性のカラム(列)を取り出す演算です。例えば下のリレーション(在庫テーブル)から「商品」「発注元」「仕入れ値」のカラムを取り出すとした場合が射影演算となります。

射影演算で指定する属性を「商品」「発注元」「仕入れ値」とした場合の表示は次のようになります。

選択演算

リレーションの中からある属性に対して指定した条件とマッチするタプル(行)を取り出す演算です。例えば下のリレーション(在庫テーブル)から在庫数が10以下の行を取り出すような操作が選択演算となります。

数値の条件以外にも、例えば発注元が「あまい株式会社」のように文字列でも選択演算が可能です。

選択演算を在庫数が10以下で行った場合の表示は次にようになります。

結合演算

2つのリレーションに条件を指定して1つにする演算を結合演算といいます。結合演算には内部結合…「等結合」「自然結合」など
外部結合…「完全外部結合」「左外部結合」「右外部結合」があります。

単に「結合」という場合は「内部結合」を指します。

結合は直積と選択の組み合わせと同じ結果となります。
(結合 = 直積 + 選択)

条件には双方のリレーションで共通する属性を利用します。

内部結合(等結合)

2つのリレーションから双方で一致する値のタプル同士を結合して取り出す結合で取り出しに利用した属性の値が重複して存在する結合を等結合といいます。

一致しない項目は結合の結果には含まれません。

下は例となります。

等結合の結果は次のようになります。

内部結合(自然結合)

2つのリレーションから双方で一致する値のタプル同士を結合して取り出す結合を自然結合といいます。

一致しない項目は結合の結果には含まれません。

例えば下の表では「商品区分」と「発注先一覧」で「会社番号」属性の一致するタプル同士を結び付けて結合します。

自然結合の結果は次のようになります。

完全外部結合

2つのリレーションから全てのタプルを組み合わせて取り出す結合を完全外部結合といいます。対するリレーションで結合部分に値がない場合は「NULL」となります。

左外部結合

完全外部結合の結果から左のリレーションに値が存在するタプルのみを取り出す結合を左外部結合といいます。下は例となります。

右外部結合

完全外部結合の結果から右のリレーションに値が存在するタプルのみを取り出す結合を右外部結合といいます。下は例となります。

商演算

商演算は次の手順で行われます。

  1. 割られる側の全タプルの内、割る側で指定した値(今回は「株式会社なんごく」と「株式会社ふれっしゅ」)が存在する全てのタプルを取り出す。
  2. 取り出したタプルの内、割る側で指定した値以外の値が全て同じものを取り出す。

【手順1】

割られる側の全タプルの内、割る側で指定した値(今回は「株式会社なんごく」と「株式会社ふれっしゅ」)が在する全てのタプルを取り出す。

【手順2】

取り出したタプルの内、割る側で指定した値以外の値が全て同じものを取り出す。

商演算を行った結果は次のようになります。

今回は以上になります。

「データベース」おすすめ書籍6選【初心者用3冊&実践用3冊】| 現役エンジニア&プログラミングスクール講師「データベース」初心者の方がデータベースを基本からしっかりと理解するためのお勧めの書籍について取り上げています。また中級者の方が更に進んだ学習ができる実践的な書籍についてお勧めできる3冊を取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
10-データベース

データベース(Part.2)| 3層スキーマの概要 | 現役エンジニア&プログラミングスクール講師

2023年3月31日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.9)| 保全機能・排他制御・障害復旧 | 現役エンジニア&プログラミングスクール講師

2023年4月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.11)| MariaDB SQLと表の種類&SQLコマンド例 | 現役エンジニア&プログラミングスクール講師

2023年4月13日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.10)| MariaDBのインストール(Windows版)| 現役エンジニア&プログラミングスクール講師

2023年4月11日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.3)| 概念モデルと論理モデル(概念スキーマ)| 現役エンジニア&プログラミングスクール講師

2023年4月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.1)| データベースの概要 | 現役エンジニア&プログラミングスクール講師

2023年3月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site