スライド 1

第4章 データとモデル
本章の目的
• コンピュータで情報をあつかいたい
→ 情報を”うまく表現”しなければならない
• ”うまい表現”=「データモデル」
– データモデル
• データを体系的に扱うためのモデル
– データ
• コンピュータの処理対象となる,符号化された情報
• 本章では「データモデル」を概観する
データのモデル化
• モデル化
– 対象からモデルを作ること
• モデル化のやりかた
– 対象のなかで興味がある要素を書き下す
• 天体,質量,価値,需要,集積度,権力,意味,音階,
画素,など
– 要素間の関係をルールとして規定していく
• コンピュータの場合,要素間の関係は操作/演算/計算
としてとらえられる
モデル化の例
太陽と地球 → 2つの点
地球が
時間をパラメタとした演
→
太陽の周りを回る動き
算
完全性
• 対象の要素が全て表現できる
– 対象の操作も考えてモデルを作る場合,対象の
操作に対応する演算がモデルに必要
• 完全性がないモデル
– 実数
– 人名漢字
一意性
• モデルの1つの要素が対象の1つの要素に対
応
• 一意性がないモデル
– 下二桁で表された西暦
– 性のみで表された名前
忠実性
• 対象の1つの要素がモデルの1つの要素に対
応
– 対象とモデルの関係が一意性と逆
• 忠実性がないモデル
– "半分"を表す有理数表現
– 実数の指数表現
整合性
• 対象で成り立つべき規則がモデルでも成り立
つ
– 整合性が成り立たないモデルでは,操作も含め
て対象がうまく表現できない
• 整合性がないモデル
– コンピュータで表された実数
無冗長性
• 同じ情報が表現の複数箇所に現れることが
ない
– 論理データモデルでは冗長性がない方が良い
– 物理データモデルでは意図的に冗長な表現を用
いることがある
• 冗長性を利用する例
– 学生証番号と氏名の両方を解答用紙に記入
拡張性
• データモデルを変更したときに,既存のデー
タの表現を変更せずに新しいデータを表現で
きる
– データモデルは外的要因の変化や応用が拡大に
つれて変化していく
• モデルを拡張した例
– 電話番号: 先頭に184/186を追加
– 郵便番号: 7桁に変更
– IPアドレス: IPv4 → IPv6
データモデルのレベル
• 概念モデル
– 人間が対象を認識するレベル
• 論理モデル(論理レベル)
– ビットよりハイレベル
– いろいろな対象に普遍
– これから話題にするものは主にこれ
• 物理モデル
– ビットでの表現のレベル
代表的なデータモデル
•
•
•
•
•
•
集合モデル
ネットワークモデル
階層モデル
関係モデル
論理モデル
オブジェクト指向モデル
集合モデル
• 集合モデル
– グループを対象とするモデル
• 集合モデルの演算
– 共通部分(積集合): A ∩ B
• 集合Aの要素と集合Bの要素を併せもった集合
– 和集合(和集合): A ∪ B
• 集合Aと集合Bに共通に含まれる要素の集合
– 差集合: A - B
• 集合Aから集合Bの要素を除いた集合
4.3 代表的なモデルと演算
1. 集合モデル
2. ネットワークモデル
・意味ネットワーク (後述)(skip可)
・実体関連モデル(ERモデル)(後述)(skip
可)
3. 階層モデル(木構造 )(オイラー図)
・ 階層的ファイルシステム
・ 日本の住所
・ 図書の分類 十進分類法(Dewey)
グラフモデル
•
•
•
•
ノードとエッジから構成される
ラベル付きグラフ
有向エッジ,弧: 方向を持つエッジ
道路ネットワーク/組織図/pert図/意味ネット
ワークなど様々な領域で幅広く用いられる
ノード
エッジ
集合の視覚的表現
• ベン図
A∩B
A∪B
A
B
A
A−B
A
B
B
階層モデル
• 階層モデル(木構造)
– 生物の分類図のような,枝分かれの構造
– 有向グラフの特殊なもの,と見ることもできる
– 例: コンピュータのファイルシステム
生物の分類図
ファイルシステム
色々な木 - 順序木
• 順序木
– 分岐先に順序をつけた木
• 例1: (2+3)*12
• 例2: (2+3)*((2+3)/12)
– 共通の部分式 (2+3) をまとめて、
DAG(Directed Acyclic Graph) と
して表せる
色々な木 - ゲーム木
• ゲーム木
– ゲームの状態を木構造で
表したもの
– ゲーム木を使うと
• 勝ち状態に至る経路を探
索することで,強いコン
ピュータゲームプレーヤー
を作ることができる
• 必勝法のある/なしなど,
ゲームの性質を考えること
ができる
○×ゲームのゲーム木
意味ネットワーク
(imi-network.html参照)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
意味ネットワーク(いみねっとわーく)は人間の記憶の一種であ
る意味記憶の構造を表すためのモデルである。 意味ネット
ワークはコリンズとキリアンによって考えられた。
人間の記憶は、コンピュータの記憶と異なる構造を持つので、
ビットやバイトといった情報量で表すことができない。そのため、
このようなモデルが必要となる。集合論を基礎としたモデルな
どもある。
ノード(円)が概念、リンク(矢印)が関係を表す。 リンクには「で
ある(isa)」、「もつ(hasa)」などがある。
実体関連モデル ERモデル(skip可)
• 世界を実体(entity)と関連(relation)の集まりと
して見るモデル
• 実体と実体のあいだの関連をもつ
• 実体と実体のあいだの関連で表現すると、実
体の属性が変化しても、属性だけが変化した
ことになる
• HTML(sinsyuu-u.html) 参照。
実体と関連の表現の例
• 40歳の山田と40歳の田中が1985年4月1日に結婚
した 40歳の山田
40歳の田中
1985年4月1日に結婚
実体関連図の例
• 40歳の山田と40歳の田中が1985年4月1日に結婚
した
実体: 男性
属性: 名前,年齢
実体: 女性
属性: 名前,年齢
関連: 結婚
属性: 結婚記念日
ネットワーク上の最適化問題
1.最短路問題
2.ハミルトン閉路問題 (NP完全)
3.巡回セールスマン問題 (NP困難)
http://www.tsp.gatech.edu/
参照: d15112-DATA.gif, d15112-Solution.gif,
d15112-Maze.gif,
ピーターセングラフ
関係モデル
• 関係モデル
– ”関係”によるモデル化
• 関係
– 実際に関係のある組を集めたデータ
– 例: 「山口君が東京に住んでいて,
電話番号は03-4567-8901」という事実
→ 山口,東京,03-4567-8901 の関係
関係モデル - 正規化
• 正規化
– 同じデータが何回も出てくるような,冗長な関係を,
分割して簡潔な関係にすること
名前の関係
正規化
電話番号の関係
冗長な関係
住所の関係
識別番号
• 関係の項目のひとつに識別番号を入れ
ると、冗長性がなくなる
第一正規化
2次元の表にする
番号 名前 所属
番号 名前 所属
g456 小泉 {15組,水泳部}
g456 小泉 15組
非正規型リレーション
g456 小泉 水泳部
正規型リレーション
発注番号 取引ID 会社名
日付
品名
価格
492
a61
プラス
4/26
コピー紙
50
492
a61
プラス
4/26
椅子
65
492
a61
プラス
4/26
本棚
330
492
a61
プラス
4/26
机
148
494
c13
小泉商店
7/1
机
168
494
c13
小泉商店
7/1
椅子
98
494
c13
小泉商店
7/1
鉛筆
15
494
c13
小泉商店
7/1
消しゴム
第一正規形の例
3
• 関係を冗長性がなくなるように、複数の
関係に分解することを正規化という
• 発注番号と品名が主キーになっていて、あと
はそれからきまる。この2つをあわせて復号
キーという。
• 正規形への分割では、属性を1カ所変更して
も、他の属性値はそのままでしよい。
• 記憶領域の無駄遣いをしないですむ。
発注番号 取引ID 会社名
492
a61
プラス
494
c13
小泉商店
発注番号
492
492
492
492
494
494
494
494
品名
コピー紙
椅子
本棚
机
机
椅子
鉛筆
消しゴム
日付
4/26
7/1
価格
50
65
330
148
168
98
15
3
第2正規形