- PR -

業務系のDBでは制約を持たない?

投稿者投稿内容
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-03-30 19:54
最近金融系のシステムに関わっています。
(ここでDBの話って場所が違っているかも知りませんが、Javaのシステムを構築する際の問題ですので大目に見てください)
が、ER図とかがなくて要求したらそんなもんないって。何でですかと聞いたら業務系のテーブルって変更が多くてそもそもテーブルに制約をつけないと。だからER図は書けないし、あっても意味がないとの事でした。変わりにエクセルファイルとしてテーブルの定義書だけは山ほどあります。私としてはこの定義書だけ見ていても訳がわかりませんが、この話ってそもそも正しいんでしょうか?
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-03-30 20:06
>正しいんでしょうか?

運用側 予算を出す側から見れば正しいと思います。

ER図を導入した場合DBの変更を余儀なくされるからです。
そうするといままでの考え方、仕様、プログラムすべて書き換える必要があるからです。
その結果バグが発生するかもしれないからです。

よいアイデアが、あっても使われるかどうかは別問題です。


sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-03-30 20:24
ご返事ありがとうございました。確かにそれはそうですね。
が、上記の答えとは別に、業務系アプリケーション用のDBって、「そもそも制限なんか付けないんだよ」と言う発言についてのご意見はございませんか?
sumida
会議室デビュー日: 2003/01/20
投稿数: 9
投稿日時: 2004-03-30 21:26
引用:

suminさんの書き込み (2004-03-30 20:24) より:
ご返事ありがとうございました。確かにそれはそうですね。
が、上記の答えとは別に、業務系アプリケーション用のDBって、「そもそも制限なんか付けないんだよ」と言う発言についてのご意見はございませんか?



suminさんが言われている制約というのは、参照整合性制約のことを言っているのだと思いますが、私はほとんど利用したことがありませんし、利用してなくて失敗したという経験もありません。業務系のシステムであるか否かというのを問わず、参照整合性が厳密に要求されるシステムというものが本当に存在するのかなという気もします。

例えば、店舗マスターテーブルにある店舗が無くなったから店舗マスターからDeleteしようとした場合、その店舗のデータと参照整合性を持っている取引明細があればその店舗データはDeleteできません。このような使い方は参照整合性の使い方としては正しいのだと思いますが、実際問題として店舗がなくなったからといって該当店舗データを物理的にテーブルから削除するようなシステムは作らないですよね?

多くの場合は、該当店舗データに削除フラグをつけて、新規の取引データ入力ができなくするとともに、残っている過去の取引データを検索/集計する際には削除フラグを無視して店舗名を一覧表上に印刷したりしていませんか?

であるとすれば、それらは参照整合性をルールとしてスキーマに定義するのではなく、クエリー上の結合で表現するほうが変更に対する柔軟性が高くなるのではないかと思って、過去に手がけた多くのシステムでは参照整合性を使ったことはありません。もちろん、NotNull制約や、主キー制約、Check制約などその他の制約は使っています。
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2004-03-30 21:46
引用:

クエリー上の結合で表現するほうが変更に対する柔軟性が高くなるのではないかと思って、過去に手がけた多くのシステムでは参照整合性を使ったことはありません。


詳しい説明ありがとうございました。なるほどです。
ただ、ここで一つ気になるのは実際に参照整合性をもつか持たないかは別として人間として分かりやすい形で文書化しておきたいと言う要望があった場合、このように参照整合性が取れてないテーブルたちってどうやってその関連を文書化し、管理すべきでしょうか?
クエリー上の結合って、図とかで表現できるもんですか?

結論的に知りたいのは、ある業務ロジックを実装しようとする場合、どのテーブルとどのテーブルをどんなふうにつなげばいいのかをどうやって分かりやすく表現できますか?
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2004-03-30 23:30
引用:

suminさんの書き込み (2004-03-30 19:54) より:
最近金融系のシステムに関わっています。
(ここでDBの話って場所が違っているかも知りませんが、Javaのシステムを構築する際の問題ですので大目に見てください)
が、ER図とかがなくて要求したらそんなもんないって。


最近の金融機関はRDBにリプレースしたんですか?オラクルとかテラデータとか?
わたしの携わっていた90年代初頭はIBM IMS系列の階層型DBでしたが。
それとも地銀とかノンバンク系の小規模システムですか?
ようすけ
会議室デビュー日: 2002/07/26
投稿数: 17
投稿日時: 2004-03-31 00:11
ER図が必要か否かであれば、私は必要と考えています。
DBがなんであれ、データ構造をいかに定義し、開発者に
正確に伝えられてるかなので、テーブルレイアウトだけで
正確に伝わるとは思えませんし、金額が絡むのであれば
なおさら正確性が要求されると思います。

参照整合性制約については、私もあまり使いませんが
厳密な排他制御をする場合には、必要になる気がします。
(未確認)
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-31 00:28
参照整合性制約をつけるかどうかと ER 図を作るかどうかは別の話とも考えられますよね。
私なんかは ER 図はあるけど参照整合性制約をつけない、なんてことが多いです。
やはりデータの関連を示すには ER 図がいいのですが、全体を通して矛盾のないデータを用意するのは単体テスト時など大変不便です。

スキルアップ/キャリアアップ(JOB@IT)