Skip to content

vol8_20140622_事前疑問質問

@kuma_nana edited this page Jul 12, 2014 · 17 revisions

Vol.8 予習メモ

事前に調べたこと、不明点等、ご自由に更新して下さい。

エンティティについて

(@kuma_nana) 自然言語(英語)の意味 entity:実在物、実体、存在

データモデリング分野におけるエンティティ

より引用(一部だけ @kuma_nana が改変):

エンティティとは、システム(データベース)の管理対象となりうるもので
人、モノ、イベント、履歴などがあります。
エンティティには、リソース系、イベント系、サマリー系などがあり、以下のように分類されます。 

+-------------+-----------------------------------+
エンティティ種別 主な例 
+-------------+-----------------------------------+
 リソース系       会社、顧客、商品、製品、工場など。 
 イベント系       会員登録・変更・削除、発注、出荷など。 
 サマリー系       購入履歴、出荷履歴など。 
+-------------+-----------------------------------+

エンティティの抽出のコツがあり、以下の手順を踏むのもよいでしょう。 

(1)エンティティ候補をヒト、モノなどのカテゴリーで抽出(マインドマップで行うのもよい。) 

 そこから、リソース系エンティティの抽出 

(2)業務フローを書く。(フローチャートや DFD、アクティビティ図で行うのもよい)。 

 そこから、イベント系エンティティの抽出 
  • 業務システムモデリング練習帳(渡辺幸三さんの書籍)の目次より一部抜粋、一部改変
「論理的な帳簿単位」としてのテーブル(=エンティティタイプ)
関数従属性にもとづいて帳簿単位を切り出す
「参照関係」と「多重度」
複合キーによる関数従属性と「親子関係」
     例:商品テーブル(親)、倉庫テーブル(親) - 在庫テーブル(子)商品Code+倉庫Codeの連結キーで在庫数を記録
第三のテーブル関連「派生関係」
        例:取引先基本テーブル(スーパータイプ) - 売上先属性テーブル(サブタイプ)
正規化について
  • データベース設計で多対多の場合に関連テーブルを使うのを、そのままオブジェクトに持ち込んでしまいがちだという話

@sugimoto_kei さんwrote:

https://twitter.com/sugimoto_kei/status/477710153513709568

識別子やID(サロゲートキー)は値オブジェクトでしょ?
値オブジェクトである識別子やIDを、エンティティの代理として使用できるのは、
エンティティ自体が値オブジェクトだからに他ならない。

https://twitter.com/sugimoto_kei/status/477709462464385024

エンティティと値オブジェクトの区別って、やっぱり実装上のものだと思う。
「僕」に関する属性は変わっても「僕自身」は不変だとすればそれは値でしょう。
エンティティと属性関数をセットものにして考えるから、
エンティティと値オブジェクトが異なるように見えてくるだけじゃないの?

@hidenorigoto さん からもご意見頂きました

エンティティ自体を値オブジェクトと呼べるかどうかは、定義の仕方によると思いました。
エンティティのそれぞれの属性は値だけれども、それらが集まった1個が指し示すモノ
これは管理対象になり得て、IDを付けないと管理しづらい(できない)ということかなと思います
「金額」とか「住所」というのは、それ自体を管理対象にしないし、IDをつけて管理するものでもないですよね

ただ、モデリングという段階では(モデルについて考えるという場合)、
エンティティと値オブジェクトを区別するということはあまり有効には働かない
(値オブジェクトといおうが エンティティの属性といおうが、そんなに変わらない)
と思っています。

値オブジェクトについて

余談 (@kuma_nana)

  • この6月にあったJJUGナイトセミナー(JJUG DDD)、和智さんの講演資料スライドが公開されていましたね

http://www.slideshare.net/digitalsoul0124/ss-36082910

@hidenorigoto wrote:

40ページのようなif文をどのような概念として捉え、分類し、どう実装までまとめ上げるか。 http://www.slideshare.net/digitalsoul0124/ss-36082910/40