第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 東京都 (住所表記ではないことに注意) 東村山市
© Copyright 2024 ExpyDoc