2008年10月 1日 「技術編-13 データ の関係」 を読む >> 目次に もどる
2015年 6月 4日 補遺  


 

 本節では、TM は、「関係」 として 「2 項関係」 を基本形にすることを述べています。

 数学は、「2 項関係」 を基本としています。コッド 関係 モデル は、「n-項関係 (多項関係)」 を基本にしています。そして、「n-項関係」 は、「2 項関係」 に ばらすことができます。ただ、コッド 関係 モデル では、ひとつの 「n-項関係」 を いくつかの 「2 項関係」 に ばらすことは無意味でしょうね。というのは、コッド 関係 モデル は、直積集合において、ひとつの セット (集合) として 「属性値集合」 を考えていて、いくつかの セット から元を ひとつずつ選んで並べた タプル を 「主体」 として考えているから。いっぽう、「主体」 のあいだの 「関係」 を扱うのであれば、「2 項関係」 のほうが分析しやすいでしょうね。TM は、事業の 「できごと (event)」 に対して 「主体 (resource)」 が どのように関与しているのかを分析するので、「2 項関係」 を使っている次第です。

 コッド 関係 モデル では、直積を次第に ばらして 「正規形」 を構成してゆき、それぞれの 「正規形」 には包摂関係があって──たとえば、第一正規形は第二正規形を包摂して、第二正規形は第三正規形を包摂するなど──、テーブル のあいだでは、包摂従属性を示すために 「外来 キー (foreign-key)」 が挿入されます。すなわち、ひとつの テーブル には、ほかの テーブル の キー が入っているということです。

 TM でも、「主体 (resource)」 が 「事態 (event)」 に関与していることを示すために、「主体」 の個体指定子を 「事態」 のなかに挿入します。そして、挿入された個体指定子は、(R) という添字を与えられて、セット そのものを作った個体指定子と違うことを明示されます。たとえば、

   { 商品番号、商品名称、・・・}.
   { 受注番号、商品番号 (R)、受注日、受注数、・・・}.

 すなわち、(R) は、「関係」 のなかで構成された──言い換えれば、「関与した」──ことを示しています。ここまでは、コッド 関係 モデル と TM のあいだには、さほど おおきな相違点がないように思われますが、ここで、「2 項関係」 が重大な役割を演じて、TM では、(R) を キー として扱うことをしない理由が明らかになるでしょう。たとえば、以下を考えてみましょう。

   { 部門 コード、部門名称、・・・}.
   { 従業員番号、従業員名称、・・・}.
   { 部門 コード (R)、従業員番号 (R) }.

 この構成は、コッド 関係 モデル では──{ 部門 コード (R)、従業員番号 (R) } のなかに、関数従属性を示す なんらかの アトリビュート が存在しないかぎりは──起こり得ない。しかし、TM の関係文法では、{ 部門 コード (R)、従業員番号 (R) } を認めています。この構成は、「関係」 の性質に対応して、「個体 (entity)」 を ふたつの クラス に分けて、クラス のあいだで適用する文法に従って導かれます。すなわち、「resource-対-resource」 の対応は、「対照表」を新たに作るという規則に従っています。単純に言えば、「2 項関係」 が三項態になる、ということを意味しています──あるいは、「対の公理」 に従って構成された和集合に対して 「置換公理」 を適用したと云ってもいいでしょう [ すなわち、和集合として f (x) を考える、ということです ]。したがって、{ 部門 コード (R)、従業員番号 (R) } は、意味論上、なんらかの 「事態」 を指示することになります──正確には、個体指定子を付与されていないので、「言及する」 と言ったほうがいいのですが。そして、その構成が 「真」 であるかどうかは 「T-文」 で テスト されます。「T-文」 とは、「文 p が 『真』 であるのは、時刻 t において、事態 q に対応するとき、そして そのときに限る」 という真理条件のことです。つまり、TM は、「(事実的な) F-真」 を前提にして 「構成」 の一意性を実現しているのであって、キー という概念を使ってはいないのです──当然ながら、「F-真」 を充たす個体は一意です。だから、TM は、キー という概念を使わないし、(R) を Reference-key としていない。 □

 



[ 補遺 ] (2015年 6月 4日)

 文中、「和集合」 というのは間違いです──ふたつの集合の直積集合は、明らかに 「組」 です。ただ、直積集合において、メンバー のあいだに並びを意識しないという意味で、和集合と綴ったのだと思います (当時の私の記憶が定かではない)。

 TM では、primary-key という概念を使わないで 「個体指示子」 という概念を使っています。個体指示子は、基本的に、ユーザが付与した認知番号です (番号でない場合もある)──たとえば、従業員番号、部門 コード、受注番号、契約番号 等々。この認知番号が 「(管理対象としての) 主題」 を定立します──たとえば、「従業員」 「部門」 「受注」 「契約」 等々。「個体指示子」 のことを primary-key と云ってもいいでしょうし、「主題」 のことを entity と云ってもいいでしょう。ただし、primary-key の値が一意であるがどうかは、構文論のなかではわからない。それは、構文論の後に続く意味論 (値の充足) のなかでわかる事です。そのために、TM は、モデル の構成が終わってから、「キー の定義表」 を作成して、一意性を判断します。

 TM では、「主題」 が定立された後で、「主題」 のあいだに存在している 「関係 (正確には、関連)」 を検証します。それが意味している事は、「主題」 のなかには、関係を検証する前に、他の 「主題」 が関与する事はない、という事です。たとえば、従業員番号を 「個体指示子」 にして 「従業員」 という 「主題」 を定立した時には、部門 コード は関与しないという事です。

  { 従業員番号、従業員名称、・・・ }.
  { 部門 コード、部門名称、・・・ }.
  { 受注番号、受注日、受注数、・・・ }.
  { 契約番号、契約日、契約数、・・・ }.

 この時点で、TM では、「主題」 を二つの クラス (サブクラス) に分類します──すなわち、「出来事 (event)」 と それに関与する 「行為者 (resource)」 に分類します。TM では、「主題」 のあいだに関係 (関連) [ 並べるための特性関数 」 を定立する場合、「並び」 が全順序に従う クラス (サブクラス) と半順序に従う クラス (サブクラス) という規準に従って、「主題」 を二つの サブクラス に分類します。全順序に並ぶ サブクラス を 「出来事 (event)」 としています──「出来事 (event)」 以外が 「行為者 (resource)」 です。すなわち、個体指示子を付与された 「主題」 において、「出来事」 の補集合が 「行為者」 です。

 「出来事」 と 「行為者」 とのあいだの関係文法は、前回 述べました。この文法に従って、それぞれの 「主題」 の関係 (関連) を付けます。この関係は、2項関係で記述されます。そして、或る 「主題」 が他の 「主題」 に関与している状態は、(R) を付して明らかにします。たとえば、{ 受注番号、顧客番号 (R)、商品番号 (R)、受注日、受注数、・・・ } など。「行為者」 どうしの関係 (関連) において、管理対象にはなっているが、「主題」 とされていない場合には、「対照表」 として記述します。

  { 従業員番号、従業員名称、・・・ }.
  { 部門 コード、部門名称、・・・ }.
  { 従業員番号 (R)、部門 コード (R) }.

 もし、この 「対照表」 が部分関数であれば──したがって、いくつかの従業員が 「部門」 に関与していない場合であれば──、値が充足されている組みあわせしか発生しない。そのことは、2項関係上、「従業員」 のほうに、relation (relationship) の 「ゼロ の cardinality」 が記入されています。もし、部分関数であって、「ゼロ の cardinality」 がない場合には、「対照表」 を 3つの サブセット に切断しなければならない──{ 従業員番号 (R) } { 部門 コード (R) } { 従業員番号 (R)、部門 コード (R) }。どちらの表現法を使うかは、DA (Data Analyst) に任せています。





  この ウィンドウ を閉じる