データモデリング ネーミング標準とドメイン なぜ、ネーミング標準が必要か • 大きなシステムは複数人でモデリング • それぞれが勝手な名前付けを行うと整合性 がとれない。 • 異音同義語(シノニム synonym) – 同じ実体を別の言葉で表現 • 同音異義語(ホノニム homonym) – 異なる実体を同じ言葉で表現 – こっちのほうが厄介 DBMe書店での同音異義語 異なる実体であることがある。 贈り物の場合 住所の他に電話番号や郵便番号も Quiz: なぜ同音異義の属性があって は困るのか? • Join が ある から オブジェクト指向の世界では、オブジェク トの名前が違えば、インスタンス変数の 名前は同じものがあってもよいはず ① オブジェクト指向DBでなく、関係DBだか ら ② 複数の開発者で必ず一意に属性を識別 するため ③ 開発者とユーザとの意識を統一するため [補助] なぜ,joinがあると困る? • Joinでは異なる表の中の属性が1つの表にに結合 される 顧客 名前 お届け先 住所 電話番号 名前 住所 電話番号 送り主とお届け先の対応 名前 住所 電話番号 名前 住所 電話番号 これでは,どれがプレゼントの送り先かわからない 名前の付け方がまちまちでも困る • 実際にあった話 • 高齢者見守りのユビキタス・システム開発時 – 抽象状態(Abstract Condition) – エリアの管理者(Area Concierge) ともに省略形が AC,名前は同じだが実体は異なる • 状況キャッシュの省略形がJC – 状況は英語で situation だから SC のはず – ちょっと,英語のセンスが疑われる! ネーミング標準の策定 • 名前の付け方をプロジェクトで統一する • 紹介するのは3つを組合わせる古典的方法 – 主要語(Prime):定義したい対象 – 修飾語(Qualifier):主要語を補足 – 分類区分(Class):ドメイン • 用語集(辞書)をプロジェクトで作成 • ドメインは、すべてのプロジェクトに共通のも のを作っておく • 欠点は、安易な用語の組合せに陥りやすい – ホノニムはなくなってもシノニムはなくならない Quiz: なぜ,シノニムはなくならない • 同じものに多くの違う名前を付けてしまうの は? ① ネーミング標準は標準であって,これを守らなけれ ば処罰されるというほど厳しいものではないから ○ ② ネーミング標準,つまり,ルールが決まっているの で,命名の責任をルールのせいにして,意味を考 えずに名前を付けてしまうから ③ ネーミング標準は,プロジェクトごとに決めるので, 常に正しいルールになっているとは限らないから ④ 元来,人間は自分だけの名前を付けたがるから 論理名ネーミングルール • 主要語、修飾語、分類区分語の組み合わせ でデータ項目名を作る • 日本語では(修飾語)+主要語+分類区分語 • 単語は必ず、プロジェクトの用語集に登録さ れているものを使う。 – ない場合は登録する • 各単語の英語を用意しておき、物理データ項 目はこの英語で作る。 論理名ネーミングルールに 少しは融通を利かせるために • 主要語は修飾語として使ってもよい • 複数の主要語と修飾語の組み合わせで、新 たな修飾語を作ってもよい • 修飾語は、用途ごとに分類しておくと便利 – 種別修飾語 – 場所修飾語 – 状況修飾語 など ドメイン • データの型や取りうる値・範囲の規定 • C言語などの型よりも抽象度の高いデータ型 – 1月は1日から31日まで – 預金は、普通、当座、総合しかない – Excelのセルの書式機能に似ているが,ドメインは自分で 決めるもの • データモデリングでは強力な武器になる – 分類区分(ドメイン)をデータ項目名につけると、データの 素性がひと目でわかる – ドメインを決めることであいまい性がなくなり、分析が進む [補助]データの素性がわかると… • 属性名を見ただけで,その属性の値が分かれば, 分析が進む • 「商品価格」という属性名からは – マイナスの値はありえない. – 小数点の値もおかしい • エンティティ「ショッピング・カート」で – 属性「顧客ID」と言うのを見ると,エンティティ「ショッピン グ・カート」はエンティティ「顧客」を参照していることが分 かる – 属性「顧客ID」が「ショッピング・カート」の主キーの一部な ら, 「ショッピング・カート」は「顧客」に依存していることも 判明する. Excelのセルの書式設定機能 ドメインの種別 • コード (主キーに使用されるのがほとんど) – よくある対象を表現する上で、桁数の異なるいくつかの コードを用意する – システムごとでコードの型がバラバラにならない • 区分 – とりうる値の範囲が決まっているもの – C言語でいうenumeration機能 • 名称 – 分類法がたくさんあり、オブジェクト指向の単一継承では 表せない。 • 漢字とかなの名称、個人名と法人名、などなど • 住所 – 都道府県名、市町村名、地名と番地、建物などに分ける 分析が進むにつれドメインも詳細化 • たとえば住所の場合 • 初期のモデルでは – 顧客住所 • 分析と設計が進むにつれ – 顧客住所_都道府県名、顧客住所_市町村名、顧 客住所_地名 ドメインと用語集をもとにネーミング ① ドメインはすでに定義されているものとする ② データ項目名を構成するための用語集を作ってお く ③ データ項目に割り当てるドメイン(データの素性)を 見抜く ④ データ項目名を以下の3つの用語に分割する – 主要語 – 修飾語 – 分類区分(実はこれはドメインだから先に決まっている) • この分割のためのルールを決めることがネーミン グ標準(教科書は因数分解に類似といっている) DBMe書店の例では • エンティティ「顧客」でネーミング標準に従った データ項目名の名前付けをすると • 「顧客」内のデータ項目名には、顧客を修飾 語につける • 区分が名前のものには、最後に「○○名」と する • 「届け先」「店頭渡し先」でも同様 表6-1
© Copyright 2024 ExpyDoc