SlideShare a Scribd company logo
データベースシステム論
2015年度 後期 火曜 3・4時限 情14教室
担当:横山昌平
データベースシステム論 第 回2015 [ 3 ] 1p.
講義計画
• 関係データベースの歴史と基本概念
• SQLの基礎と応用(演習を含めつつ)
• データベースの設計と構成
• SQL問い合わせ処理とそれを支える技術
• 関係データモデル以外のデータベース
データベースシステム論 第 回2015 [ 3 ] 2p.
※現時点での予定です。進捗に応じて変更します。
27Oct.
20Oct.
13Oct.
24Nov.
17Nov.
10Nov.
1Dec.
8Dec.
5Jan.
15Dec.
26Jan.
19Jan.
12Jan.
2Feb.
データベースシステム論
第3回 関係データモデルと関係代数
• DBの三層アーキテクチャ
• 関係データモデル
• 関係代数 (時間の許す限り)
データベースシステム論 第 回2015 [ 3 ] 3p.
なぜ関係データベースか
• ネットワーク型・階層型データベース
• Edgar F. Codd(1923-2003)
• データはハードウェアから独立して格納されるべき
• 行と列のみで構成される表として格納されるべき
• 非手続き型言語を使ってデータにアクセスすべき
データベースシステム論 第 回2015 [ 3 ] 4p.
ナビゲーション(レコード間の繋がり)構造に詳しくないと、
クエリ(検索等命令)が書けない点が問題。
Codd, Edgar F. "A relational model of data for large shared data banks."Pioneers and Their
Contributions to Software Engineering. Springer Berlin Heidelberg, 2001. 61-98.
これらそれぞれの意味は次回説明しますが、ここで覚えて
おいて欲しいのは、関係データモデルは単純簡潔だという
事です。それが普及し、また今でも使われている一因です。
前回のスライド
三層スキーマアーキテクチャ
• 内部スキーマ:データの物理的格納構造(二次記
憶上でのデータ編成法)とアクセスパス(インデ
クスなどの特定のデータに対するアクセス方法,
アクセスメソッドとも)を記述する.
• 概念スキーマ:内部スキーマの上にあり,物理的
な詳細情報を隠蔽し,データベースに格納される
実体のデータ型,関係,制約,操作を利用者全体
に対して論理的に記述する.
• 外部スキーマ:概念スキーマの上にあり,その一
部を特定の利用者グループ(アプリケーションプ
ログラムも含む)からのアクセスに対して記述し,
残りの部分を隠蔽する.ビューともいう
データベースシステム論 第 回2015 [ 3 ] 5p.
三層スキーマアーキテクチャ
データベースシステム論 第 回2015 [ 3 ] 6p.
概念スキーマ
内部スキーマ
外部スキーマ 外部スキーマ外部スキーマ
ディスク上にどう格納する?
いわゆる行と列からなる表
データ型、制約etc
ビュー
データ独立性
• 三層の間には独立性があるよという話
• 論理的データ独立性:概念スキーマの変更を,外部
スキーマやアプリケーションプログラムを変更せず
に行えること(例 列の追加や削除)
• 物理的データ独立性:内部スキーマの変更を,概念
スキーマや外部スキーマを変更せずに行えること
(例 ディスクからオンメモリへの変更等)
データベースシステム論 第 回2015 [ 3 ] 7p.
外
部
ス
キ
ー
マ
概
念
ス
キ
ー
マ
内
部
ス
キ
ー
マ
‫ﵬ‬ ‫ﷰ‬ ‫ﶧ‬
‫ﰥ‬ ‫ﵣ‬ ‫ﰥ‬
‫ﲯ‬ ‫ﲄ‬ ‫ﷳ‬
‫ﵬ‬
‫ﰥ‬
‫ﲯ‬
影
響
無
し
影
響
無
し
変更追加
データベース利用者(登場人物)
データベースシステム論 第 回2015 [ 3 ] 8p.
エンドユーザ
データベース管理者アプリケーション開発者
データベース開発者
アプリケーション データベース
データベース開発者
• データベースを売っている企業の開発者
• Oracle, IBM, Microsoft等でDB開発に携わっている人
• オープンソースDBMSプロジェクトに参画してる人
• データベースシステムそのものを作っている
• SQLの処理エンジン
• 新機能の開発
データベースシステム論 第 回2015 [ 3 ] 9p.
データベース管理者
(Database administrator, DBA)
• 企業などで以下を行う専門家をさす
• 概念スキーマと内部スキーマの定義や変更
• 物理的記憶領域
• 性能のチューニング
• データ登録
• 機密保護に関するアクセス権設定
• データ制約の設定
• (完全性制約,整合性制約や一貫性制約ともいう)
• データベースのバックアップ,障害復旧.
データベースシステム論 第 回2015 [ 3 ] 10p.
アプリケーション開発者
(Application programmer)
• データベースアプリケーションを開発す
る利用者である.
• エンドユーザのために,かれらの要求を
分析し,データベースの提供する言語や
ソフトウエアツール,プログラミングを
行ってデータベースにアクセスするソフ
トウエア(アプリケーション)を作る.
• 外部スキーマを用いる場合もあるが,よ
り下位のスキーマを用いることもある.
データベースシステム論 第 回2015 [ 3 ] 11p.
エンドユーザ(End user)
• それぞれの分野(最近はそれが非常に多岐に渡
る)においてデータベースにデータを格納した
り,そのデータを利用したりする利用者をさす
• SQLコマンドで操作する
• 近年のシステムでエンドユーザがSQLを扱う事は殆ど無い
• エンドユーザ向けアプリケーションから操作する
• Microsoft AccessをRDBのフロントエンドとして利用する
• 何気なく使っているアプリケーションから利用する
• 現在の多くのアプリケーションはRDBを利用している
• 通常はコンピュータの専門家ではなく外部ス
キーマを用いてデータベースにアクセスする.
データベースシステム論 第 回2015 [ 3 ] 12p.
テーブル(リレーション)の例
• ポイント
• 行の順序、列の順序は関係ない
• 問い合わせ時に整列(ソート)させて初めて順序がつく
• テーブルには行を一意で識別するID(キー)が必要
• とは言え多くのDBMSはキーが無くてもエラーは吐かない
• ただテーブル設計としては好ましくない
データベースシステム論 第 回2015 [ 3 ] 13p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
タプル, レコード, 行(row)
スキーマ
カラム, フィールド, 列
属性, アトリビュート
候補キーの例
データベースシステム論 第 回2015 [ 3 ] 14p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
候補キー
(Primary key)
その値だけ見れば、どのタプルか特定
できるカラム。つまり全ての行で異なる
値を持つカラム。この例ではワインID、
セットIDとその隣の名前。ワインの名
前は、違うビンテージの同名のワインを
入荷するかもしれないので候補とならず。
人工キー 自然キー
主キーの例
データベースシステム論 第 回2015 [ 3 ] 15p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
主キー(Primary key) その値だけ見れば、どのタプルか特定
できるカラム。このうち管理者が1つだ
け指定したカラム例では、ワインIDが1
ならブルゴーニュ産シャブリ2001年だ
という事が分かる。またセットIDが1な
らブルゴーニュセットだと分かる。
代理キーの例
データベースシステム論 第 回2015 [ 3 ] 16p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
代理キー(alternative key) 候補キーのうち主キーに選ばれなかっ
たもの。別の例で言い換えると、例えば
皆さんの学籍番号と免許証番号とパス
ポート番号は全てユニークな値なので候
補キーです。その中から1つ主キーに選
んだ場合、残りの2つは代理キーです。
複合キーの例
データベースシステム論 第 回2015 [ 3 ] 17p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
複合キー(Compound key) 二つ以上のカラムを使えば行が一意に
指定できるキー。この例では、ワインの
名前とビンテージの年を両方見る事に
よって、ワインが特定できる筈なので、
行が一意に求まるキーとして利用できる。
テーブル間の関係を定義する
データベースシステム論 第 回2015 [ 3 ] 18p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
次にワインセットにワインを割り当てる
1 2 3 4
1 5 2 3 4
セットID=1 セットID=2
セットID=3 セットID=4
外部キー
データベースシステム論 第 回2015 [ 3 ] 19p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
セットID 名前 本数 価格
1 ブルゴーニュセット 2 5400
2 ボルドーセット 2 8000
3 白ワインセット 2 5200
4 赤ワインセット 3 11000
セットID ワインID
1 1
1 2
2 3
2 4
3 1
3 5
4 2
4 3
4 4
両方のテーブル
のキーをカラムに
と る ス キ ー マ の
テーブルを作る。
それぞれのカラ
ムに対象テーブル
への外部キーの指
定をする。
外部キー(Foreign key)
では「キー」とは何か
データベースシステム論 第 回2015 [ 3 ] 20p.
と呼ばれています。
制約とは
• 要はルール
• テーブル内に入るデータが従うべきルール
データベースシステム論 第 回2015 [ 3 ] 21p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
主キー(Primary key)
6 シャンメリー 工場 ブドウ 白 スパークリング 2013 800
挿入!
エラーを吐いて、挿入できない。
主キーは行を一意に識別できなければなら
ないという制約の事。すなわち、値の重複
が許されていない。
制約いろいろ
• 主キー
• 重複を許さない
• NULL値をとらない
• 外部キー
• 参照先カラムに存在する値でなくてはならない
• ただしNULL値は許される
• 定義域制約 (domain constraint)
• ユーザ定義の値範囲に含まれる事を保障
• 例:曜日カラムは”月,火,水,木,金,土,日”のいずれか
• 例:NOT NULL制約(NULL値を許さない)
• 関数従属性 (functionally depend)
• あるカラムの値が別のカラムの値を関数的に決定
• 例:誕生日→年齢 (誕生日と今日の日付から年齢を算出可能)
• 年齢→誕生日は算出不可な事に注意
データベースシステム論 第 回2015 [ 3 ] 22p.
関係代数 ( relational algebra)
• 操作は関係演算(relational operation)と呼ばれ,
それには,選択,射影,和集合,差集合,直積と
いうリレーションに対する基本演算がある。
• 加えて共通集合,結合・自然結合,商集合という
拡張演算があり,それらは基本演算の組み合わせ
で 定 義 で き る 。 こ れ ら を 総 称 し て 関 係 代 数
(relational algebra)という。
• 関係演算には関係論理(relational calculus)とい
う別の体系があるが,それは表現能力の点では関
係代数と等価である。
• 関係代数がより手続き的であるのに対して,関係
論理はより宣言的に問い合わせを表現する。
データベースシステム論 第 回2015 [ 3 ] 23p.
選択演算
• 関係代数における選択(select)は,リレーション
Rについて,属性に関する条件(選択条件)を満た
すタプルを求める。一般形は以下のように記述す
る。
• 𝜎𝜎𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐(𝑅𝑅)
• ここでconditionは以下の単純条件をブーリアン演
算子(AND, OR, NOT)で結合したものである。
• 属性名 比較演算子 定数 または
• 属性名 比較演算子 属性名
• 比較演算子は{=,<,≦,>,≧,≠}のどれかひとつ
である。定数は定義域の定数である。
• 選択条件の列は,どのような順で実行しても結果
はかわらない。
シグマ
データベースシステム論 第 回2015 [ 3 ] 24p.
選択演算 - 例
• 価格が三千円以下の赤ワインを選択する
• σ価格≤3000 AND 色=‘赤’(R)
• SELECT * FROM wine WHERE 価格 <= 3000 AND 色 =‘赤’;
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
データベースシステム論 第 回2015 [ 3 ] 25p.
射影演算
• 射影(project)は,リレーションRの特定の属性
(カラム)を求める。一般形は以下のようになる。
• π属性リスト(R)
• 属性リストは属性名をカンマで区切ったもの。
• 属性リストにキーでない属性のみが指定された場
合は,結果にタプルが重複して現れる可能性があ
る。ここでは射影演算はこの重複を削除するもの
と仮定。
• 同一要素を複数含む集合を一般の集合(set)に対
して多重集合(multisetまたはbag)という。
• 射影演算はその順番を入れ替えることはできない。
データベースシステム論 第 回2015 [ 3 ] 26p.
パイ
射影演算- 例
• 名前と色と価格のみを射影する
• π名前, 色, 価格(R)
• SELECT 名前, 色, 価格 FROM wine;
データベースシステム論 第 回2015 [ 3 ] 27p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
名前 色 価格
シャブリ 白 2400
ジュヴレシャンベルタン 赤 3000
サンテミリオン 赤 5800
オーメドック 赤 2200
サンセール 白 2800
シャンパン 白 4000
集合和演算
• 和(union)は、リレーションRとSに対して、全
てのタプルで構成された1つのリレーションを
返す。ただし重複行は除去される。一般系は以
下のように表される。
• R∪S
• 和演算する二つのリレーションは型適合でなく
てはならない。
• 型適合とは、スキーマが同一である、すなわち、リ
レーションが同名かつ同型の属性から成り立ってい
なければならない。
データベースシステム論 第 回2015 [ 3 ] 28p.
集合和演算- 例
• wine1 ∪ wine2
• wine1 UNION wine2
データベースシステム論 第 回2015 [ 3 ] 29p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
wine1
wine2
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
集合差演算
• 差演算(difference)はリレーションRとSに対し
て、RからSを取り除いたリレーションを返す。
一般系は以下のように表される。
• R-S
• 差演算する二つのリレーションは型適合でなく
てはならない。
• 型適合とは、スキーマが同一である、すなわち、リ
レーションが同名かつ同型の属性から成り立ってい
なければならない。
データベースシステム論 第 回2015 [ 3 ] 30p.
集合差演算- 例
• wine1 - wine2
• wine1 EXCEPT wine2
データベースシステム論 第 回2015 [ 3 ] 31p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
wine1
wine2
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
集合積演算
• 積演算(intersection)はリレーションRとSに対し
て、両方に属するタプルからなるリレーション
を返す。一般系は以下のように表される。
• R∩S
• 積演算する二つのリレーションは型適合でなく
てはならない。
• 型適合とは、スキーマが同一である、すなわち、リ
レーションが同名かつ同型の属性から成り立ってい
なければならない。
データベースシステム論 第 回2015 [ 3 ] 32p.
集合積演算- 例
• wine1 ∩ wine2
• wine1 INTERSECT wine2
データベースシステム論 第 回2015 [ 3 ] 33p.
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
wine1
wine2
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
[ポイント] 集合積演算は集合差のみで表す事ができます。次の式と集合
差演算のスライドを見て考えてみよう。 R∩S=R-(R-S)
直積演算- 例
• 直積演算(cartesian product)はリレーションRと
Sに対して、全てのタプルの組み合わせからな
るリレーションを返す。一般系は以下のように
表される。
• R×S
• R×Sで返されるリレーションの行数はRの行数
とSの行数の積になり、属性数はRの属性数とS
の属性数の和になる。
データベースシステム論 第 回2015 [ 3 ] 34p.
集合積とは名前が似てても全く異なる演算です
直積演算
形式 価格
グラス 500
カラフェ 1000
ボトル 2000
データベースシステム論 第 回2015 [ 3 ] 35p.
色 産地
赤 チリ
白 アルゼンチン
形式 価格 色 産地
グラス 500 赤 チリ
グラス 500 白 アルゼンチン
カラフェ 1000 赤 チリ
カラフェ 1000 白 アルゼンチン
ボトル 2000 赤 チリ
ボトル 2000 白 アルゼンチン
• wine_type × wine_color
• SELECT * FROM wine_type, wine_color;
wine_type wine_color
商演算
• 商演算(division)は直積演算とは対称となる逆の
演算と考えることができる。 例えばRとSの直
積がTの時、TとSの商はRとなる。一般系は以
下のように表される。
• R÷S
• 概念的にはR÷Sが常に(いや殆どの場合で)
『割り切れる』訳では無い事も考慮すべき。
• R÷S=T余りV
• この時『T×S=R∪V』となる
• ただ関係代数(SQL)として『余り』は扱わない。
データベースシステム論 第 回2015 [ 3 ] 36p.
商演算- 例
ブドウの種類
カベルネフラン
ピノノワール
データベースシステム論 第 回2015 [ 3 ] 37p.
セットID ブドウの種類
1 シラー
1 ピノノワール
2 シラー
2 メルロー
3 カベルネフラン
3 ピノノワール
3 シラー
wine_set favorite
• wine_set ÷ favorite
• SQLは非サポート(ただし複数の演算の組み合わせで書けます)
セットID
3 →貴方の好み(Favorite)に従ったワインセットのIDは3
リネーム演算
• リレーション名、属性名を変更する演算である。
例えばリレーションRの名前をSに、Rの属性X
をYに変更する時の一般系は次のように表され
る。
• ρS(Y←X)R
• リレーション名、属性名のいずれか一方を変更
する事もできる。
• ρ(Y←X)R
• ρSR
データベースシステム論 第 回2015 [ 3 ] 38p.
ロー
リネーム演算 - 例
• 属性「名前」を「Label」に変更する
• ρ(label←名前)R
• SELECT 名前 AS label FROM wine;
ワインID 名前 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
ワインID Label 産地 品種 色 タイプ ビンテージ 価格
1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400
2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800
4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200
5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800
6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
データベースシステム論 第 回2015 [ 3 ] 39p.
ここまでの関係演算のまとめ
• 選択 σ条件式(R)
• 射影 π属性リスト(R)
• 集合和 R∪S
• 集合差 R-S
• 集合積 R∩S
• 直積 R×S
• 商 R÷S
• リネーム ρ(label←名前)R
データベースシステム論 第 回2015 [ 3 ] 40p.
結合律と可換律
集合和、集合積、直積は以下の結合律と
可換律を満たす演算である。
• 結合律:A●(B●C)=(A●B)●C
• 可換律:A●B=B ●A
※●は演算子(∪,∩, ×)
次回予告
第4回 関係代数(後編-結合演算・集約演算)
データベースシステム論 第 回2015 [ 3 ] 41p.
第4回 関係代数(後編)
• 結合演算
• テーブルを横方向にガチャンとくっつける演算
• 結合演算は多種あるので必ず教科書に目を通して演
算名ぐらい覚えておいてください。
• 集約演算
• 複数行を跨いだ集約を行う演算
• 予習
• 対応箇所:第2章
• 関連個所:無し
データベースシステム論 第 回2015 [ 3 ] 42p.

More Related Content

What's hot

例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
Takuto Wada
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?takezoe
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
 
アップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイントアップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイント
kurikiyo
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
 
Marp入門
Marp入門Marp入門
Marp入門
Rui Watanabe
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
MITSUNARI Shigeo
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
増田 亨
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
Yushiro Nirei
 

What's hot (20)

例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?そんなトランザクションマネージャで大丈夫か?
そんなトランザクションマネージャで大丈夫か?
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
アップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイントアップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイント
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
Marp入門
Marp入門Marp入門
Marp入門
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
琴坂研究会B1紹介スライド / Kotosaka-Seminar_JapaneseClass_Introduction
 

More from Shohei Yokoyama

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
Shohei Yokoyama
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!
Shohei Yokoyama
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用
Shohei Yokoyama
 
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
Shohei Yokoyama
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
Shohei Yokoyama
 
データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計
Shohei Yokoyama
 
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
Shohei Yokoyama
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他
Shohei Yokoyama
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
Shohei Yokoyama
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
Shohei Yokoyama
 
データベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストールデータベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストール
Shohei Yokoyama
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今
Shohei Yokoyama
 
データベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンスデータベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンス
Shohei Yokoyama
 
静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系
Shohei Yokoyama
 

More from Shohei Yokoyama (14)

データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
 
データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!データベースシステム論14 - 総復習!
データベースシステム論14 - 総復習!
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用
 
データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化データベースシステム論12 - 問い合わせ処理と最適化
データベースシステム論12 - 問い合わせ処理と最適化
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
 
データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計データベースシステム論10 - データベースの設計
データベースシステム論10 - データベースの設計
 
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
データベースシステム論09 - SQL応用演習2 ビューとトリガ、アクセス権
 
データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他データベースシステム論08 - SQL応用演習 結合演算とその他
データベースシステム論08 - SQL応用演習 結合演算とその他
 
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせデータベースシステム論07 - SQL基礎演習2 データの問い合わせ
データベースシステム論07 - SQL基礎演習2 データの問い合わせ
 
データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作データベースシステム論06 - SQL基礎演習1 データの定義と操作
データベースシステム論06 - SQL基礎演習1 データの定義と操作
 
データベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストールデータベースシステム論05 - PostgreSQLのインストール
データベースシステム論05 - PostgreSQLのインストール
 
データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今データベースシステム論02 - データベースの歴史と今
データベースシステム論02 - データベースの歴史と今
 
データベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンスデータベースシステム論01 - ガイダンス
データベースシステム論01 - ガイダンス
 
静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系静大情報学部オープンキャンパス ミニ講義CS系
静大情報学部オープンキャンパス ミニ講義CS系
 

データベースシステム論03 - 関係データモデルと関係代数(前半)

  • 1. データベースシステム論 2015年度 後期 火曜 3・4時限 情14教室 担当:横山昌平 データベースシステム論 第 回2015 [ 3 ] 1p.
  • 2. 講義計画 • 関係データベースの歴史と基本概念 • SQLの基礎と応用(演習を含めつつ) • データベースの設計と構成 • SQL問い合わせ処理とそれを支える技術 • 関係データモデル以外のデータベース データベースシステム論 第 回2015 [ 3 ] 2p. ※現時点での予定です。進捗に応じて変更します。 27Oct. 20Oct. 13Oct. 24Nov. 17Nov. 10Nov. 1Dec. 8Dec. 5Jan. 15Dec. 26Jan. 19Jan. 12Jan. 2Feb.
  • 3. データベースシステム論 第3回 関係データモデルと関係代数 • DBの三層アーキテクチャ • 関係データモデル • 関係代数 (時間の許す限り) データベースシステム論 第 回2015 [ 3 ] 3p.
  • 4. なぜ関係データベースか • ネットワーク型・階層型データベース • Edgar F. Codd(1923-2003) • データはハードウェアから独立して格納されるべき • 行と列のみで構成される表として格納されるべき • 非手続き型言語を使ってデータにアクセスすべき データベースシステム論 第 回2015 [ 3 ] 4p. ナビゲーション(レコード間の繋がり)構造に詳しくないと、 クエリ(検索等命令)が書けない点が問題。 Codd, Edgar F. "A relational model of data for large shared data banks."Pioneers and Their Contributions to Software Engineering. Springer Berlin Heidelberg, 2001. 61-98. これらそれぞれの意味は次回説明しますが、ここで覚えて おいて欲しいのは、関係データモデルは単純簡潔だという 事です。それが普及し、また今でも使われている一因です。 前回のスライド
  • 5. 三層スキーマアーキテクチャ • 内部スキーマ:データの物理的格納構造(二次記 憶上でのデータ編成法)とアクセスパス(インデ クスなどの特定のデータに対するアクセス方法, アクセスメソッドとも)を記述する. • 概念スキーマ:内部スキーマの上にあり,物理的 な詳細情報を隠蔽し,データベースに格納される 実体のデータ型,関係,制約,操作を利用者全体 に対して論理的に記述する. • 外部スキーマ:概念スキーマの上にあり,その一 部を特定の利用者グループ(アプリケーションプ ログラムも含む)からのアクセスに対して記述し, 残りの部分を隠蔽する.ビューともいう データベースシステム論 第 回2015 [ 3 ] 5p.
  • 6. 三層スキーマアーキテクチャ データベースシステム論 第 回2015 [ 3 ] 6p. 概念スキーマ 内部スキーマ 外部スキーマ 外部スキーマ外部スキーマ ディスク上にどう格納する? いわゆる行と列からなる表 データ型、制約etc ビュー
  • 7. データ独立性 • 三層の間には独立性があるよという話 • 論理的データ独立性:概念スキーマの変更を,外部 スキーマやアプリケーションプログラムを変更せず に行えること(例 列の追加や削除) • 物理的データ独立性:内部スキーマの変更を,概念 スキーマや外部スキーマを変更せずに行えること (例 ディスクからオンメモリへの変更等) データベースシステム論 第 回2015 [ 3 ] 7p. 外 部 ス キ ー マ 概 念 ス キ ー マ 内 部 ス キ ー マ ‫ﵬ‬ ‫ﷰ‬ ‫ﶧ‬ ‫ﰥ‬ ‫ﵣ‬ ‫ﰥ‬ ‫ﲯ‬ ‫ﲄ‬ ‫ﷳ‬ ‫ﵬ‬ ‫ﰥ‬ ‫ﲯ‬ 影 響 無 し 影 響 無 し 変更追加
  • 8. データベース利用者(登場人物) データベースシステム論 第 回2015 [ 3 ] 8p. エンドユーザ データベース管理者アプリケーション開発者 データベース開発者 アプリケーション データベース
  • 9. データベース開発者 • データベースを売っている企業の開発者 • Oracle, IBM, Microsoft等でDB開発に携わっている人 • オープンソースDBMSプロジェクトに参画してる人 • データベースシステムそのものを作っている • SQLの処理エンジン • 新機能の開発 データベースシステム論 第 回2015 [ 3 ] 9p.
  • 10. データベース管理者 (Database administrator, DBA) • 企業などで以下を行う専門家をさす • 概念スキーマと内部スキーマの定義や変更 • 物理的記憶領域 • 性能のチューニング • データ登録 • 機密保護に関するアクセス権設定 • データ制約の設定 • (完全性制約,整合性制約や一貫性制約ともいう) • データベースのバックアップ,障害復旧. データベースシステム論 第 回2015 [ 3 ] 10p.
  • 11. アプリケーション開発者 (Application programmer) • データベースアプリケーションを開発す る利用者である. • エンドユーザのために,かれらの要求を 分析し,データベースの提供する言語や ソフトウエアツール,プログラミングを 行ってデータベースにアクセスするソフ トウエア(アプリケーション)を作る. • 外部スキーマを用いる場合もあるが,よ り下位のスキーマを用いることもある. データベースシステム論 第 回2015 [ 3 ] 11p.
  • 12. エンドユーザ(End user) • それぞれの分野(最近はそれが非常に多岐に渡 る)においてデータベースにデータを格納した り,そのデータを利用したりする利用者をさす • SQLコマンドで操作する • 近年のシステムでエンドユーザがSQLを扱う事は殆ど無い • エンドユーザ向けアプリケーションから操作する • Microsoft AccessをRDBのフロントエンドとして利用する • 何気なく使っているアプリケーションから利用する • 現在の多くのアプリケーションはRDBを利用している • 通常はコンピュータの専門家ではなく外部ス キーマを用いてデータベースにアクセスする. データベースシステム論 第 回2015 [ 3 ] 12p.
  • 13. テーブル(リレーション)の例 • ポイント • 行の順序、列の順序は関係ない • 問い合わせ時に整列(ソート)させて初めて順序がつく • テーブルには行を一意で識別するID(キー)が必要 • とは言え多くのDBMSはキーが無くてもエラーは吐かない • ただテーブル設計としては好ましくない データベースシステム論 第 回2015 [ 3 ] 13p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 タプル, レコード, 行(row) スキーマ カラム, フィールド, 列 属性, アトリビュート
  • 14. 候補キーの例 データベースシステム論 第 回2015 [ 3 ] 14p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 候補キー (Primary key) その値だけ見れば、どのタプルか特定 できるカラム。つまり全ての行で異なる 値を持つカラム。この例ではワインID、 セットIDとその隣の名前。ワインの名 前は、違うビンテージの同名のワインを 入荷するかもしれないので候補とならず。 人工キー 自然キー
  • 15. 主キーの例 データベースシステム論 第 回2015 [ 3 ] 15p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 主キー(Primary key) その値だけ見れば、どのタプルか特定 できるカラム。このうち管理者が1つだ け指定したカラム例では、ワインIDが1 ならブルゴーニュ産シャブリ2001年だ という事が分かる。またセットIDが1な らブルゴーニュセットだと分かる。
  • 16. 代理キーの例 データベースシステム論 第 回2015 [ 3 ] 16p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 代理キー(alternative key) 候補キーのうち主キーに選ばれなかっ たもの。別の例で言い換えると、例えば 皆さんの学籍番号と免許証番号とパス ポート番号は全てユニークな値なので候 補キーです。その中から1つ主キーに選 んだ場合、残りの2つは代理キーです。
  • 17. 複合キーの例 データベースシステム論 第 回2015 [ 3 ] 17p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 複合キー(Compound key) 二つ以上のカラムを使えば行が一意に 指定できるキー。この例では、ワインの 名前とビンテージの年を両方見る事に よって、ワインが特定できる筈なので、 行が一意に求まるキーとして利用できる。
  • 18. テーブル間の関係を定義する データベースシステム論 第 回2015 [ 3 ] 18p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 次にワインセットにワインを割り当てる 1 2 3 4 1 5 2 3 4 セットID=1 セットID=2 セットID=3 セットID=4
  • 19. 外部キー データベースシステム論 第 回2015 [ 3 ] 19p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 セットID 名前 本数 価格 1 ブルゴーニュセット 2 5400 2 ボルドーセット 2 8000 3 白ワインセット 2 5200 4 赤ワインセット 3 11000 セットID ワインID 1 1 1 2 2 3 2 4 3 1 3 5 4 2 4 3 4 4 両方のテーブル のキーをカラムに と る ス キ ー マ の テーブルを作る。 それぞれのカラ ムに対象テーブル への外部キーの指 定をする。 外部キー(Foreign key)
  • 21. 制約とは • 要はルール • テーブル内に入るデータが従うべきルール データベースシステム論 第 回2015 [ 3 ] 21p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 主キー(Primary key) 6 シャンメリー 工場 ブドウ 白 スパークリング 2013 800 挿入! エラーを吐いて、挿入できない。 主キーは行を一意に識別できなければなら ないという制約の事。すなわち、値の重複 が許されていない。
  • 22. 制約いろいろ • 主キー • 重複を許さない • NULL値をとらない • 外部キー • 参照先カラムに存在する値でなくてはならない • ただしNULL値は許される • 定義域制約 (domain constraint) • ユーザ定義の値範囲に含まれる事を保障 • 例:曜日カラムは”月,火,水,木,金,土,日”のいずれか • 例:NOT NULL制約(NULL値を許さない) • 関数従属性 (functionally depend) • あるカラムの値が別のカラムの値を関数的に決定 • 例:誕生日→年齢 (誕生日と今日の日付から年齢を算出可能) • 年齢→誕生日は算出不可な事に注意 データベースシステム論 第 回2015 [ 3 ] 22p.
  • 23. 関係代数 ( relational algebra) • 操作は関係演算(relational operation)と呼ばれ, それには,選択,射影,和集合,差集合,直積と いうリレーションに対する基本演算がある。 • 加えて共通集合,結合・自然結合,商集合という 拡張演算があり,それらは基本演算の組み合わせ で 定 義 で き る 。 こ れ ら を 総 称 し て 関 係 代 数 (relational algebra)という。 • 関係演算には関係論理(relational calculus)とい う別の体系があるが,それは表現能力の点では関 係代数と等価である。 • 関係代数がより手続き的であるのに対して,関係 論理はより宣言的に問い合わせを表現する。 データベースシステム論 第 回2015 [ 3 ] 23p.
  • 24. 選択演算 • 関係代数における選択(select)は,リレーション Rについて,属性に関する条件(選択条件)を満た すタプルを求める。一般形は以下のように記述す る。 • 𝜎𝜎𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 𝑐𝑐(𝑅𝑅) • ここでconditionは以下の単純条件をブーリアン演 算子(AND, OR, NOT)で結合したものである。 • 属性名 比較演算子 定数 または • 属性名 比較演算子 属性名 • 比較演算子は{=,<,≦,>,≧,≠}のどれかひとつ である。定数は定義域の定数である。 • 選択条件の列は,どのような順で実行しても結果 はかわらない。 シグマ データベースシステム論 第 回2015 [ 3 ] 24p.
  • 25. 選択演算 - 例 • 価格が三千円以下の赤ワインを選択する • σ価格≤3000 AND 色=‘赤’(R) • SELECT * FROM wine WHERE 価格 <= 3000 AND 色 =‘赤’; ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 データベースシステム論 第 回2015 [ 3 ] 25p.
  • 26. 射影演算 • 射影(project)は,リレーションRの特定の属性 (カラム)を求める。一般形は以下のようになる。 • π属性リスト(R) • 属性リストは属性名をカンマで区切ったもの。 • 属性リストにキーでない属性のみが指定された場 合は,結果にタプルが重複して現れる可能性があ る。ここでは射影演算はこの重複を削除するもの と仮定。 • 同一要素を複数含む集合を一般の集合(set)に対 して多重集合(multisetまたはbag)という。 • 射影演算はその順番を入れ替えることはできない。 データベースシステム論 第 回2015 [ 3 ] 26p. パイ
  • 27. 射影演算- 例 • 名前と色と価格のみを射影する • π名前, 色, 価格(R) • SELECT 名前, 色, 価格 FROM wine; データベースシステム論 第 回2015 [ 3 ] 27p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 名前 色 価格 シャブリ 白 2400 ジュヴレシャンベルタン 赤 3000 サンテミリオン 赤 5800 オーメドック 赤 2200 サンセール 白 2800 シャンパン 白 4000
  • 28. 集合和演算 • 和(union)は、リレーションRとSに対して、全 てのタプルで構成された1つのリレーションを 返す。ただし重複行は除去される。一般系は以 下のように表される。 • R∪S • 和演算する二つのリレーションは型適合でなく てはならない。 • 型適合とは、スキーマが同一である、すなわち、リ レーションが同名かつ同型の属性から成り立ってい なければならない。 データベースシステム論 第 回2015 [ 3 ] 28p.
  • 29. 集合和演算- 例 • wine1 ∪ wine2 • wine1 UNION wine2 データベースシステム論 第 回2015 [ 3 ] 29p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 wine1 wine2 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000
  • 30. 集合差演算 • 差演算(difference)はリレーションRとSに対し て、RからSを取り除いたリレーションを返す。 一般系は以下のように表される。 • R-S • 差演算する二つのリレーションは型適合でなく てはならない。 • 型適合とは、スキーマが同一である、すなわち、リ レーションが同名かつ同型の属性から成り立ってい なければならない。 データベースシステム論 第 回2015 [ 3 ] 30p.
  • 31. 集合差演算- 例 • wine1 - wine2 • wine1 EXCEPT wine2 データベースシステム論 第 回2015 [ 3 ] 31p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 wine1 wine2 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000
  • 32. 集合積演算 • 積演算(intersection)はリレーションRとSに対し て、両方に属するタプルからなるリレーション を返す。一般系は以下のように表される。 • R∩S • 積演算する二つのリレーションは型適合でなく てはならない。 • 型適合とは、スキーマが同一である、すなわち、リ レーションが同名かつ同型の属性から成り立ってい なければならない。 データベースシステム論 第 回2015 [ 3 ] 32p.
  • 33. 集合積演算- 例 • wine1 ∩ wine2 • wine1 INTERSECT wine2 データベースシステム論 第 回2015 [ 3 ] 33p. ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 wine1 wine2 ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 [ポイント] 集合積演算は集合差のみで表す事ができます。次の式と集合 差演算のスライドを見て考えてみよう。 R∩S=R-(R-S)
  • 34. 直積演算- 例 • 直積演算(cartesian product)はリレーションRと Sに対して、全てのタプルの組み合わせからな るリレーションを返す。一般系は以下のように 表される。 • R×S • R×Sで返されるリレーションの行数はRの行数 とSの行数の積になり、属性数はRの属性数とS の属性数の和になる。 データベースシステム論 第 回2015 [ 3 ] 34p. 集合積とは名前が似てても全く異なる演算です
  • 35. 直積演算 形式 価格 グラス 500 カラフェ 1000 ボトル 2000 データベースシステム論 第 回2015 [ 3 ] 35p. 色 産地 赤 チリ 白 アルゼンチン 形式 価格 色 産地 グラス 500 赤 チリ グラス 500 白 アルゼンチン カラフェ 1000 赤 チリ カラフェ 1000 白 アルゼンチン ボトル 2000 赤 チリ ボトル 2000 白 アルゼンチン • wine_type × wine_color • SELECT * FROM wine_type, wine_color; wine_type wine_color
  • 36. 商演算 • 商演算(division)は直積演算とは対称となる逆の 演算と考えることができる。 例えばRとSの直 積がTの時、TとSの商はRとなる。一般系は以 下のように表される。 • R÷S • 概念的にはR÷Sが常に(いや殆どの場合で) 『割り切れる』訳では無い事も考慮すべき。 • R÷S=T余りV • この時『T×S=R∪V』となる • ただ関係代数(SQL)として『余り』は扱わない。 データベースシステム論 第 回2015 [ 3 ] 36p.
  • 37. 商演算- 例 ブドウの種類 カベルネフラン ピノノワール データベースシステム論 第 回2015 [ 3 ] 37p. セットID ブドウの種類 1 シラー 1 ピノノワール 2 シラー 2 メルロー 3 カベルネフラン 3 ピノノワール 3 シラー wine_set favorite • wine_set ÷ favorite • SQLは非サポート(ただし複数の演算の組み合わせで書けます) セットID 3 →貴方の好み(Favorite)に従ったワインセットのIDは3
  • 38. リネーム演算 • リレーション名、属性名を変更する演算である。 例えばリレーションRの名前をSに、Rの属性X をYに変更する時の一般系は次のように表され る。 • ρS(Y←X)R • リレーション名、属性名のいずれか一方を変更 する事もできる。 • ρ(Y←X)R • ρSR データベースシステム論 第 回2015 [ 3 ] 38p. ロー
  • 39. リネーム演算 - 例 • 属性「名前」を「Label」に変更する • ρ(label←名前)R • SELECT 名前 AS label FROM wine; ワインID 名前 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 ワインID Label 産地 品種 色 タイプ ビンテージ 価格 1 シャブリ ブルゴーニュ シャルドネ 白 スティール 2001 2400 2 ジュヴレシャンベルタン ブルゴーニュ ピノノワール 赤 スティール 1998 3000 3 サンテミリオン ボルドー メルロー 赤 スティール 1997 5800 4 オーメドック ボルドー カルベネソーヴィニヨン 赤 スティール 1997 2200 5 サンセール ロワール ソーヴィニヨンブラン 白 スティール 2001 2800 6 シャンパン シャンパーニュ シャルドネ 白 スパークリング 1999 4000 データベースシステム論 第 回2015 [ 3 ] 39p.
  • 40. ここまでの関係演算のまとめ • 選択 σ条件式(R) • 射影 π属性リスト(R) • 集合和 R∪S • 集合差 R-S • 集合積 R∩S • 直積 R×S • 商 R÷S • リネーム ρ(label←名前)R データベースシステム論 第 回2015 [ 3 ] 40p. 結合律と可換律 集合和、集合積、直積は以下の結合律と 可換律を満たす演算である。 • 結合律:A●(B●C)=(A●B)●C • 可換律:A●B=B ●A ※●は演算子(∪,∩, ×)
  • 42. 第4回 関係代数(後編) • 結合演算 • テーブルを横方向にガチャンとくっつける演算 • 結合演算は多種あるので必ず教科書に目を通して演 算名ぐらい覚えておいてください。 • 集約演算 • 複数行を跨いだ集約を行う演算 • 予習 • 対応箇所:第2章 • 関連個所:無し データベースシステム論 第 回2015 [ 3 ] 42p.