IDEF1XによるER図の記述

IDEF1X

IDEF1Xは,IDEF(Integration Definition)と呼ばれる,システムをさまざまな側面から分析してモデリングを行うための方法の1つで,おもにデータベースの概念設計においてER図を記述する方法としてよく使用される。IDEF1Xでは,ERモデルにおける実体を四角形として記述し,四角形との間に線を引くことによって関連を表現する。たとえば,「⁠社員が部署に所属する」ということは,次のようにER図として記述することができる。

f:id:wanwan_bowbow_ilovecat:20181012213823j:plain

実態の記述

実体は四角形として表現され,四角形の上には実体名を記述する。また実体は,他の実体に依存せずに存在できる非依存実体(Identifier-IndependentEntity)と,依存して存在する依存実体(Identifier-Dependent Entity)に分けることができる。なお,依存実体は角の丸い四角形として記述される。たとえば,社員はいずれかの部署に必ず所属するということであれば,「⁠社員」は依存実体ということとなる。

f:id:wanwan_bowbow_ilovecat:20181012214447j:plain

属性の記述

実体を表現する四角形の中には属性を記述する。属性については,四角形を線で上下に分け,四角形の上には主キー(Primary Key)となる属性(主キー属性;Primary-Key Attributes)⁠,下には主キーでない属性を記述する。また,外部キー(Foreign Key)となる属性には属性名の後ろに「FK」という文字をカッコで括って記述する。

f:id:wanwan_bowbow_ilovecat:20181012214700j:plain

主キーとなる属性は,その属性によって実体を一意に特定することができるものある。たとえば,「⁠社員番号」を指定することにより,それに対応する「社員」が一人に特定できる場合,「⁠社員番号」が「社員」において主キーとなる。また,外部キーとなる属性は,他の実体において主キーとなっているものである。たとえば,「⁠社員」では「部署」の主キーである「部署番号」が外部キーとなる。

関連の記述

実体間の関連は四角形の間に線を引くことによって記述し,依存実体との関連には実線,非依存実体との関連には破線を使用する。線の横には関連名を記述する。また,関連によってつながった実体間には親子関係が成り立ち,子となる実体に結び付けられた線の先には黒く塗り潰された円を記述する。

f:id:wanwan_bowbow_ilovecat:20181012215018j:plain

なお,黒く塗り潰された円の横には関連の多重度(カーディナリティ)を記述することができる。多重度とは,実体間が何対何でつながっているかということを表現するものである。

f:id:wanwan_bowbow_ilovecat:20181012215050j:plain

データ型

テーブルを定義する際には,そのテーブルの列のデータ型を指定する必要がある。データ型とは,テーブルに格納するデータの取り扱いに関する形式のことであり,データの性質や範囲などを定義したものである。

プログラミングにおけるデータ型とデータベースにおけるデータ型では,どのようなデータ型を使用するかということの重要度が大きく異なる。データベースでは,指定したデータ型によって大量のデータが格納されるため,適切ではないデータ型を使用すると,必要以上にディスク容量を消費したり,性能への影響が発生することもある。

データベースにおいて使用できるデータ型は,標準SQL規格によって定義されている。標準SQL規格によって定義されているデータ型には以下のようなものがある。カッコ内にはデータ型の別名を記述している。

数値データ型:
smallint,integer(int)⁠,real,double precision,float,decimal(dec)⁠,numeric
文字データ型:
character(char)⁠,character varying(varchar)⁠,national character(nchar)⁠,
national character varying(nvarchar)⁠,character large object(clob)
日付・時刻データ型:
date,time,timestamp,interval
ビット・バイナリデータ型:
bit,bit varying,binary large object(blob)
論理値データ型:
boolean

テーブルを定義する際には,上記のようなデータ型から適切なものを選択する。しかし,そのデータ型が実際に使用できるかどうかということはRDBMSによって異なる。