モデリング

使える論理削除への道(1) それは論理削除の問題なのか

削除フラグ(というか「論理削除を削除フラグだけで実装すること」)批判は何度も見てきたが PostgreSQLアンチパターン これ見るともはや論理削除自体が闇扱いになってしまったようだ。 闇だろうと何だろうと論理削除(というドリルが提供する穴)は要件の実装…

主キーが「圧倒的多数の関数従属性が成立しないことを保証する」ものならば、受注ヘッダに顧客名を置いてはならないのだろうか

渡辺先生がミステリアスな記事をupしている。 http://watanabek.cocolog-nifty.com/blog/2014/08/post-b7d8.html つまり主キー設計というものは、「いくつかの関数従属性が成立することを分析する仕事」というよりは、 むしろ「圧倒的多数の関数従属性が成立…

「ドメイン駆動設計」感想(1) - なぜファットモデルになるのか

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型本購入: 19人 クリック: 1,360回この商品を含むブロ…

生きているうちに自然キーvsサロゲートキー問題に決着を付けたい(1)

営業のアプローチ方法にA,Bがあるとして(例えば「礼状は手書きで出す」「礼状は印刷して出す」とか)、Aの成約率が10%でBのそれが5%なら、「Aしかやらない」というのは悪くない選択だろう。だが我々の仕事は営業とは違っている。 ある量産品の製造方法にA,Bが…

SQLアンチパターン「健忘症的サロゲートキー」の提案

SQLアンチパターン作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る本書の著者はサロゲートキーに対して消極的なのだから、…

データモデル自体はアジャイルなのだが...

全体に与える影響が極めて大きく、後戻りしにくい「スポンジ層」というのが存在する。そのひとつが渡辺さんの言われているデータモデルである。データモデリングなきアジャイル開発は危ういか?:An Agile Way 平鍋さんが「(業務システムの)データモデルの変…

県と市町村を属性に持つ顧客マスタは非正規形

新人研修で正規化理論を解説しなきゃならないので復習してみたが、やっぱり実践との関係がよくわからない。 例えば第三正規形の定義は 第二正規形である すべての非キー属性が、キーに対して推移従属していない だと思うんだけど、であれば次のような顧客マ…

日本語カラム名はかなりメジャーな存在らしい

DB設計を考える - かつのりの日記2 http://blogs.wankuma.com/kacchan6/archive/2007/08/15/90463.aspx ここの管理人さん*1が「テーブル名・カラム名の名前付けルールはどうしてる?小文字アンダースコア区切り?キャメルケース?」というアンケートを取っ…

2項が取りうる4つの関係。クラス設計をデータ設計に転用できない理由

2つの集合なり概念なりがあったら、それらの関係は以下のうちどれかになるが、 1. まったく重ならない 2. 一部重なる(けど包含関係じゃない) 3. 包含関係 4. 全部重なるTMでは、2項の関係が上記のうちどれなのかに激しくこだわる。 例えば取引先の区分に「…

意味ありコードの実装

ユーザが意味ありコードを要求する理由がよくわからないのだが、西田順生「作る前にコストダウンする技術―景気はいいのになぜ儲からないのか (PHPビジネス選書)」に意味ありコードの実例が載っていたので実装方法を考えてみる。 以下はGroup Technology*1を…

去年終わった話を蒸し返してるだけ

arnさんにトラックバックをいただきました: http://d.hatena.ne.jp/arn/20070302 うーむ、問題はコードで起こっているんじゃない、構造で起こってるんだ! ……という主張はわかるのだが、それとサロゲートキーの話がどう繋がるのかよくわからんのだよなぁ。 …

マスタメンテナンスで未来のデータを入力したいんですけど

マスタメンテの扱いは毎回困るところ。 どうもマスタデータには「最新」系のものと「無時間」系のものがあるらしい。 いつのトランザクションデータと結合しても問題ないのが「無時間」のマスタで、問題を起こすことがあるのが「最新」のマスタ。 元号マスタ…

内的・外的ということと外部キー

内的・外的という考え方がある。 野矢茂樹「ウィトゲンシュタイン『論理哲学論考』を読む (ちくま学芸文庫)」 P-50 それが変化したとしてもあなたがなお同一人物であり続ける場合、その性質や関係はあなたという対象にとって 「外的」であるといわれる。それ…

はてなブックマークのデータモデル

Toad Data Modeler の練習で、はてなブックマークのデータモデルを描いてみた。 ほんとはダイアリーのデータモデルを描こうと思ったのだけど、全文検索まわりをどうしたらいいのか分からなくて、めんどくさくなって止めた。 外部キーの制御の仕方がまだよく…

フラグを属性にするか、リレーションシップにするか

オブジェクトモデリングで何だかよく分からないことに、あるデータ項目を属性にするか関連にするかの基準があいまい、というのがある。 怪しい世界だなあと思って見ていたが、考えてみるとデータモデリングの世界もおんなじです。 あるデータ項目を「属性に…

エンティティの見出し方・属性の割り振り方 - 伝統的設計・T字形ER手法・ABD

非正規形の表が与えられたときに、その表を出力できるDBをどうやって設計するか。 伝統的DB設計法・T字形ER手法・ABDのやり方を並べて書いてみる。 伝統的DB設計法 伝統的なDB設計では、非正規形の表を正規化する過程で、エンティティを切り出していく。 ま…

データモデリング手法の進化の方向

真野氏のやり方を見て思うのだが、データモデリング手法は着実に基底テーブルが増える方向に進んでいるのだな。 昔は主キーに対して関数従属するデータは全部同じ器に放り込んでいた。社員マスタに所属部門コードが入っていてもOK。 現役社員と退職社員を区…

エンティティ内の属性のライフサイクルを揃える

真野正 実践的データモデリング入門 (DB magazine selection) によると、CRUD分析とは別にIRUN分析というものがあるそうだ。 CRUD分析では、各アクティビティがCRUDするエンティティの中の、どの属性が読み書きされるのかまではわからない。 そこでエンティ…

delete&insert するデータのIDを維持しなくてはならない ... のだろうか (2)

前回 http://d.hatena.ne.jp/tgk/20060913#1158169167 の続き。 いろいろコメントをいただいたおかげで理解が進んだ。がっつり整理する。 IDあるいは代理キーの導入に肯定的な人であっても、立場がいろいろある。今見えているポジションが3つ。 全てのテー…

delete&insert するデータのIDを維持しなくてはならない ... のだろうか?

IDについてまだ考えている。 テーブルごとに必ずIDを振るという考え方に、まだ抵抗がある。 「今のところ誰も見ていないID」を振る意味が分からないのだが... 「誰も見ていないID」とは例えば、delete&insert で一括登録するレコードに付けたID。 マスタに…

IDがあっても、event からコードを削除してはいけない

盛り下がってきたけど、今かすかにID論が熱い! 渡辺氏がIDについて懸念していることに自分もよく引っかかるので、自戒のメモ。 コードはfactだから削除しちゃダメ ウチで持っているECサイトのパッケージでは、受注明細テーブルに、商品マスタから商品名をコ…

DOA派からサロゲートキーが嫌われる理由

今、複合キー論が熱い! 渡辺幸三氏の「設計者の発言」で、サロゲートキーがDOA派から嫌われている理由がわかった。 理由の一つは、サロゲートキーの導入によって、もともとある複合キーの実装が忘れられがちになる。だから危ない、ということだった。 とい…

「コード体系はユーザインターフェイスである」とはどういうことか

今、複合キー論・ID論・コード体系論が熱い! トラックしてるけど流れが速くてついていけない。地道に整理する。 まずは羽生氏の言う「コード体系はユーザインターフェイスである」の意味がわかったと思うのでメモ。 多分こういうこと: 「コード体系はユー…

ABD (Activity Based Modeling) の体系を想像する(1)

羽生章洋氏のABD (Activity Based Modeling) とはいったい何か、唯一のまとまった資料 http://event.seasar.org/sc2006spring/viewAttachment.do?_pageName_=Materials%2FD4.ppt からその全体像を復元するシリーズ。 もちろんご本人に伺えばいいんだけど、ま…

続・クラス図でモデリングしても実装に落とせないのは何でだ

いただいたコメントをきっかけにしてさらに考えてみました。 出荷済みの受注明細に載っている商品の単価は受注時点の単価なので、受注明細にも単価を持っているのでは? 自分が何を言いたいのかまだよくわかんないのですが、がんばって書いてみます。 クラス…

クラス図でモデリングしても実装に落とせないのは何でだ

3日前にこんなことを書いた。 http://d.hatena.ne.jp/tgk/20060804#1154714912 「問題領域の構造」と「責務の割り付け」を1枚の絵で表すことはできないのに、それをやろうとしていることが、UMLモデリングなるものの問題なのではないかと。 1枚のクラス図…

UMLモデリングの問題点(まだ仮説)

萩本順三 これだけでわかる!初歩のUMLモデリング―基礎から各種テクニックまで第一人者が伝授!! (@ITハイブックス) を読了。 わかったこと: 1. クラス図の作図には複数の目的がある クラス図というものは開発のフェーズの進行に伴って何度も描き直される。 問…

ドメインモデルと永続化

「オブジェクト指向言語で作るなら、オブジェクト指向で設計するのが一番いいのだ」みたいな話には、何か証拠があるのだろうか。 多態性をまったく使わないとか、極端なのは論外としても、「設計がよりオブジェクト指向的であれば、よりよい設計」ということ…

データモデリングを覚えてからオブジェクトモデリングに興味を持つべき

UMLでオブジェクトモデリングする教科書として、豆蔵の人が書いた これだけでわかる!初歩のUMLモデリング―基礎から各種テクニックまで第一人者が伝授!! (@ITハイブックス) を読んでみる。 買ったときは何書いてあるのか分からなかったけど、T字形やってから…

ようやくオブジェクトモデリングの勉強を開始する

オブジェクトモデリングというのはまったく勉強していない領域だ。 何を言っているのか分からなくて嫌いなのだ。 何がこんなに分からないのか、冷静になって考えてみました。 何が理解できないか 私の知ってるオブジェクトモデリングというのは、 問題領域に…