これまでに学習した内容
2
SQLによるデータベース操作⽅法を学んだ データの検索
データの登録,更新,削除
データベース,テーブルの作成
mysqld
クライアントプログラム
結果データベース
エンジン
問合せ(クエリ)
SELECT
INSERT DELETEUPDATE
CREATE DROP
これから学習する内容
3
データベース設計について学ぶ
CREATE DATABASE
CREATE TABLEデータベース設計
エンドユーザ
結果データベース
問合せ(クエリ)
データベースアプリケーション
要求
応答
関係データベース管理システム(RDBMS; Relational DataBase Management System)
8
エドガー・F・コッドが提唱した関係データモデルを採⽤したデータベース管理システム(DBMS)
MySQL, Oracle Database, PostgreSQL, SQLiteなどがある
利点ExcelやCSVなどの簡易データベースより⼤量のデー
タを保存できる⼤量のデータに対し,検索,並べ替え,抽出,集計な
どの処理を⾼速に実⾏できる複数の異なるデータを結合して,⼀つのデータのよう
に取り出すことができるSQLという問合せ⾔語を使ってデータを操作できる
復習
SQLと関係データモデル
9
SQLは関係データモデルを基礎としている データの表現⽅法やデータに対する演算⽅法が関係
データモデルでルールが決められている
関係データモデル
SQLSELECT INSERT
UPDATE DELETE
関係(リレーショナル)データモデル
10
1970年にIBM社にいたエドガー・F・コッドが提案
データを属性値の集合であるタプルとして表現する
表構造を採⽤し,属性を列,タプルを⾏として関連付ける
⾒出し(属性の集合)と本体(タプルの集合)を関係とよぶ
関係データモデルを採⽤しているDBを,関係データベース(RDB; Relational DataBase) とよぶ
関係(リレーション)
11
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県87⽩⼭ 2,702岐⾩県92⼤⼭ 1,729⿃取県
タプル
属性
関係⽇本百名⼭
関係名
属性値
関係データモデルの⽤語
12
関係(リレーション) ⾒出しと本体の対で構成される ⾒出しは0個以上の属性の集合 本体は0個以上のタプルの集合
属性(アトリビュート) 属性名とデータ型の対
タプル(組) ⾒出しに対応した属性値の集合
SQLでの⽤語
13
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県87⽩⼭ 2,702岐⾩県92⼤⼭ 1,729⿃取県
ロウ
カラム
テーブル
復習
⽇本百名⼭テーブル名
関係といえる表はどれ?
15
1時限 2時限
⽉英語 C501 OS F201化学 C202 知識⼯学 C109
⽕SW⼯学 R103 数理解析 C103DB C202 HI C306
交戦勢⼒東軍 ⻄軍
指導者・指揮官徳川家康徳川秀忠結城秀康
⽑利輝元⽯⽥三成宇喜多秀家上杉景勝
戦⼒70,000~104,000 80,000以上
*(参考)http://ja.wikipedia.org/wiki/関ヶ原の戦い
著者 書籍タイトル 出版社 発⾏年川越恭⼆ 楽しく学べるデータベース 共⽴出版 2014北川博之 データベースシステム 昭晃堂 1996増永良⽂ リレーショナルデータベース⼊⾨ サイエンス社 1991
ドメイン(定義域)
17
属性値がとりうるすべての値の集合例;⼈名の集合,年齢の集合,学科名の集合
D1 = {x | xは⼈名}
D2 = {x | xは0以上の整数}
D3 = {コミュ,知能,メディア,システム}
ドメインの例
18
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県87⽩⼭ 2,702岐⾩県
⽇本百名⼭D番号 = {x | xは1以上の整数}
D⼭名 = {x | xは⽇本の⼭名}
D標⾼ = {x | xは0以上の整数}
D都道府県 = {x | xは都道府県名}
⽇本百名⼭ 番号 ⼭名 標⾼ 都道府県
ドメインの直積集合とタプル
19
D1 = {1, 2}, D2 = {a, b, c}, D3 = D1
D1× D2 ×D3 = {(1,a,1), (1,a,2), (1,b,1), (1,b,2), (1,c,1), (1,c,2),(2,a,1), (2,a,2), (2,b,1), (2,b,2), (2,c,1), (2,c,2)}
1
2
abc
1
2× ×
タプル:直積集合の各要素タプルは必ずドメインの直積集合のいずれかの要素になる
トランプの例
20
D1 = {♠, ♡, ♢, ♣}D2 = {A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K}
R ⊆ D1× D2
D1× D2 = {(♠,A), (♠,2), ..., (♠,K),(♡,A), (♡,2), ..., (♡,K),(♢,A), (♢,2), ..., (♢,K),(♣,A), (♣,2), ..., (♣,K)}
次数と濃度
21
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県87⽩⼭ 2,702岐⾩県
⽇本百名⼭
⽇本百名⼭ 番号 ⼭名 標⾼ 都道府県
次数:4
濃度:6関係Rを構成するタプルの数
関係Rのドメインの数
関係スキーマとインスタンス
22
番号 登録名 登録年 所在地関係スキーマ
インスタンス
関係の⾒出し部分 時間的に不変
タプルの集合 時間的に変化
2姫路城 1993兵庫県3屋久島 1993⿅児島県8厳島神社 1996広島県13知床 2005北海道17富⼠⼭ 2013静岡県18富岡製⽷場 2014群⾺県
世界遺産の関係の例
関係の特徴(1)⼀つの関係の中で,まったく同じ値をもつ重複
したタプルは存在してはならない
関係にはNULLを含めることはできない
24
姫路城 兵庫県姫路城 兵庫県富⼠⼭ 静岡県
姫路城 兵庫県富⼠⼭ NULL
関係の特徴(2)タプルの順序は関係としては意味をもたない
属性の順序は意味をもたない
25
姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県
富⼠⼭ 静岡県姫路城 兵庫県屋久島 ⿅児島県
番号 登録名 登録年 所在地所在地 登録名 番号 登録年
同じ関係
同じ関係スキーマ
姫路城 兵庫県姫路城 兵庫県富⼠⼭ 静岡県
SQLの特徴(1)制約がなければ,⼀つのテーブルの中で重複し
たロウは存在しても良い
テーブルにはNULLを含めることができる
26
姫路城 兵庫県富⼠⼭ NULL
SQLの特徴(2)ロウの順序は存在する(ソートなど)
カラムの順序は存在する(データ登録時など)
27
姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県
富⼠⼭ 静岡県姫路城 兵庫県屋久島 ⿅児島県
番号 登録名 登録年 所在地所在地 登録名 番号 登録年
異なる結果
異なるカラムの定義位置
関係代数の演算
29
関係代数の演算 説明和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せを求める演算
関係代数の演算 説明射影演算 関係から指定属性集合のみの値を抜き出す演算
選択演算 関係から指定条件を満たすタプル集合を抜き出す演算
結合演算 複数の関係を指定条件によって結合する演算
商演算 ⼆つの関係の商を求める演算
集合演算
関係代数特有の演算
関係代数の演算
30
関係代数の演算 説明和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せを求める演算
集合演算
⼆つの関係の両⽅または⽚⽅に現れるタプルからなる関係を求める
和集合演算 P∪Q
名前 所在地姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県
P P∪Q
名前 所在地⼤阪城 ⼤阪府姫路城 兵庫県彦根城 滋賀県
名前 所在地姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県⼤阪城 ⼤阪府彦根城 滋賀県
Q
※PとQが和両⽴であること
和両⽴⼆つの関係P(A1, A2, ..., An)とQ(B1, B2, ..., Bm)が次の⼆つの条件を満たすとき,⼆つの関係PとQは和両⽴であるという
i. PとQの次数が等しい
ii. 各i (1≦i≦n)について,AiとBiのドメインが等しい
A1 A2 ... An
B1 B2 ... Bm
各ドメインが等しい
n = mP
Q
⼆つの関係のうち,⼀つ⽬の関係だけに現れるタプルからなる関係を求める
差集合演算 P-Q, Q-P
名前 所在地姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県
PP-Q
名前 所在地⼤阪城 ⼤阪府姫路城 兵庫県彦根城 滋賀県
名前 所在地屋久島 ⿅児島県富⼠⼭ 静岡県
QQ-P名前 所在地
⼤阪城 ⼤阪府彦根城 滋賀県
※PとQが和両⽴であること
⼆つの関係の両⽅に現れるタプルからなる関係を求める
共通(積)集合演算 P∩Q
37
名前 所在地姫路城 兵庫県屋久島 ⿅児島県富⼠⼭ 静岡県
P
P∩Q = P-(P-Q)
名前 所在地⼤阪城 ⼤阪府姫路城 兵庫県彦根城 滋賀県
名前 所在地姫路城 兵庫県
Q※PとQが和両⽴であること
⼆つの関係における,すべてのタプルの組合せを求める
直積演算 P×Q
名前 所在地屋久島 ⿅児島県富⼠⼭ 静岡県
P
名産薩摩芋静岡茶御座候
名前 所在地 名産屋久島 ⿅児島県 薩摩芋屋久島 ⿅児島県 静岡茶屋久島 ⿅児島県 御座候富⼠⼭ 静岡県 薩摩芋富⼠⼭ 静岡県 静岡茶富⼠⼭ 静岡県 御座候
Q
P×Q
濃度:2
濃度:3濃度:2×3=6
次数:2+1=3
次数:2
次数:1
関係代数の演算
41
関係代数の演算 説明射影演算 関係から指定属性集合のみの値を抜き出す演算
選択演算 関係から指定条件を満たすタプル集合を抜き出す演算
結合演算 複数の関係を指定条件によって結合する演算
商演算 ⼆つの関係の商を求める演算
関係代数特有の演算
ある関係から⼀部の属性を取り出したタプルからなる関係を求める
射影演算(Projection)
42
Pπ 都道府県 P
※重複したタプルは除去される
番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県
都道府県富⼭県⻑野県⼭梨県
ある属性の値に条件θ(=, ≠, <, >, ≦, ≧)を付加し,その条件を満たすすべてのタプルの集合を求める
選択演算(Selection)
43
σ 都道府県='⻑野県' P
P 番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県
番号 ⼭名 標⾼ 都道府県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県
※⽐較対象の属性がθ⽐較可能であること
選択演算(Selection)
44
σ 都道府県='⻑野県' and 標⾼ >3000 P
P 番号 ⼭名 標⾼ 都道府県48剱岳 2,999富⼭県49⽴⼭ 3,015富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県72富⼠⼭ 3,776⼭梨県
番号 ⼭名 標⾼ 都道府県54槍ヶ岳 3,180⻑野県
σ 都道府県='⻑野県' or 標⾼ <3000 P番号 ⼭名 標⾼ 都道府県
48剱岳 2,999富⼭県54槍ヶ岳 3,180⻑野県64⼋ヶ岳 2,899⻑野県
※⽐較対象の属性がθ⽐較可能であること
θ⽐較可能である条件
46
I. 関係P(A1, A2, ..., An)の⼆つの属性AiとAjとがθ⽐較可能であるとは,次の⼆つの条件を満たしていることをいう
i. AiとAjのドメインが等しいii. ⽐較演算(Aiの任意の値 θ Ajの任意の値)の真偽が常に定まる
II. 関係P(A1, A2, ..., An)の属性Aiと関係Q(B1, B2, ..., Bm)の属性Bjとがθ⽐較可能であるとは,次の⼆つの条件を満たしていることをいう
i. AiとBjのドメインが等しいii. ⽐較演算(Aiの任意の値 θ Bjの任意の値)の真偽が常に定まる
III. 関係P(A1, A2, ..., An)の属性Aiと定数cとがθ⽐較可能であるとは,次の⼆つの条件を満たしていることをいう
i. Aiのドメインにcがあるii. ⽐較演算(Aiの任意の値 θ c)の真偽が常に定まる
⼆つの属性値AiとBjとが等しいタプルを結びつける等結合演算(equi-Join)
47
P 番号 ⼭名 標⾼54槍ヶ岳 3,18064⼋ヶ岳 2,89972富⼠⼭ 3,776
※⽐較対象の属性がθ⽐較可能であること
Q ⼭番号 都道府県54⻑野県54岐⾩県64⻑野県64⼭梨県72⼭梨県72静岡県
番号 ⼭名 標⾼ ⼭番号 都道府県54槍ヶ岳 3,180 54⻑野県54槍ヶ岳 3,180 54岐⾩県64⼋ヶ岳 2,899 64⻑野県64⼋ヶ岳 2,899 64⼭梨県72富⼠⼭ 3,776 72⼭梨県72富⼠⼭ 3,776 72静岡県
P 番号=⼭番号Q
⽐較演算⼦θを「=」以外に⼀般化させた結合演算θ結合演算(Join)
48
P 番号 ⼭名 標⾼54槍ヶ岳 3,18064⼋ヶ岳 2,899
※⽐較対象の属性がθ⽐較可能であること
P.番号 P.⼭名 P.標⾼ Q.番号 Q.⼭名 Q.標⾼54槍ヶ岳 3,180 48剱岳 2,99954槍ヶ岳 3,180 49⽴⼭ 3,015
P P.標⾼>Q.標⾼Q
Q 番号 ⼭名 標⾼48剱岳 2,99949⽴⼭ 3,015
⼆つの関係の共通属性Cで結びつける⾃然結合演算(Natural Join)
49
P 番号 ⼭名 標⾼54槍ヶ岳 3,18064⼋ヶ岳 2,89972富⼠⼭ 3,776
※⽐較対象の属性がθ⽐較可能であること
Q 番号 都道府県54⻑野県54岐⾩県64⻑野県64⼭梨県72⼭梨県72静岡県
番号 ⼭名 標⾼ 都道府県54槍ヶ岳 3,180⻑野県54槍ヶ岳 3,180岐⾩県64⼋ヶ岳 2,899⻑野県64⼋ヶ岳 2,899⼭梨県72富⼠⼭ 3,776⼭梨県72富⼠⼭ 3,776静岡県
P Q
関係Pがもつタプルのうち,関係Qのすべての要素を含んでいるタプルを抽出する演算
商演算 P÷Q
50
A B C Da イ 甲 ⼦a イ ⼄ 寅b ロ ⼄ 丑c ハ 甲 ⼦c ハ ⼄ 丑c ハ ⼄ 寅
PC D甲 ⼦⼄ 寅
Q P÷QA Ba イc ハ
C D甲 ⼦⼄ 寅
商の求め⽅(2/3)ii. Qのタプルが全て含まれているグループを残す
52
A B C Da イ 甲 ⼦a イ ⼄ 寅b ロ ⼄ 丑c ハ 甲 ⼦c ハ ⼄ 丑c ハ ⼄ 寅
P Q
商の求め⽅(3/3)iii. Qに含まれていない属性のみを残す
53
A B C Da イ 甲 ⼦a イ ⼄ 寅c ハ 甲 ⼦c ハ ⼄ 丑c ハ ⼄ 寅
PC D甲 ⼦⼄ 寅
Q P÷QA Ba イc ハ
※重複したタプルは除去される
レシピの関係Pから「じゃがいも」と「たまねぎ」を⾷材にしたレシピ集合を求める
商演算の例
54
レシピ ⾷材カレー じゃがいもカレー たまねぎカレー ⽜⾁パスタ たまねぎパスタ パスタパスタ ベーコン⾁じゃが じゃがいも⾁じゃが たまねぎ⾁じゃが 豚⾁じゃがバター じゃがいもじゃがバター バター
P⾷材
じゃがいもたまねぎ
Q P÷Qレシピ
カレー⾁じゃが
関係代数の演算まとめ
55
関係代数の演算 説明和集合演算 ⼆つの関係の和集合を求める演算
差集合演算 ある関係から他の関係の差集合を求める演算
共通集合演算 ⼆つの関係の両⽅に存在するものを抽出する演算
直積演算 ⼆つの関係のすべての組合せを求める演算
関係代数の演算 説明射影演算 関係から指定属性集合のみの値を抜き出す演算
選択演算 関係から指定条件を満たすタプル集合を抜き出す演算
結合演算 複数の関係を指定条件によって結合する演算
商演算 ⼆つの関係の商を求める演算
集合演算
関係代数特有の演算
関係代数とSQLによる問合せ(1)
56
P∪QSELECT * FROM P UNION SELECT * FROM Q;
P∩QSELECT * FROM P INTERSECT SELECT * FROM Q;
SELECT * FROM P WHERE EXISTS (SELECT * FROM Q WHERE P.名前 = Q.名前 AND P.所在地 = Q.所在地);
P-Q
SELECT * FROM P WHERE NOT EXISTS (SELECT * FROM Q WHERE P.名前 = Q.名前 AND P.所在地 = Q.所在地);
SELECT * FROM P EXCEPT SELECT * FROM Q;
MySQLではサポート外
MySQLではサポート外
関係代数とSQLによる問合せ(4)
59
SELECT * FROM P JOIN Q ON 番号=⼭番号;
P 番号=⼭番号Q
SELECT * FROM P JOIN Q ON P.標⾼>Q.標⾼;
P P.標⾼>Q.標⾼Q
SELECT * FROM P NATURAL JOIN Q;
P Q
まとめ
和集合演算 差集合演算共通集合演算
射影演算 選択演算 結合演算 商演算
関係データモデルと関係関係データモデルの形式化とドメイン関係スキーマとインスタンス関係とSQLの特徴
集合演算
直積演算
関係代数特有の演算
本⽇学習したキーワード〜データベース設計編〜
62
1事実1箇所 繰返しグループ 第三正規形3層スキーマモデル 更新不整合問題 第⼆次正規化ER図 削除不整合 第⼆正規形E-Rモデル 差集合演算 タプル(組)JDBC θ結合演算 直積演算インスタンス θ⽐較可能 等結合演算カーディナリティ 次数 導出属性概念スキーマ ⾃然結合演算 ドメイン(定義域)概念設計 実体 内部スキーマ概念データモデル 射影演算 濃度外部スキーマ 修正不整合 ⾮正規形関係(リレーション) 商演算 物理設計関係スキーマ 推移関数従属性 物理的データ独⽴性関係代数 選択演算 部分関数従属性関係データベース(RDB) 挿⼊不整合 論理設計関係(リレーショナル)
データモデル属性(アトリビュート) 論理データモデル
関係名 属性値 論理的データ独⽴性完全関数従属性 第⼀次正規化 和集合演算関連 第⼀正規形 和両⽴共通(積)集合演算 第三次正規化
これまでに学習したキーワード〜データベース設計編〜
63
1事実1箇所 繰返しグループ 第三正規形3層スキーマモデル 更新不整合問題 第⼆次正規化ER図 削除不整合 第⼆正規形E-Rモデル 差集合演算 タプル(組)JDBC θ結合演算 直積演算インスタンス θ⽐較可能 等結合演算カーディナリティ 次数 導出属性概念スキーマ ⾃然結合演算 ドメイン(定義域)概念設計 実体 内部スキーマ概念データモデル 射影演算 濃度外部スキーマ 修正不整合 ⾮正規形関係(リレーション) 商演算 物理設計関係スキーマ 推移関数従属性 物理的データ独⽴性関係代数 選択演算 部分関数従属性関係データベース(RDB) 挿⼊不整合 論理設計関係(リレーショナル)
データモデル属性(アトリビュート) 論理データモデル
関係名 属性値 論理的データ独⽴性完全関数従属性 第⼀次正規化 和集合演算関連 第⼀正規形 和両⽴共通(積)集合演算 第三次正規化