2004年 3月 1日 作成 | データ 設計技法 (概念設計と論理設計) | >> 目次 (作成日順) |
2008年 4月 1日 補遺 |
論理設計とは、概念設計のなかで記述された対象を、論理的な データ 構造や演算系として変換する作業である。論理設計段階のなかで使われている手法として、たとえば、リレーショナル・データベース (RDBMS) を対象とすれば、関係 モデル (relational data model) がある。
概念設計と論理設計では、それぞれ、使用されている手法が違うので、概念設計の アウトプット を論理設計の関係 モデル に変換することは、「機械的 (単純な「1 対 1 対応)」には できないので、システム・エンジニア の判断が介入することになる。概念設計のなかで使われている手法には、「モノ」 を認知する判断規準がないし、「(モノ と モノ との間に成立する) 関連」の網羅性を検証する規準もないので、概念設計のアウトプット 自体が 「恣意的」 である。 概念設計 (意味論) と論理設計 (数理 モデル) を結ぶ際、最大にむずかしい点は、以下の 2点である。
(1) null の扱い
或る意味では、(1) は、(2) から派生する論点である。
(1) [ 空集合を前提としない ] いかなる テーブル にも null は起こらない。 関係 R と同じ次数をもつ空集合 R (φ) を認めるかどうか、という論点である。関係 モデルは、(2)を前提にしている。したがって、outer join では、null の生じる テーブル を認める。リレーショナル 代数演算として、関係 R と同じ次数をもつ空集合 R (φ) を前提にすることは、記号の操作上、整合的であるが(注 3)、コッド 博士自らが、(1980年代後半に公になさった) 「SQL 致命的な欠点 (Fatal Flaws)」 のなかで、SQL が (maybe として記述される) null を扱えない点を非難なさっている。ただし、「SQL が null を扱えない」 と非難されているのであって、「関係 R と同じ次数をもつ空集合 R (φ) 」 を否認なさった訳ではない。
関係 モデル では、記号の操作上、タプル (tuple) は、直積集合および選択公理を 「きびしく」 適用されていない──つまり、タプル のなかでは、属性値の並びは論点にされていない(注 4)。選択公理では、「空でない」 集合の族を前提にしているが、リレーショナル 代数演算のなかで、R (φ) を前提にすることを小生は反対しない。 {従業員番号、従業員名称、部門 コード(R)}. {部門 コード、部門名称}.
「配属されていない」 従業員は、部門 コード が null である。
小生は、(リレーショナル 代数演算のなかではなくて、) 直積集合を前提にした関係 スキーマ のなかに生じる null に対しては、なんらかの対応をしなければならない、と思っている。
R (φ) を最初に論点にしたので、論点が逆になってしまったが、論理設計のなかで、最大にむずかしい点は、(関係 モデル は属性値集合を対象としているので、) 属性値集合の 「意味 (事業のなかで使われている意味)」 を、システム・エンジニア が正しく理解するためには、事業の知識を習得していなければならない、という点である。つまり、論理設計は概念設計を前提にしていなければならない、という点である。したがって、2つの工程間に生じる隔絶を結ばなければならないので、データベース の品質は、(システム・エンジニア の力量に依存した) 恣意性に晒される。意味論と数理 モデル の接続 (あるいは、統合・融合) という悩ましい問題点が出てくる。
(1) 概念設計のなかで、「モノ」 を認知する判断規準と 「関連」 を認識する判断規準を提示する。 以上の 3点を実現しようとすれば、現実世界の事態を対象にして、事態を写像した 「論理的な構造」 を システム・エンジニア が考え出すのではなくて、事業のなかで使われている 「(伝達を目的とした) 情報 [ つまり、事業に関与している人たちの言葉の使いかた ]」を対象にしたほうが良い。この点に関しては、(本 ホームページ の)「論理 データベース 論考を読む」 のなかで記述した 「『基準編第 9章 (言語 ゲーム)』 を読む」 を参照されたい。
(注 1)
テーブル A {1, a} {2, b} {3, c}
テーブル A とテーブル B の outer join は以下のようになる。
{1, a, ○} {2, b, △} {3, c, null}
たとえば、属性値として、1 と 2 と 3 を従業員とする。
以上の outer join の テーブル を給与計算 「原簿」 とする。
|
[ 補遺 ] (2008年 4月 1日)
「データ 設計技法 (業務分析と概念設計)」 (284 ページ、2008年 3月 1日の「補遺」) で述べたように、私は、「論理的意味論 (logical semantics) 」 の立場をとっています。したがって、私は、コッド 関係 モデル の流派に属していると思っています。 モデル は、アルゴリズム と同義であって、以下の 2つの記述法で構成されます。
(1) 言語 (language) 言語は、現実的事態を対象にする 「物言語 (thing language)」 であれば、以下の構成となります。
(1)-1 語彙 (ロジック の語彙と 「観察術語」)
ロジック の語彙とは、「でない (not)」 「および (and)」 「または (or)」 「ならば (if)」 「すべての (all)」 「いくつかの (some)」 「... であるような クラス (the class of all things such as that ...)」 「... の メンバー である (... is an element of class)」 のような語彙を云います。 文法は、以上の語彙を前提にして、文を生成する規則です。文法は、ロジック のなかで認められている公理系を使います。 文法を扱う領域を 「構文論 (あるいは、統語論)」 と云い、語彙と現実的事態との指示関係を扱う領域を 「意味論」 と云います。
モデル とは、前述したように、アルゴリズム と同義なので、狭義には、文法 (生成規則) のことを云いますが、広義には、「語彙と文法」 を揃えた言語を使って記述できる 「構成 (modeling)」 のことであると言って良いでしょう。
以上に述べた体系が 「論理的意味論」 の考えかたです。 |
<< もどる | HOME | すすむ >> | |
▼ ベーシックス |