▲ このウインドウを閉じる |
When the house is burnt down, you bring water. |
「すべての リレーションシップ を外部 キー 参照として実装しない」 という SI 社さえある。 この話は、コッド 正規形を作って、RDB 上に実装することを前提にしています。コッド 関係 モデル を使っていて、そんな いい加減な仕事は、プロフェッショナル な仕事として、ありえない、と思って、僕は、思わず、以下の コメント を綴りました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 「反 コンピュータ 的断章」 のなかで、以前、モデル が軽視されていることを綴りました。上述した話は、まさに、その典型でしょうね。上述した話は、言いかたを変えれば、もし、リバース・エンジニアリング を使って、物理的 テーブル 構成を、論理 データ・モデル として記述したら、テーブル のあいだには、リレーションシップ がない、ということです(!) コッド 関係 モデル では、外来 キー (foreign-key) は、モデル のなかで、「命 (中核)」 とも言える技術です。上述した話は、モデル (理論) を正当に理解しないから、技術が でたらめ に使われている典型的な できごと でしょうね。 データ 構成には、「スキーマ (schema)」 と 「インスタンス (instance)」 と いう 2つの概念があります。スキーマ は 「構造」 を記述し、インスタンス は、(構造のなかで、対象となる) 具体的な 「例」 です。そして、参照制約 (integrity constraint) は、インスタンス に対して適用される規約です。リレーショナル・モデル は、以下の 2つの制約を導入しています。
(1) 実体 integrity
実体 integrity は、1つの テーブル のなかで適用されます。
この 2つの integrity は、コッド 関係 モデル のなかでは、意味を記述する制約条件 (関数従属性と包含従属性) と対応しています。
integrity を乱す更新演算に対して、以下の対応を考えることができます。
実体 integrity では、(1) の対応が導入され、参照 integrity では、(2) の対応が導入されます。(2)として、以下が使われています。 そして、或る テーブル に対する更新が、ほかの テーブル に波及することを propagation と云います。 propagation を前提にして、制約条件として記述されている 「意味」 が崩れないようにするのが、コッド 関係 モデル です。この参照整合が崩れないように、「正規形」 を作るのが、コッド 関係 モデル です。
この参照整合性を考慮しなければ、データ 構造の整合性 (意味) が崩れてしまう 「典型的な」 正規形が、以下の 2つの正規形です。 したがって、コッド 関係 モデル では、foreign-key は、モデル のなかで、「命 (中核)」 とも云える点なのです。そして、コッド 正規形は、無矛盾性と完全性 (relational completeness) を実現していることが証明されています。
そして、RDB は、パージョンアップ のなかで、indexing を搭載したので、セット・アット・ア・タイム 法が、いつのまにか、レコード・アット・ア・タイム 法のように使われるようになってしまい、コッド 関係 モデル を前提にした設計 (コッド 正規形) が無視されて、indexing を前提にした V-SAM ファイル 向けの設計が、事実上、「テーブル」 として実装されているようです。
そうなってしまうと、データベース の設計が、とりもなおさず、昔ながらの ファイル 設計のままで良い、ということになってしまい、SE たちは、モデル (理論) を無視する、という事態が、当然 (generally accepted) のようになってしまいます。
|
▼ このウインドウを閉じる |