データベース

第8章 データベースシステムの発展
8.1 オブジェクトリレーショナルデータベース
8.2 分散データベース
8.3 インターネットとデータベース
8.1 オブジェクトリレーショナルデータベース
1.オブジェクト指向概念の導入
Object Oriented
リレーショナルデータベースは事務処理分野で普及
科学技術分野、マルチメディア分野での弱点の指摘
オブジェクト指向データベースの研究・実用化
フレーム型知識ベースの研究成果
オブジェクト指向の基本
① データは「もの」を表現する.
② 「もの」はメッセージに応じて振る舞い,
自分の状態を変化させる.
③ 「もの」は分類することができる(似たよ
うなものは,似た属性を持つ)
データは「もの」を表現する
ペンオブジェクトを表現するデータの集合
ペンの番号
X
:100
Y
: 40
Up/Down状態 :Up
番号
: 1
Up/Down
(X,Y)
データの種類を規定する用語
スロット
プロパティ
アトリビュート
VB風のプロパティの変更と参照
変更
ペン.X = 120
ペン.Y = 40
参照
X=ペン.X
ピリオド(.)を,日本語で「の」と読もう.
処理は対象物によって異なる(1)
顔
雑巾
食器
洗う1
洗う2
洗う3
対象物
顔を洗う
雑巾を洗う
食器を洗う
洗う処理
処理は対象物によって異なる(2)
(オブジェクト指向の表現方法は,日本語?)
おなじ処理名でも,対象物がきまらないかぎり,
処理内容は選択できない.
↓
対象物を先に指定して,処理を後で指定する方が有利.
wash her face, wash the duster, wash the tableware
↓
「顔」を「洗う」,「雑巾」を「洗う」,「食器」を「洗う」
ものはメッセージに応じて振る舞い,
自分の状態を変化させる.
オブジェクト
メッセージ
状態A
振舞い
(処理)
状態B
言い換えると,
オブジェクトは,自分がメッセージに対してどう動く
かを知っている.
さらに別の言葉を使えば
■動作を行うためのメソッドを持っている.
■オブジェクト専用の関数/手続きを持っている.
VB風のメソッドとメッセージ
ペン.移動 X:=100,Y:= 120
ペン.アップ
ペン.ダウン
ペン.交換 番号:=2
メソッドの場合のピリオド(.)を,日本語で「を」と読もう.
ものは分類することができる
Is_a関係
「彼」は「人間」である.
「人間」は「霊長類」である.
He is a person.
A person is a primate
クラスとインスタンス
霊長類
まさに存在するもの : インスタンス
分類上の名称
: クラス
人間
高橋修一
君田恵美
クラス
インスタンス
プロパティ値,メソッドの遺伝
(インヘリタンス)
霊長類 愛称:<文字列>
性: (雄,雌)
尾: (有,無)
is_a
人間
氏名:<文字列>
性: (男,女)
尾: 無
is_a
氏名:大橋和夫
性: 男
「尾:無」が遺伝
is_a
氏名:丸山恭子
性: 女
イベントドリブン
イベント判定のための処理を
記述する必要がない.
初期設定
イベント1
処理1
イベント2
処理2
イベント3
処理3
画面の構成要素種類によっ
て行う処理は類似しているの
で,処理の標準化がやりやす
い.
マンマシン部分の共通化を図
ることができる.
インヘリタンス(継承)
• 下位オブクジェクトではスーパクラスと異なった性質だけを定義すれ
ば良い。これを差分プログラミングと呼ぶ。
スーパクラス
共通するデータやメソッド
サブクラスで定義されて
いるので継承しない
継承(インヘリタンス)
サブクラス
サブクラス
固有のデータやメソッド
継承(インヘリタンス)
他インスタンス
メッセージ
インスタンス
継承(インヘリタンス)
インスタンス
ものは複数の見方で分類することができる
スーパークラスが複数存在することがある。
• マルチインヘリタンス(多重継承):複数のスーパクラスからの継承が
行われる。
• シングルインヘリタンス(単一継承):ひとつのスーパクラスから継承
する。
(例)桜井眞人は学生である。桜井眞人は男である。
桜井眞人 is_a 学生。 桜井眞人 is_a 男。
Is_aとPart_of
コンピュータ
コンピュータ
分解
CPU
集約
主メモリ
Part_of 関係
(CPU is part of コンピュータ)
特化
パソコン
汎化
WS
Is_a関係
(パソコン is a コンピュータ)
1989年データベース研究者6名
オブジェクトデータベース宣言
(オブジェクト指向データベースの備えるべき要件)
①
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
⑪
⑫
⑬
複合オブジェクト
オブジェクト識別性
カプセル化
型またはクラス
継承
再定義・多重定義・遅延束縛
拡張可能性
計算の完全性
永続性
2次記憶管理
並行処理制御
障害回復
アドホックな問合せ(問合せ言語の直接起動)
⑨以降は、
どんなデータベースでも
必須条件
(a) 複合オブジェクト
属性値(単一値) ⇔ 複合オブジェクト(複雑な内部構造を持つオブジェクト)
【複合オブジェクトの例】
(配列や、C言語の構造体、BASICのユーザ定義型をイメージしよう)
タプル、集合、マルチ集合、リスト、配列
これらの再帰的な複合値
複合オブジェクトを表で表現すると・・・7
2次元図形のデータ
図形形状
点座標
P3
P7
P4
P6
P2
P5
P1
点ID
X
Y
図ID
点ID
順序
P1
2
0
poly1
P1
1
P2
0
2
poly1
P2
2
P3
3
6
poly1
P3
3
P4
7
5
poly1
P4
4
P5
6
1
poly1
P5
5
P6
2
3
poly1
P1
6
P7
4
5
poly2
P1
1
poly2
P6
2
poly2
P7
3
poly2
P4
4
poly2
P1
5
図形
図ID
線色
面色
パターン
重ね順序
poly1
青
緑
メッシュ
1
poly2
赤
紫
横ストライプ
2
表現はできたが・・・
不都合な点が多い
①多角形が3つのリレーションにまたがる22個のタプルで表現さ
れているので、分かりにくい。
②閉じた多角形を崩すような変更操作が行われてもちぇっくでき
ない。
③図形を描くとき、これらの結合演算が必要となるので、処理不
可が大きい。
(b) オブジェクト識別性
オブジェクトの中身とは独立に、各オブジェクトを識別する手段が
提供されることをオブジェクト識別性という
タプルは主キーによって区別される。
オブジェクト識別子を自動的に割り当て、
オブジェクト識別子によって区別する。
(人工的なキーを付与する必要がなくなる)
オブジェクト識別子は、オブジェクトの要素となりうる。
これを参照という。
P3
P7
P6
P2
P5
P1
参照
poly1:
( 線色 青, 面色 緑, パターン メッシュ,
構成点 <P1, P2, P3, P4, P5>,
内包図形 <poly2>)
poly2:
( 線色 赤, 面色 紫, パターン 横ストライプ,
構成点 <P1, P6, P7, P4>,
内包図形 NULL)
p1: ( X 2, Y 0) p2: ( X 0, Y 2) p3: ( X 3, Y 6) p4: ( X 7, Y 5)
p5: ( X 6, Y 1) p6: ( X 2, Y 3) p7: ( X 4, Y 5)
(c) カプセル化
①オブジェクトの情報を公開情報と非公開情報に分け、公開
情報をインターフェース部に集約する。
②インターフェース部にメッセージを付与することでメソッドを
起動する。
カプセル化という。
①各オブジェクト固有のメソッドを組み込むことができる。
②非公開情報への外部からの操作を防止できる。
(d) 継承
複数クラスで共通部分をもつことがあるので、
これを階層的にすることができる。
クラス階層という。
①メソッドや値を下位に継承することができる。
②単一継承、多重継承の考え方がある。
色付き多角形 Is_a 多角形。
色付き多角形 Is_a 色付き図形。
2. リレーショナルデータベースと
オブジェクト指向データベースの融合
①1980年代、オブジェクト指向DBの研究開始。
②当初、ポストリレーショナルデータベース、ポストリレーショ
ナルデータベースともてはやされた。
③オブジェクト指向DBMSのベンダは小さい会社が多く、CAD
などオブジェクト指向型DBの特徴が最大限活かせる分野
にのみ普及し、それほどの普及をみなかった。
④一方、リレーショナルDBはオブジェクト指向の機能を取り込
みながら徐々に改良されていった。
⑤SQL92で拡張された重要な機能がオブジェクト指向DBとの
融合である
リレーショナルデータベースと
オブジェクト指向データベースの融合の問題点
オブジェクト指向
正反対
カプセル化
(情報隠蔽)
利用者固有の
データ型と操作を
追加できるという
柔軟性を重視
正反対
リレーショナル
データと操作
の分離、
システムで用意した
データ型と操作を
すべての利用者が
利用するという
普遍性を重視
3. オブジェクトリレーショナルデータベース
【SQL99の機能】利用者がデータ型を定義できる
①DISTINCTユーザ定義型(型の別名)
CREATE TYPE JPN_YEN AS DECIMAL(10,2) FINAL
CREATE TYPE US_DOLLAR AS DECIMAL(10,2) FINAL
(円価格とドル価格を別の型として扱う)
②構造化ユーザ定義型(オブジェクト)
(a) 構造化ユーザ定義型の定義
例1 住所型
CREATE TYPE 住所型 AS
郵便番号
CHAR(7),
都道府県名 NCHAR VARYING(10),
市区町村名 NCHAR VARYING(40),
番地
NCHAR VARYING(40),
METHOD
住所表記() RETURNS NCHAR VARYING(100)
FINAL;
FINAL
: この型を継承する型を持たない。
NOT FINAL
: この型を継承する型を定義してもよい。
下線は無指定のときのデフォルト
例2 メソッドの定義
CREATE MESHOD 住所表記 FOR 住所型
BEGIN
RETURN '〒'||郵便番号||' ' ||都道府県名
||市町村名||番地;
END;
例3 大学人の型
CREATE TYPE 大学人型 AS
氏名
NCHAR VARYING(10),
所属学科
NCHAR VARYING(10),
住所
住所型,
NOT INSTANTIABLE
NOT FINAL;
INSTANTIABLE
: インスタンスを生成できる。
NOT INSTANTIABLE : インスタンスを生成できない。
(抽象型であり、共通的な属性、メソッドを定義するときに用いる)
下線は無指定のときのデフォルト
例4 大学人型を継承して教員型を定義する
CREATE TYPE 教員型 UNDER 大学人型 AS
職位
NCHAR VARYING(6),
NOT FINAL;
UNDER
: 継承先を示す。
例5 大学人型を継承して学生型を定義する
CREATE TYPE 学生型 UNDER 大学人型 AS
学年
CHAR(1),
NOT FINAL;
UNDER
: 継承先を示す。
(b) 表の定義
例6 大学人の大学住所録の定義
CREATE TABLE 住所録(
氏名 NCHAR VARYING(10),
住所 住所型);
例7 教員型/学生型を格納する
教員表/学生表定義
CREATE TABLE 教員 OF 教員型;
CREATE TABLE 学生 OF 学生型;
(c) 表へのデータの格納(INSERT)
例8 大学住所録にデータを格納
INSERT INTO 大学住所録 VALUES (
'山田栄一',住所型('1890001', '東京都', '東村山市',
'久米川町1丁目'), '助教授'));
例9 教員表にデータを格納
INSERT INTO 教員 VALUES (
教員型('山田栄一','電気電子工学科',
住所型('1890001', '東京都', '東村山市',
'久米川町1丁目'), '助教授'));
(d) 問合せ(SELECT)
例9 住所表記を出力
SELECT 氏名, 住所型.住所表記()
FROM 大学住所録 WHERE 氏名='山田栄一';
【結果】
山田栄一
〒1890001 東京都東村山市久米川町1丁目
例10 表中の住所データを出力
SELECT *
FROM
教員.氏名='山田栄一';
【結果】
山田栄一 電気電子工学科
久米川町1丁目 助教授
1890001 東京都
(住所表記ではないことに注意)
東村山市