▲ このウインドウを閉じる |
That's your logic. I have my own logic. |
僕は コッド 正規形を信奉しています。ただ、コッド 正規形は、数理 モデル として、無矛盾性と完全性を実現していますが、事業のなかで実地に使われている データ を対象にした際、「(データ の) 並び」 と 「null (データの値)」 扱うことができなかった。 しかも、コッド 正規形では、セット (集合) が前提になっているのですが、「セット を形成する判断規準がない」 という悩ましい問題点があります。どのような性質 (述語) を使って セット を形成するか--性質と述語は、厳密に云えば違うのですが、ここでは、論点にしないで--という点は恣意的です。 セット を生成するために使った性質が、「モノ」 そのものに帰属する性質なのかどうか、という点は、集合論では論点にされない。セット を形成する性質が、「モノ」 そのものに帰属するかどうか、という判断がないので、間一髪、「意味論」 が忍び込む余地ができてしまった、ということです。つまり、「意味論」 は、「モノ」 そのものを対象として、「モノ」 そのものに帰属する性質と、「モノ」 が外的な関係のなかで形成してきた性質を仕訳しようとします。言い換えれば、集合論では、「モノ」 は関数の パラメータ ですから、どういう関数 (性質) を使うか、という点は恣意的です。
いっぽう、意味論 (存在論、実体論) では、「モノ」 そのものの性質 (本質) と、「モノ」 が外的な関係のなかで稼得した性質を仕訳しようとしますが、「モノ」 の定義ができない。
f (x) [ つまり、性質 ] を使って集合を形成して、f (x, y) [ つまり、関係 ] を使って テーブル を形成しますが、f (x, y) のなかで成立した アトリビュート [ つまり、domain のなかを走る値 ] が、「整合的」であるかどうか、という検証は、「functional dependency」 が成立するかどうか、という点に委ねられています。
しかし、もし、入社日が従業員の テーブル (セット、直積集合) に帰属しないとすれば、「日常言語の使いかたのなかで」、従業員の集合が曖昧になります。コッド 正規形は 「モデル」 としては、無矛盾性と完全性を実現しているのですが、実際に、テーブル を設計するとき、SE によって、テーブル の生成が、若干、ズレ てしまう理由は、その点にあるようです。 「或る観点から判断すれば」 と言った理由は、従業員そのもの (第一性) と、従業員が、ほかの対象に対して 「なんらかの行為」 をした関係 (第二性) を仕訳すれば、以上の テーブル は正しい--つまり、「意味論」 を導入しているのですが。 そのときに、{従業員番号 (R)、入社日} は、数学的な集合 (セット) か、と問えば、そうではない(!) しかし、「日常言語の使いかたのなかで」、1つの集合として考えることができる。つまり、{従業員番号 (R)、入社日} は、数学的な集合 (セット) ではないけれど、意味論の観点からすれば、入社日は従業員の性質ではない。
いままで、だれも、その点 (集合論が性質を扱うときに、性質が モノ そのものに帰属するのか、そうでないのか、という点) を、データ 設計のなかで論点にしてこなかった。なぜなら、集合論の観点からすれば、そういうことは論点にはならないから。
そのために、僕は、データ 設計の最初の段階で、「データ の認知」 ということを論点にしました。コッド 正規形では、「primary-key」 として扱えば、簡単に済んでしまう点を、僕は 「しつこいほどに」 こだわった(笑)。コッド の セット・アット・ア・タイム 法を説明するときには、直積集合の説明をしていれば、まったく、問題点がないのですが、いざ、具体的な データ を対象にしたら、とたんに、説明がむずかしくなる(笑)。つまり、具体的な 「集合」 (テーブル) を設計する段になったら、SE が、それぞれ、若干、違う テーブル を設計してしまう。 (2003年11月 9日)
|
▼ このウインドウを閉じる |