Index: [Article Count Order] [Thread]

Date:  Fri, 23 Feb 2001 13:28:23 +0900
From:  Hideto ISHIBASHI <hideto-i@....jp>
Subject:  [XP-jp:01667] Re: XP で再利用できますか?
To:  extremeprogramming-jp@....jp
Message-Id:  <200102230429.NAA17373@....jp>
In-Reply-To:  <20010223110948Q.ono@....jp>
References:  <20010223110948Q.ono@....jp>
X-Mail-Count: 01667

石橋秀仁@Jobwebです。こんにちは。

ono@....jp wrote:

> 小野です。

> 私は、クラス構造の変更と RDB の同期をとることは、「何らかのメカニ
> ズム」で可能だと思うので、これがリファクタリングの本質的な障害に
> はならないだろうと楽観的に考えています。しかし DB のスキーマだけ
> は、実運用に回すまでにカッチリと固定するくらいの気持で「前払い」
> 設計をしなくてはいけないので、リファクタリングできない == XP は
> 適用出来ないのではと予想していますが、でもなんかいい方法ないかな〜
> とも考えています。

基本的なことかもしれませんが、ひとつのアイデアがあります。
  ●テスト段階に入ってからも DB スキーマを変更するための仕組み:
  素の表(テーブル)にアクセスしない = 視点(ビュー)からアクセスする
というルールです。

というようなことが、SRC から出ている
  『実践!!データベース設計バイブル』 鈴木 昭男
  http://www.amazon.co.jp/exec/obidos/ASIN/4883731170/
に書いてあります。とくに、270 ページの
  第4部 パフォーマンス設計 3.2 データベース設計のポイント
  (3)設計変更に対処できる仕組みを作っておく
の部分がこれに該当します。

***

テーブルへのアクセスをビューからのみに限定することで、
もともと一つの表を分割した場合(正規化)や、それにともなう
SQL 文の変更(結合 JOIN など)にも対処できます。

属性の追加の場合にも、直に表へ属性を追加する(ALTER TABLE)
ことも、別のテーブルを作って外部参照制約をかけて外部結合する
こともできます。そのどちらの場合でも、プログラム上では同じく、
「ビューに属性が1つ増えた」ように見えます。


そして、ビューからのアクセスによる結合処理などが、
パフォーマンス上のボトルネックとして無視できなくなったら、
そこでテーブルの再構成(関連する表を一つの表として
まとめて表の再定義)をします。その際にもプログラムの
変更は1行も必要ありません。

なお、再構成後はビューの定義は、素通し、例えば
  CREATE VIEW V_FOO AS SELECT * FROM V_FOO
のようになります。これなら結合処理などによるパフォーマンス
低下は、ほとんど無視できる程度になります。


ということで、RDB のスキーマレベルの話はこれで解決するのでは
ないでしょうか?

RDB と OO のマッピングは、また別のレベルですね。
#XML を使ったマッピングには興味あります。

では。

--
石橋秀仁 hideto-i@....jp
messenger: ICQ# 83329246, MSN hideto_i@....com, Yahoo! hideto_i