「TMの会」 プログラム このウインドウを閉じる
/ 2005年 4月27日 / 

 

 ● 提示されたテーマは ...

 以下の問題を材料にして、T字形ER図の読みかたを、佐藤正美が実演する。

 テクニカル・エンジニア(データベース)の試験問題 [ 平成16年度、午後2 問題1 ]

 
 前回は、「event」 の読みかたを実演した。今回は、「resource」の読みかたを実演する。
 なお、今回、前半 (19:00〜20:00) は、「余談」として、IRDS について述べて、後半 (20:00〜21:00) に、ER図の読みかたを実演した。

 
 ● IRDS、オントロジー (ontology) とは ...

 来る 5月20日、DOA+コンソーシアムでは、「ISO/IRDS と MOF」を協議する。
 「ISO/IRDS と MOF」 の協議を理解しやすいように、前提知識として習得していなければならない「IRDS の歴史」について述べた。

 (1) IRDS は、Information Resource Dictionary System の略称である。
    すなわち、「情報資源を管理する Data Dictionary の構造」をいう。

 (2) 1980年代、RDB (Relational Data Base) が使われるようになった。
    RDBには、DBを一元管理するために、DD(Data Dictionary)が搭載されている。
    DD には、以下の情報が定義される。
     - データ構造
     - アプリケーション構成
     - authorization
     - NODE

 (3) DD の定義と DB の実態が乖離しないことを 「active」 という。
    つまり、DD が DB を動的にコントロールしている状態をいう。
    DD を、データ構造に対して 「active」 にすることは実現できる。
    しかし、プログラムに対して 「active」 にすることは、むずかしい。

 (4) 複数のベンダーの様々な RDB が使われ、DD の仕様も、様々であった。
    そのために、DD を、統一的に管理する DD がいる、という事態になった。
    ANSI が、1988年、統一DD の仕様を提示した。それを、通常、ANS/IRDS と云う。

 (5) 1980年代、いっぽうで、CASE ツールが使われるようになった。
    CASE は、Computer-Aided Software Engineering の略称である。
    CASE ツールは、SDLC (分析・設計・製造・保守) の自動化を目的にしていた。
    CASE ツールのほとんどすべては、それぞれの工程ごとの自動化ツールであった。
      - SDLS のすべてを自動化するツールを I-CASE と云う。
      - SDLC のそれぞれの工程ごとの自動化ツールを C-CASE という。

    [ 略語: I-CASE とは Integrated-CASE、C-CASE とは Component-CASE 。]

 (6) 1989年、IBM 社は、それぞれの工程の C-CASE を接続する構想を公表した。
    C-CASE を接続して--SDLC を自動化して--、DB2用DDを作る構造であった。
    C-CASE 群を接続するツールを Reposiory/Manager という。

 (7) DD とリポジトリ (Repository) という 2つの用語が使われるようになった。
    前述した歴史から判断できるように、DD とリポジトリには、以下の違いがある。
      - DD は、character-based である (diagramming ツールを対象にしていない)。
      - リポジトリは、diagramming の定義を収録している。

 (8) ANS/IRDS は、ISO/IRDS の基礎にはならなかった--いくつかの国が反対した。
    ISO/IRDS は、ANS/IRDS と違う構造になっている。

 (9) いっぽう、UML の仕様を基礎にして、MOF が公表された。
    MOF は、Meta Object Facility の略称である。

 (10) 「意味の共有」を実現するために、概念記述として、以下のような取り組みがある。
      - RDF (Resource Descriptive Framework)
      - OWL (Web Ontology Language)
      - ODL (Ontology Definition language)

 (11) Ontology は、以下の意味である。
      - 哲学、論理学では、「存在論、形而上学」 のことをいう。
      - 一般には、「概念分類体系」の意味として使われている。

 (12) 哲学・論理学では、「存在」とか「意味」に関して、以下の 2つの考えかたがある。
      - 関係主義、内包・外延の論理学
      - 実体主義、様相の論理学

     フレーゲ氏は、内包 (性質) を記述して、外延 (集合) を考える体系を整えた。
    そして、内包・外延の論理学および 「関係主義」 が、多数派となった。
     クリプキ氏が、「様相」を前提にして、「実体論 (形而上学)」 を再評価した。

 (13) TM と TM’は、いま、クリプキ氏の哲学を尺度にして、認知番号を検討している。

 
 以上が、前半の「余談」であった。
 後半は、前回のER図を対象にして、「resource」 の読みかたを実演した。

 
 ● 「Resource」 を読む (個々の 「resource」 の性質を確認する) ...

 「Resource」 の読みかたには、以下の 2つのステップ (手順) がある。

  (1) 個々の 「resource」 の性質を検証する。
  (2) 「Resource」 のあいだに成立する関係を検証する。

 
 個々の 「resource」 を検証する際、ER図の全体を観て、まず、以下の2点を調べる。

  (1) 「Resource」 の数と 「event」 の数を比較する。
  (2) 「Resource」 の右側 (性質) の数を調べる。

 (1) に関しては、「resource」 の数が、「event」 の数に比べて、多いほうが良い (事業過程の再編成に対して役立つ) ことを、すでに、いくども言及してきたので、割愛する。
 (2) に関しては、以下の2点を確認する。

    - 5つ以上あるかどうか。
    - 空白かどうか (性質が 1つも記述されていない状態か)。

 「5つ以上あるかどうか」 を確認する理由は、「resource」 の基本的な性質として、「名称、長さ、重さ、容積、色」などが列挙でき、(長さは サイズ・コードを付与されることが多いし、色は カラー・コードを付与されることが多いので、それぞれ、単独の entity として認知されるので、) 数は多くないのが、ふつうである。したがって、「resource」 の性質が、5つ以上、記述されている状態というのは、VE として扱う性質が混入していることが多いので注意されたい。たとえば、「顧客」 「支店」 や 「派遣スタッフ」 に関して、以下の項目は、VEとしたほうが良い。
    - 電話番号
    - FAX 番号
    - 電子メール・アドレス

 「空白 (性質が 1つも記述されていない)」 状態というのは、認知番号が、複合語的キー (compound-key)--たとえば、マスター・キーなど--の一部として使われていて、いままで、単独の 「resource」 として認知されてこなかったことを示している。そのような状態なら、「名称」は、プログラムのなかで、記述されていることが多いので、注意されたい。

 以上を確認したら、(今回は、試験問題なので、対応できないが、実地のデータ設計では、) システムを作り直す「目的」を考慮して、それぞれの 「resource」 に対して、新たに管理すべき (管理したほうが良い) データ項目はないのか--新たに追加するデータ項目はないのか--、という点を、ユーザと協議する。

 
 ● 「Resource」 を読む (「resource」 のあいだに成立する関係を確認する) ...

 個々の 「resource」 の性質を確認したら、次に、「resource」 のあいだに成立する関係を検証する。そのためには、「リレーションシップの検証表」 を使う。

 「リレーションシップの検証表」 は、実地では、「情報 (画面、帳票など)」 ごとに作成するが、今回は (試験問題なので、) 1つの検証表を作成する。(参考)

 

リレーションシップの検証表
  顧客 支店 担当者 業務 勤務地 スタッフ 就業曜日 レベル スキル
顧客                  
支店                
担当者                
業務                  
勤務地                  
派遣スタッフ              
就業曜日                
レベル                  
スキル                

 

 「リレーションシップの検証表」 は、縦列に観る。
 まず、「情報 (画面、帳票など)」 のなかで、明示的に記述されている リレーションシップ を、「検証表」 のなかに記入する。明示的な リレーションシップとは、「情報」 のなかに記述されている認知番号 (××番号、××コード) を、○ じるしで囲んで、それぞれ、順次 (getnext)、辿った アクセス・パスのことである。上述した 「検証表」 のなかに、赤色の (および、) を使って記入されているのが、「現時点で、成立している関係」 である。

   - は、「L-真、かつ、F-真」 を示す (「event」としての対照表)。
   - は、「L-真」 を示す (「validation-rule の構成表」 としての対照表)。

 
 次に、リレーションシップの網羅性を、「検証表」の縦列ごとに検証する。
 すなわち、「顧客」の縦列に沿って、順次、「顧客」、「支店」、「担当者」、「業務」、...などの横列に対する リレーションシップ を確認する。
 たとえば、「顧客」と「顧客」は、再帰であるが、「顧客」の再帰構成--「顧客」が法人であれば、「本社」に対する「支社」などの関係--を記述するのかどうか、という点を確認する。また、「顧客」と「支店」とのあいだに、すでに、リレーションシップが成立しているが、「値の真理性」を検証する。たとえば、以下の値を考えてみる。

  顧客 {a、a}.  支店 {b、b}.

 もし、「顧客」と「支店」との関係が、支店ごとに顧客を管理していることを意味して、対照表のなかに、以下の タプル (テーブル) が構成される、とする。

  {a、b}. {a、b}.

 その際、以下の構成が起こるかどうか--2つの 支店が、1つの 顧客を管理することがあるかどうか--、という点を確認する。

  {a、b}. {a、b}.

 ちなみに、「値の真理性」を検証する際、以下のように、リレーションシップ・タイプを考慮すれば良い。

  (1) 1 対 1   (たとえば、{a、b}. {a、b}.)
  (2) 1 対 複数 (たとえば、{a、b}. {a、b}.)
  (3) 複数 対 1 (たとえば、{a、b}. {a、b}.)
  (4) 複数 対 複数

 次に、「顧客」と「担当者」のあいだに、リレーションシップが成立するかどうか、という点を確認する。前述したように、「現時点では」、支店ごとに顧客が管理されていることになっているが、「担当者」が「顧客」を管理しているのかどうか、という点を確認する。もし、「担当者」が「顧客」を管理しているのであれば、「支店. 顧客. 対照表」 は排除されて、「担当者. 顧客. 対照表」 が成立することになる--あるいは、どの支店の どの担当者が、どの顧客を管理しているのか、という点を示すなら、以下の構成となる。

  支店 {支店コード、支店名、...}.

  担当者 {担当者コード、担当者氏名、...}.

  支店. 担当者. 対照表 {支店コード(R)、担当者コード(R)}.

  顧客 {顧客コード、顧客名、...}.

  担当者. 顧客. 対照表 {担当者コード(R)、顧客コード(R)}.

 
 あるいは、

  支店 {支店コード、支店名、...}.

  担当者 {担当者コード、担当者氏名、...}.

  支店. 担当者. 対照表 {支店コード(R)、担当者コード(R)}.

  顧客 {顧客コード、顧客名、...}.

  支店. 担当者. 顧客. 対照表 {支店コード(R)、担当者コード(R)、顧客コード(R)}.

 
 以上のいずれの構成が妥当か、という判断は、担当者コードの値 (コードの適用区域) を考慮しなければならないので、今回、判断しない。

 以下同様にして、「顧客」に対して、順次、横列に記述されている entity との リレーションシップを、以下の点を配慮しながら、検証すればよい。

  (1) リレーションシップは、成立するのかどうか。
  (2) もし、リレーションシップが成立するなら、どのような 「意味」 なのか。
  (3) その リレーションシップを、実際に導入するのかどうか。

 
 今回は、試験問題なので、以上の諸点を、ユーザと協議して、確認することができないが、「TMの会」 の会員は、自ら、DAとユーザの一人二役を演じて、「リレーションシップの検証表」 の空欄を、すべて、検証して、使いかたを習得してほしい。

 
(参考)
 実地のデータ設計では、「情報」ごとに、リレーションシップ検証表を作り、(「情報」のなかに記述されている) 「resource」 と 「event」 のすべてを記載する。なお、記載順として、「resource」 を最初に記述して、次に、「event」 を記述すれば良い。

ページのトップ
 
  このウインドウを閉じる