T字形
ウィトゲンシュタイン『論理哲学論考』を読む (ちくま学芸文庫) を読んで、T字形ER手法は 論理哲学論考 (岩波文庫) にインスパイヤされて生まれた、ということの意味が分かってきた。 論考が世界を分析する道具立てが、やたらとRDBに似ているのだ。 論考とい…
T字形ER手法は eventへのresource混入 resourceへのevent混入 を許さない。 例えば「社員マスタに所属部門コードがある」というデータ構造 社員マスタ = { 社員番号, 社員名, 所属部門コード } は、社員というresourceに配属というeventが混入していると見な…
T字形ER手法では、現場のコード体系に従って、解析の基点となる entity を生成する。 商品コードがあるから、商品というresourceを作るとか。 受注番号があるから、受注というeventを作るとか。 これが、基点となるentityを見出す唯一のルールだったら現場に…
T字形ER図を教わるまで、エンティティが4個以上あるER図を読むのが苦痛だった。 今でも DBDesigner とか、SQL Server の付属ツールが出力するER図は、あんまり読みたくない。 これらのツールが吐く絵は、ほんとは一次元だ。エンティティの並び方にルールが…
サブセットを実装するとできなくなってしまうことに unique制約 外部キー制約 がある。例えば、社員マスタを正社員とパート社員というサブセットに分割したとして、 正社員(R) = { 社員ID, 社員コード, 名前, ... } パート社員(R) = { 社員ID, 社員コード, …
2ヶ月前に書いた1回目の続き。 http://d.hatena.ne.jp/tgk/20060507 「第3正規形だが非ボイスコッド正規形」の表の正規化のしかた。 前回書いたことは 「第3正規形だが非ボイスコッド正規形」の表を教科書的に正規化すると、現実世界に存在する制約をデータ…
周延とは何か。 SDIのサイトによれば、 http://www.sdi-net.co.jp/logico-07.htm 内包を使って正しい外延が形成されることを 「周延」 という。 とのこと。 では、内包・外延とはなにか。 論理学の用語らしいが、RDBに引き寄せて言えば、あるリレーションの…
正規化理論の教科書では、「第3正規形だが非ボイス・コッド正規形」のデータ構造*1をボイス・コッド正規形に分解すると関数従属性が消滅する、とよく説明される。 このようなデータ構造に実務で出会ったら、どうすればいいのか。 増永良文 リレーショナルデ…
T字形でnullを排除する方法に、「形式的サブセット」の導入がある。 形式的サブセット 顧客マスタに「携帯電話番号」を置くと、携帯を持っていない人の同属性がnullになってしまう。 (まあ、nullにしないで空文字列でも入れておけばいいのかもしれないが*1…
今回はSQLが文字列のnullをどう扱うかを整理する。 文字列のnull 先週、後輩に「SQLで文字列の連結演算子を使って苗字と名前を連結すると、答えが空になってしまうのですが...」という相談を受けた。 検索対象にしたテーブルで、下の名前にnullが混入してい…
T字形からどんどん離れていくが、SQLでの算術演算について整理する。 算術演算のnull しつこいようだがおさらい。 SQLでのnullは「何か値があるはずだけど、今は分からない」という意味。 なので、nullに対して四則演算すると、何でもnullになる。 「何だか…
T字形ER手法が null を認めない理由は、P-80「データの関係(null値と対照表)」に書かれている。 「ヌル」を適切に扱うためには、2値(真および偽という2つの値)を前提にしないで、 3値(真・偽・maybe)あるいは4値(真・偽・unknown・undefined)を前提にした 「…
ここでは3値論理のアウトラインを書いて、前回の課題のうち「maybe, unknown, undefined とはどういう意味の値か」だけ解決する。 3値論理 SQLでは、nullは3値論理で扱われる。3値の真理値表は以下の通り。 NOT not true false null null false true AND…
正美氏とかDateの本を読むと、Codd論文を理解するとnullの存在が許せなくなるのだなあ、と思う。 私はこのnull徹底排除の感覚が理解できていない。Codd論文読んだことないし。比較演算や集計演算の対象に null が混入していると、直感に反する結果が出てくる…
SRCから正美氏のセミナーの案内が来た。 http://www.src-j.com/seminar/detail_s.asp?p_BackURL=monthly_list.asp&p_SemCode=26-135 当然行くつもりだが、姉から預かっているインコをどうしよう。連れて行くか。 もし机の上に鳥かごを載せている受講者がいた…
もう1ヶ月も前のニュースだけど。 住友電工の業務アプリフレームワーク 楽々FrameworkII の無償体験版が、3月末まで入手可能だ。 http://www.sei-info.co.jp/sp/FW_taiken.htmlこのフレームワークはT字形ER手法と相性がいいらしい。 JavaとRDBを見事に接合…
さりげなく導入された"MO" 「データベース設計論」P-103を見ると、"R"(=resource),"E"(=event), "VE" 以外の器の型(?)として、"MO" というのができたことがわかる。 一見VEのようだが、VE は entityの中の不純なアトリビュートを排除することを目的とする…
http://www.honda.co.jp/expert/boshu/HGT/当たり前だが、やはり実践されている技法なのだなあと。 ホンダ以外にも、オリンパス・オムロン・住友電工などが社内システムをT字形で構築している模様。
スキャナを買ってきた。これから時々手書きT字形ER図を描いては公開します。 ツールで描いているとぜんぜん思ったとおりの絵にならないので、汚いけど手書きで行きます。 初回の題材は、以下のページの問題。 楽々ERDレッスン 第1回:「お持ち帰りご注文用紙…
染色と裁断の順番を図示したら何がわかるか T字形ER手法では、常に2つのentityをつないで(=binaryに)対照表を生成する。 3つ以上のentityをつないで(=N-aryに)対照表を生成することは禁じられている。 黒本P-66によれば、その理由は N-ary方式を使えば、ビ…
T字形のサンプルアプリケーションを作らなくてはならない。 今月末にリリースするのだ。 完全に正規化したデータベースで、またたきのレスポンスを実現する、というやつ。 でも今、社内に「渡辺幸三氏のCONCEPTWARE/財務管理をJavaで実装する」というスカン…
ダメなコード体系は、SEが立て直せ T字形と出会った時に最も印象的だったのは、「顧客のコード体系に従ってデータを解析することによって、SEの恣意性を排除する」という考え方だった。 で、半年ほど、T字形はSEが顧客のコード体系に干渉することを禁じてい…
ジンバブエから帰ってきたら正美氏の新作が届いていた。 ざっと眺めてみると、正に決定版的な内容。 この本は1行ずつバラバラになるまで読み込むことになるだろう。アマゾンでは何か在庫切れしてるけど、SRCからは買えます。 http://www.src-j.com/book_no/…
サブセットはまだ謎だらけだが、サブセットの適用範囲が非常に狭いことだけは分かった。 ということは。 研修の時はT字形ER界の鬼っ子のように思えたVEだが、作図上これが登場する場面は非常に多いのだ。 VEがいっぱいできても不安になる必要はなさそうだ。
こういう場合、最初に教わるルールはこうだ: 1つのentityの中に、複数の区分コードがあるなら、大きいサブセットが小さいサブセットを含むように作図する 例えば顧客の属性に「個人・法人区分」「性別」があるのであれば、 顧客を個人と法人に分解 個人を…
整理します。 HDR-DTL構造においては、HDRとDTLのどちらの identifier も(R)ではない。 例えば「受注番号」は、受注ヘッダの identifier であると同時に、受注明細の identifier(の一要素)でもある。 だから、resourceのHDR-DTL構造において、HDR と DTL …
基本中の基本で、分かっていないことがある。 resource:resourceの関係に、対照表を生成したくない、と思う時がある。 一方のresourceに、他方のidentifierを移送したくなるのだ。 そのようなデータ構造は、T字形では「従業員マスタに所属部門コードを入れる…
ウホッ! エントリしてから"site:www.sdi-net.co.jp resourceのHDR-DTL"で念のため検索。すると一発で出てきてしまった。企画倒れ決定。 http://www.sdi-net.co.jp/sdi_129.htm ■ QUESTION 「resource」にも「HDR-DTL」形式はあるか? ▼ ANSWER ある。 …
サブセット間には交わりがあってはならない。 「取引先」を 「現役取引先」 「過去の取引先」 にサブセット化するのはモレ・ダブリがないのでよいが、 「出荷先」 「支払先」 「請求先」 にサブセット化するのは、「出荷先かつ請求先」などの取引先が発生す…
定義上、存在しません。 しないはずなのだが... 「eventではない対照表」というものは普通にある。よく出てくる例は在庫。 在庫は 倉庫x棚x商品 の対照表だが、identifierがない(「在庫コード」なんてものはない)ので、eventではない。その逆の、「対照…