タグ

ブックマーク / watanabek.cocolog-nifty.com (1)

  • DDLレベルの外部キー制約は不要 - 設計者の発言

    テーブルを作る際に、DDLレベルで外部キー制約をつけることがあるが、私はこれには反対である。組み込める制約の幅が狭すぎるうえに、業務ルールに関する記述があちこちに散らばってしまうからだ。順を追って説明しよう。 外部キー制約を組み込むことで、テーブルは更新・追加・削除操作において制約を受ける。たとえば、受注テーブルが顧客idを持っているとして、これに顧客マスターに対する外部キー制約を与えるとしよう。このとき、受注登録の際に顧客idの値がその時点の顧客マスター上に定義されていなければエラーになる。また、特定の顧客データを顧客テーブルから削除しようとしたときに、既存の受注データと関連づけされているような顧客であれば、やはりエラーになる。 この程度の例であれば、外部キー制約をDDLレベルで組み込むことに何ら問題はない。 ところが、現実は想像以上に複雑である。たとえば、多少不自然な例ではあるが、受注

    DDLレベルの外部キー制約は不要 - 設計者の発言
    ktakeda47
    ktakeda47 2013/02/23
    "ようするにDDLレベルの外部キー制約機構は、現実の業務要件を前にしてはイライラさせられるほどに単純で中途半端である。"
  • 1