作成日 2007/5/2
最終更新日 2009/8/9
[ Japanese | English ]

クラス図とER図とクラスの抽出

 ここでは、まず、クラス図とER図(※1)の関係について説明します。
 で、その後、だるまも含めて多くの方がわからないわからないと言っているクラスの抽出方法について適当に説明します。

※1:ER図は情報処理技術者試験の基本情報技術者、ソフトウェア開発技術者やテクニカルエンジニア(データベース)などの試験範囲となっています。合格を目指している人は勉強しましょう。


1.クラス図とは
2.ER図とは
3.クラス図とER図の関係
4.クラスの抽出方法
5.参考文献など


1.クラス図とは

 あらためて、説明しないと駄目なのかな。

 しかし、こうやっていざ、説明しようとすると、説明できない。
 ということは、だるまもクラス図を理解できてないということなのか…。

 クラスの属性と操作、それから、クラス間の関係についてを記述した図のことかな。(こんな説明しかできなくてごめん。)
 クラス図の具体例は、「クラスとオブジェクト 4.具体例2(ある学校の生徒情報と成績の例)」を見てください。(別ウィンドウで開きます。)
このページのトップへ

2.ER図とは

 ER図(Entity-relationship Diagram  実態関連図)というのは、えーと、RDB(Relational Database)のテーブル設計をするときに使う図かな。
 ER図は情報処理技術者試験の基本情報技術者試験やソフトウェア開発技術者試験などでよく出題されるので、特にソフトウェア開発技術者の取得を考えている人はER図を作成することができ、さらに、SQLも理解しておいた方が良いです。(午後試験で出題されます。)
いちおう補足しておくと、ER図は主キー、外部キー、インデックス、正規化、カーディナリティは理解しておいた方がいいと思います。
SQLはSelect文、Update文、Delete文はもちろん、Where句、結合(外部結合など)などは理解しておいた方がいいと思います。

 なんか、話がそれた気がする。
 このホームページはエクセルVBA関連のホームページなので、これを見ている人はER図やSQLなんて知らないし、見たこともない人が多いと思います。
 ということで、簡単な例を出します。

■例題:図1のようなデータがある。ER図を描け。


図1 生徒情報と成績のデータ
クラスとオブジェクト 4.具体例2(ある学校の生徒情報と成績の例)」と同じものです。

■だるまが考えた答え:


図2 生徒情報と成績のデータから抽出したER図
※この図はDBDesignerというツールを使用して作成しました。

■適当な解説:
 ER図にはいろいろな表記方法があります。図2の表記法の名前は、ごめんなさい。わかりませんでした。
 ちなみに、情報処理試験では、ER図はこういう表記に沿って記述せよと指示があります。

 じゃあ、簡単な方から説明します。
 「INTEGER」は数値型のことです。
 「VARCHAR(255)」は半角英数字なら最大255文字までの文字列です。
 「DATE」は日付型のことです。
 それから、「生徒情報」エンティティの出席番号や「成績情報」エンティティの出席番号とテスト日の左側にかぎマークがついていますが、これはそれが主キーであることを意味しています。主キーというのは、うーんと、エンティティ(RDBにおけるテーブル)のレコード(行)を一意に識別するのに使用する属性だと考えてください。(成績情報エンティティは出席番号とテスト日の2つで1つのレコード(行)を識別可能。)主キーの詳しい説明は他のページを見てください。
 成績情報エンティティの出席番号の右に「(FK)」と書いてあるけど、これは外部キーであることを表しています。
「生徒情報」エンティティと「成績情報」エンティティが線で結ばれていますけど、これは2つのエンティティの関係(リーレーションシップ)を表しています。この場合は1対多の関係、すなわち、1つの生徒情報が複数の成績情報と関係していて、1つの成績情報は1つの生徒情報と関連しているという関係です。

 このER図と「クラスとオブジェクト 4.具体例2(ある学校の生徒情報と成績の例)」のクラス図の一番の違いは、
ER図の「成績情報」エンティティには出席番号という属性があるということ、
それと、ER図には派生属性(合計得点と平均点)がないことの2つかなぁ。

このページのトップへ

3.クラス図とER図の関係

 クラス図とER図の関係について説明します。
 クラス図とER図(Entity-relationship Diagram  実態関連図)の2つはいろいろ似ている点があります。
 まあ、「クラスとオブジェクト 4.具体例2(ある学校の生徒情報と成績の例)」の図4のクラス図と「2.ER図とは」の図2のER図を見てもらえればわかると思うのですが、2つの図、結構似てませんでした?
 どうやら、クラス図はER図が元になっているらしいです。だからいろいろ似ているわけです。
 クラス図を理解したかったら、先にER図を理解した方がいいです。
 
 とりあえず、クラス図とER図の対応表を作ってみましたので、参考にしてください。

表1 クラス図とER図の対応表
-は名前が対応するものがないことを表します。
?は名前がわからなかったものを表します。
注意:(※意味が近いもの(まったく同じではないことに注意)を並べています。)

ER図

RDB

クラス図

説明とか

エンティティ
(Entity)
表、テーブル クラス
(Class)
実態を定義したものという説明で許してください。
? レコード(Record)、行(Row)など オブジェクト
(Object)
 
属性
(Attribute)
属性、列(Column)など 属性  
- - 操作
(Operation)
ER図のエンティティの中には操作は含められません。
ER図はOOA(オブジェクト中心アプローチ)ではなくDOA(データ中心アプローチ)なので、操作は書きません。(DOAではデータと操作は分けて考えるため。)
リレーションシップ
(Relationship)
リレーションシップ 関連
(Association)
ER図ではエンティティ間、クラス図ではクラス間を結んでいる線のことです。意味的にも結構似ている。
カーディナリティ
(Cardinality)
カーディナリティ 多重度
(Multiplicity)
カーディナリティとはエンティティ間の対応関係(「1対1」、「1対多」、「多対多」)のこと。
多重度とは関連しているクラスのオブジェクトを何個保有できるかを表す。
スーパータイプ・サブタイプ スーパータイプ・サブタイプ スーパークラス・サブクラス えーと、簡単に説明すると継承関係のことです。
もともと、ER図にはこのような関係はなかったのですが、オブジェクト指向的な考えが導入されてきていると考えることができます。これ、最近、情報処理試験のテクニカルエンジニア(データベース)で出題されているらしいです。
第3正規形
(third normal form)
? ? ER図を作成するときは冗長な属性を排除したり、更新時異常を防ぐために正規化すると思います。
特に名前はありませんが、クラス図を作成するときも正規化をします。
? 関連テーブル 関連クラス
(Association Class)
ER図ではエンティティ間のカーディナリティが多対多の場合、
クラス図ではクラス間の関連の多重度が多対多の場合は、そのままではうまくいかないので、多対多の関係を1対多と多対1の関係にするために出てくる。



このページのトップへ

4.クラスの抽出方法

 クラス図とER図はいろいろ、似ている点が多いということを説明しました。
 クラス図とER図がいろいろ似ているということは、ER図におけるエンティティの抽出とクラス図におけるクラス(ここではエンティティクラスのみとする)の抽出も似ている点が多いのではと、考えるのが自然だと思う。
 実際、抽出方法は似ています。
 とりあえず、これで、ER図を書いたことがある人はクラス図におけるクラスの抽出もできるようになったんじゃないかと思う。
 あ、でも、違う点もあるので注意して欲しい。
 だるまが把握している限りでは、

  1. クラス図とER図では関連の考え方(データの持たせ方)がすこし違う。クラス図では関連端(線の端で多重度とかを書いている箇所)と属性はほとんど同じ意味。(2つを総称してプロパティと呼びます。) ER図の場合は関連を持たせたい場合は外部キーが必要になってきます。
  2. ER図では継承関係は記述しないかも。(ER図でも記述はできるが、RDBの方が対応していない場合は書かない。)
  3. ER図では永続化対象のデータのみをモデリングすることが多いけど、一般的にはクラス図ではそうではない。
    (※クラス図でも永続化対象のみのデータを記述するときもあります。クラス図やER図はただの表記法であって、どのように使用するかは、使用者の自由です。)
  4. ER図では派生属性や読み取り専用属性は記述できないかも。クラス図はできる。
  5. ER図とクラス図では表記法や名前が、いろいろ異なる。
 くらいかな。
1と2はGoogleで「O/Rインピーダンスミスマッチ」とか「DAOパターン O/Rインピーダンスミスマッチ」で検索すると、もっと詳しくわかるかもしれない。
このページのトップへ

5.参考文献など

 このページを作成するのに参考にしたページです。

番号

リンク先の名称

リンク先の説明

リンクした日

1 DBDesigner 4 日本語化サイト DBモデリングツール「DB Designer 4」の日本語化を試みるサイト 2007/5/3
2 【初級】ゼロから学ぶDOA 第1回:ITpro POA、DOA、OOAの説明が書いてあります。 2007/5/3
3 豆魂 - 技術記事-基礎:UML入門 UMLの基礎について書かれています。 2007/5/3
(2009/8/9リンク切れ確認)
4 リレーションの正規化 - Wikipedia リレーショナルデータベースにおけるデータの正規化について書かれています。 2007/7/16
5 情報処理推進機構:情報処理技術者試験センター:問題冊子・配点割合・解答例・採点講評(2006、平成18年)
└テクニカルエンジニア(データベース)試験 午後I
H18年春の情報処理技術者試験 テクニカルエンジニア(データベース)の午後I 問1にて概念データモデルとUMLに関しての問題が出題されています。 2008/6/21

番号

著者名

書籍名

ISBN

1 日高 哲郎 情報処理教科書 ソフトウェア開発技術者 2007年度版 (情報処理教科書) 978-4798112343
2 水岡 祥二 テクニカルエンジニア試験 データベース完全教本〈2006年版〉 978-4532403577

 
Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。