• 検索結果がありません。

Microsoft PowerPoint - basic-2-er.ppt [互換モード]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - basic-2-er.ppt [互換モード]"

Copied!
31
0
0

読み込み中.... (全文を見る)

全文

(1)

データベース設計

データモデリング

講師: 福田 剛志

fukudat@fukudat.com http://www.fukudat.com/

(2)

データベース設計

データモデリング

(data modeling)

データモデル

(data model)

3

要素

1. データ構造を記述するための規約 2. データ構造に対する操作 3. データが満たす制約を記述するための規約 – 今日は,1と3を中心に議論する.

文脈によっては、データモデルの枠組みである

実世界の事柄を記述した内容

(i.e., data

model

instance)

data model

と呼ぶこと

(3)

データモデルの種類

関係データモデル

(relational data model)

– タプル (tuple) の集合

– 現在の主流.今後,詳しく論じる.

ネットワークデータモデル

(network data

model)

– CODASYL

階層データモデル

(hierarchical data model)

(4)

データベース設計

実世界のデータモデリング

対象実世界 対象実世界 real world conceptual design 概念設計 conceptual design logical design 論理設計 logical design 論理モデル logical model conceptual model 概念モデル conceptual model 関係データモデル

(relational data model)

実体関連(ER)モデル

(5)

ER

モデル

(entity-relationship model)

の目的

• ER

モデル

– 実体集合 (entity set) と – 実体間の関連 (relationship) を用いて実世界の事象をモデル化する手法

データベース設計の概念的な概略を描くことが

できる.

設計図は

ER

(entity-relationship diagram)

呼ばれる絵.

• ER

図はほとんど機械的に関係データベースの

スキーマに変換することができる.

(6)

データベース設計

実体集合

(entity sets)

実体

(entity) = “

もの”

or “

こと”

– オブジェクト指向言語の “object” に似ている

実体集合

(entity set) =

似通った実体の集まり

– オブジェクト指向言語の “class” に似ている

属性

(attribute) =

実体集合の特性

(property)

– 一般に,一つの実体集合に属す実体はすべて同じ 属性を持つ. – 属性は単純な値を持つ. • 例) 整数,文字列

(7)

ER

(entity-relationship diagram)

• ER

図では,各実体集合は矩形で表される.

実体集合の各属性は楕円で表現され,実体集

合に線で結ばれる.

酒 名前 製造元 • 実体集合「酒」は二つの属性 (「名前」と「製造元」)を持つ. • 実体集合「酒」の各要素(実 体)はこれら二つの属性を持 つ. 例: (名前, 製造元) (スーパードライ, アサヒ) (一番絞り, キリン) (越の寒梅, 石本酒造)

(8)

データベース設計

関連

(relationship)

関連

(relationship)

は実体集合を関係付ける.

菱形で表現され,関連付ける実体集合を現す矩

形と線で結ばれる.

酒呑み 住所 名前 酒 製造元 名前 呑み屋 名前 定休日 住所 売る 呑み屋は酒を売る 好き 酒呑みは酒が好き 行きつけ 酒呑みは呑み屋によく行く

(9)

関連集合

(relationship set)

実体集合

(entity set)

の “値” とは,その集合に

属する実体

(entity =

もの

or

こと

)

の集合

– 例) データベース中の全「呑み屋」の集合

関連集合

(relationship set)

の “値” とは,関連

付けられた実体のリストの集合

– 例) 「売る」関連集合の場合, 呑み屋 酒 つぼ八 スーパードライ 魚民 モルツ 養老の滝 一番絞り 清龍 サッポロラガー

(10)

データベース設計

多対多関連

(many-to-many relationships)

• 2項関連の一種. • 多対多関連では,どちらの実体集合も,もう一方の実 体集合の複数の実体と結ばれることができる. • 例えば,「呑み屋」と「酒」の関連「売る」は多対多関連 – 一つの呑み屋でたくさんの種類の酒を売る. – ある酒は,いろいろな呑み屋で売られる.

(11)

多対

1

関連

(many-to-one relationships)

• 2項関連の一種 • 1番目の実体集合の要素は,2番目の実体集合の (高々)一つにしか結び付けられない. • しかし, 2番目の実体集合の要素が結びつく1番目の実 体集合の要素数に制限はない (0でも, 1でも, 複数でも よい) • 例) 「酒呑み」と「酒」の関連「一番好き」は多対1関連 – 酒呑みは(高々)一つだけ,一番好きな酒を持つ. – しかし,酒は多くの酒呑みの一番好きな酒になりえる.

(12)

データベース設計

1

1

関連

(one-to-one relationships)

• 2項関連の一種. • 1対1関連では,どちらの実体集合の要素も,他方の実 体集合の高々1つの要素としか結びつかない. – 例1) 「製造元」と「酒」の関連「ベストセラー」 • 一つの酒は複数の製造元で作られることはない. • 各製造元のベストセラーはただ一つ (同率トップは考えない場合) – 例2) 「野球チーム」と「野球監督」の関係 • 一つのチームには一人しか監督はいない. • 一人の監督は(普通)一つのチームにしか所属しない. – 例3) 「夫」と「妻」の関係 • 一人の「夫」は一人の「妻」としか結婚できない(一夫一婦制の場合) • 未婚の場合を許すことに注意.

(13)

図示すると

...

(14)

データベース設計

多重度

(multiplicity)

の表現

• 多対1を表現するために, “1” の側に矢印を描く. • 1対1の場合は,両方に矢印を描く. 例) 「酒呑み」には「好きな酒」がある.複数あってもいいし,0でもいい. しかし,「一番好きな酒」は一つしかない(一番好きな酒がなくてもよい). • 場合によっては,「必ず1」であることを表現したい場合がある. そのときは,丸い矢印を描くことにする. 例) 各「酒」は必ず一つ「製造元」がある.製造元のない酒はありえない. 製造元 製造 酒 酒呑み 好き 酒 一番好き

(15)

多項関連

(multi-way relationships)

• 場合によっては,3つ以上の実体集合を関連付ける必 要がある. • 例えば,ある酒呑みは,ある銘柄の酒を,特定の呑み 屋でしか飲まないとする. – 2項関連の組み合わせでは表現できない. 呑み屋 酒呑み 名前 住所 名前 製造元 名前 住所 定休日 嗜好 呑み屋 酒呑み ビール つぼ八 太郎 生絞りサワー 清龍 太郎 サッポロラガー 酒洛 花子 十四代本丸

(16)

データベース設計

関連の属性

関連に属性をつける必要がある場合がある.

例えば

– 「値段」は「呑み屋」と「酒」が決まってはじめて決まる – 「酒」や「呑み屋」どちらか一方では決まらない 呑み屋 売る 酒 値段

(17)

関連の属性を用いない同等の表現

属性の値を表現する実体集合を作る

– この場合,「値段」

その実体集合を,関連に参加させる.

呑み屋 売る 酒 値段 値段 「値段」に単なる値(値段)以外の属性 が存在しない場合は,このようなモデ ルは望ましくない.

(18)

データベース設計

役割

(roles)

一つの実体集合が一つの関連に複数回,参加

することがある.

関連の菱形と実体集合の矩形の間の線にラベ

ルを振り,実体集合の関連による役割

(role)

区別する.

酒呑み 夫婦 夫 妻

(19)

汎化階層

(generalization hierarchy) 1/2

専化

(specialization) =

継承

(inherit) =

特殊な場合

=

少ない実体数

=

より多くの属性

– オブジェクト指向言語の「サブクラス」のようなもの

汎化

(generalization) =

専化の逆

– オブジェクト指向言語の「スーパークラス」

例:「日本酒」は「酒」の専化

• すべての酒は日本酒ではないが,日本酒は酒である • 日本酒には「精米歩合」(米をどれだけ磨くか)という一般の 「酒」にはない属性がある.

(20)

データベース設計

汎化階層

(generalization hierarchy) 2/2

汎化階層は木

(tree)

を構成する.

– 多重継承 (multiple inheritance) は考えない.

is-a”

の三角形を用いて継承関係を表す.

– 三角形はスーパークラスを指す. 酒 日本酒 名前 製造元 精米歩合 ワイン is-a

(21)

実体関連

vs

オブジェクト指向

• オブジェクト指向の世界では,「オブジェクト (object)」は必ず一 つの「クラス (class)」にだけ属する. • これに対して,実体関連モデルでは,実体はすべてのサブクラス (subclass)に属すると考える. – 何時,論理モデルのレコードに変換するかによる. 酒 日本酒 is-a 名前 製造元 精米歩合 越の寒梅

(22)

データベース設計

実体集合のキー

(keys)

• キー (key) = 実体集合の属性の集合で,その属性集合に属する 2つの実体が同じ値をとることがない(固有の値をとる)もの. • すべての実体集合はキーが必要. • ER図では – キー属性には下線 (underline) を引く. – 汎化階層では,根 (root) の実体集合だけがキーを持ち,それが階層中の すべての実体のキーとなる. 酒 日本酒 is-a 名前 製造元 精米歩合 授業 学部 番号 時間 部屋 実体の例: (CS, 101, 火曜日2時限, 52-201) 実体の例: (越の寒梅, 石本酒造, 60%)

(23)

弱実体集合

(weak entity sets)

• 場合によっては,実体集合に属する実体を特定 (uniquely

identify) するために「助け」が必要となることがある.

• 実体集合 E に属す実体を特定するためには,一つ以上の「多

1関連」をたどった先の実体集合の属性を参照しなければなら ないとき,E は弱実体集合 (weak entity set) と呼ばれる.

• 例えば, – 名前は「野球選手」実体集合のキーだと考えられるが,同姓同名の選手 が存在することもありえる. – 「背番号」はキーにはならない.別のチームには同じ背番号の選手がいる から. – しかし,「背番号」と「チーム」を組み合わせれば,「野球選手」をユニーク に特定できる. 野球選手 所属 チーム 名前 背番号 名前 弱実体集合は2重矩形で表す. • 弱実体集合の特定に参加する 多対1関連は2重菱形で表す

(24)

データベース設計

設計のテクニック

1.

冗長さを避けるべし

2.

弱実体集合に頼りすぎてはダメ

(25)

1.

冗長さを避けるべし

• 冗長性は, – 実体とすべきものを属性で表現すると生じる – 同じことを多重に表現しても生じる – データのサイズを大きくし,不整合をおきやすくする 酒 製造する 製造元 名前 名前 住所 酒 名前 製造元 製造元住所 酒 製造する 製造元 名前 名前 製造元 住所 良い例 悪い例 悪い例

(26)

データベース設計

2.

弱実体集合に頼りすぎてはダメ

• 初心者はつい,どの属性もキーにならないのではと 疑ってしまう. – すると,ほとんどの実体集合が,多くの多対1関連で支えられ る弱実体集合になってしまう. • 現実には,ほとんどの実体集合に「固有識別子(unique ID)」を振るのが普通. – 例えば, • 学籍番号,車両のナンバープレート,パスポート番号 ... • では,いつ弱実体集合を使えばよいのか? – どこにも「固有識別子」を振る権限がないとき. – 例えば, • すべての「野球選手」にユニークな「背番号」を振ることはできない

(27)

3.

属性ですむなら実体集合は使うな

• 実体集合は以下の条件を満たさなければならない: – 単なる名前以上の何かであって,キーでない属性を持つ または – 多対多または多対1の関連の「多」の側にくる 酒 製造する 製造元 名前 名前 住所 良い例 酒 名前 製造元 良い例 酒 製造する 製造元 名前 名前 悪い例

(28)

データベース設計

演習問題

2.1

酒,呑み屋,酒呑みに関する情報を保持する

データベースのための実体関連図

(ER

)

を描

け. ただし,以下の情報を含めることとする.

– 酒の名前,酒蔵(酒の製造元),酒蔵の住所,電話 番号 – 呑み屋の名前,住所,電話番号,販売している酒と その値段 – 酒呑み(人)の名前,住所,電話番号,好きな酒(複 数あってよい), 一番好きな酒(一つだけ),行きつけ の呑み屋(複数あってよい)とそこに出かける頻度

(29)

考え方

• まず,実体集合(四角)で表すべきは何かを考える.この問題の場合は,「酒」,「呑み 屋」,「酒呑み」がまず思い当たる.それらを実体集合(四角)で表し,それぞれの属性 (楕円)を書き加える. – その際,「酒」の属性として表現するつもりだった「酒蔵」には住所と電話番号が付属している. 属性に属性は付与できないから,「酒蔵」も実体集合として表現することにする. – 各実体集合のキー(実体を特定するために必要な情報)は何か考え,その属性に下線を引く. • 次に,実体集合間の関連(菱形)を書き加えていく. – 酒を製造しているのが酒蔵だから,「製造」という関連を作成する.ある酒には製造元が必ず 一つだけ存在し,ある製造元は複数の酒を製造している可能性があるので,これは多対1の 関連である.したがって,製造元側は丸矢印とし酒の側は矢印をつけない. – 酒呑みは酒が好きという関係を表す関連「好き」を作成する.ある酒飲みは複数の酒が好き かも知れないし,ある酒は複数の酒飲みに好かれていると考えられるので,これは多対多の 関連である.したがって,両端には矢印をつけない. – 酒呑みがある酒を一番好きであるという関連「一番好きな酒」は,ある酒呑みには必ず一つ だけ一番好きな酒があると考えられるので,多対1の関連である.したがって,酒の側を丸矢 印とする. – 呑み屋で酒を「販売する」という関連は,多対多の関連であるので,両端には矢印をつけな い.「値段」は酒の属性でも飲み屋の属性でもなく,この関連の属性であることに注意して, 販売の関連を表す菱形に対して接続する.

(30)

データベース設計

演習問題

2.2

弱実体集合が必要なデータモデルの例を考え,

ER

図として描け.

(31)

演習問題

2.3

• 銀行の顧客と口座の情報を含むデータベースを設計する. – 顧客に関する情報は,名前,住所,電話番号,顧客番号を含み – 口座に関する情報は,口座番号,口座種類(当座または普通),残高を含 むものとし, – ある口座は必ず一人の顧客の持ち物であって,一人の顧客は複数の口 座を持つことができるものとする. • このデータベースを表現するER図を描け.ただし必要に応じて矢印を用いて 多重度を適切に表現するとともに,キーには下線をつけよ. 顧客 名前 顧客番号 住所 電話番号 口座 口座番号 種類 残高 所有

参照

関連したドキュメント

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認め

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認

Instagram 等 Flickr 以外にも多くの画像共有サイトがあるにも 関わらず, Flickr を利用する研究が多いことには, 大きく分けて 2

の総体と言える。事例の客観的な情報とは、事例に関わる人の感性によって多様な色付けが行われ

に関連する項目として、 「老いも若きも役割があって社会に溶けこめるまち(桶川市)」 「いくつ

一次製品に関連する第1節において、39.01 項から 39.11 項までの物品は化学合成によって得 られ、また 39.12 項又は

層の項目 MaaS 提供にあたっての目的 データ連携を行う上でのルール MaaS に関連するプレイヤー ビジネスとしての MaaS MaaS

ERROR  -00002 認証失敗または 圏外   クラウドへの接続設定及びア ンテ ナ 接続を確認して ください。. ERROR  -00044 回線未登録または