- ベストアンサー
DBアプリケーションの設計方針 (参照整合性、外部キーなどの制約はDDLで定義すべき?)
標記の件でご意見を伺いたく投稿します。 データベースにおいて、参照整合性、外部キーなど、レコードの整合性を守るのに不可欠な要素が いくつかありますが、これらをDDLで定義するのと、フロントエンドのアプリケーションで実装する のと、どちらが望ましいでしょうか? 世間で普及している教本等では、DDLで定義することになっているようですが、この辺りをきちんと 作り込んだ経験がありません。理由は以下の通りです。 (1) 制約でガチガチに縛ってしまうと、テストデータの作成に難儀する。 → Access の場合、アプリケーションの画面が影も形もない段階で、テーブルのデータシート ビューから直接データを投入できるが、制約で縛るとこの手軽さが失われてしまう。 (トリガを書けば、データは投入できるが、何だか余分な作業が増えて損をしたような気がする) (2) データの整合性は保証できるものの、制約に違反した場合のエラーメッセージがユーザー フレンドリーではない。 ↓ 結局、アプリケーションで、エラーを事前に開始するか、またはエラーメッセージをユーザー 向けの文言に書き換える処理が必須となる。 ↓ DDLで制約を定義しても、アプリケーション実装の作業負担は軽くならない。 そんな訳で、主キー、規定値以外の制約をDDLで実装した経験は殆どありません。 Accessの場合、ド素人でもデータベースを直接GUIから操作できるので、設計者の意図に反して データの整合性が損なわれるリスクはありますが、総合的に見て、DDLで制約を定義するメリット を私はあまり感じません。 一般的にはどうなのでしょうか? 専門家の皆様のご意見をお待ちしております。 初心者ですので、わかりやすくご指導頂けると幸いです。(笑)
- みんなの回答 (5)
- 専門家の回答
お礼
コメントありがとうございます。 やはり、どの案件でも、似たような苦労をされているのですね。 私の感覚が世間の常識と極端に乖離している訳ではないことがわかり、ほっとしました。