50
データ工学基礎 鈴木 第一回 データ工学の概要

データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データ工学基礎

鈴木 優

第一回

データ工学の概要

Page 2: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

授業目的• データベースの基礎について学習

• データベースとは • 背景・歴史

• データベースを利用したアプリケーションを自力で構築 • Ruby on Rails によるWebアプリケーションを例に • データベースを直接利用

• SQLの基礎について学ぶ • 基本的な操作の方法 • いくつかの実例

2

Page 3: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

授業の進め方• 授業

• 5月に8回あります.授業は7回です.最後に試験があります • 試験により成績が付与されます • 出席点はありません • 1単位です • 講義室は L2 です

• ホームページ • http://bigdata.naist.jp/~ysuzuki/lecture/dataengineering_naist_2018/ • 授業内で説明できない部分も補足します • 授業資料もここへアップロードしています • 授業のビデオ配信もしています

• オフィスアワー • 特に定めません.email にて連絡ください • [email protected]

• 参考書 • リレーショナルデータベース入門―データモデル・SQL・管理システム・NoSQL,増永良文,サイエンス社

• データベースシステム,北川博之,オーム社 3

Page 4: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

本日の内容• データベースとは何か • この授業の概略 • データのモデル化

4

Page 5: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースとはなにか

Page 6: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データとは• データ: 数字や記号の羅列 • 4/16,16:00, 18

• 意味: データの解釈 • 4/16 とは日付,18は最高気温

• 情報: 受け手の知識を増加させるデータ • 4/16 は他の日より暑かった

• 価値付情報: 価値のある情報 • 4/16の奈良は特異な日であることを観測 • 奈良以外の在住者には価値なし

• この授業で述べるデータベースとはデータを集積するための器について • DataBase Management System (DBMS) • データ集積体そのものについてもデータベースと呼ばれることがあるが今回は範囲外 • GDB (The Human Genome Database)など

6

データベース

データ

意味

意味解釈

知識の増加

情報

価値付与

価値付情報

データの 意味解釈の ルール

受け手の 持っている 知識

受け手の 価値観

授業の範囲

Page 7: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースの意義• みんなが期待している情報は「価値付きの情報」

• データベースにどう格納されているかは重要ではない • 価値付きの情報を作るためには情報の抽出が必要 • 情報を作るためには意味の抽出が必要

• 意味を抽出するためには整理されたデータが重要 • データ解析のプロセスで最も重要なフェースは「データクリー

ニング」「構造化」 • 整理された質の良いデータが価値付きの情報には必要

• データを様々か角度から見ることで新たな発見が生まれる • 様々な角度から見ることができるデータ構造は重要

7

Page 8: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースとは

データをプログラムから分離

8

データベースマネージメントシステム

プログラム

Java, Ruby,…

並列プログラム

B1 B2 B3 B4

可視化ソフトウェア

Access, Tableau,…

プログラム

コマンドライン

データとプログラムは一体

データファイルデータファイルデータファイル

プログラム

データファイルデータファイルデータファイル

プログラム

データファイルデータファイルデータファイル

使えない

Page 9: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースの特徴• データを複数人で共有して利用できる

• プログラム言語に左右されない • だいたいどのような言語からも利用可能

• データベース管理システムの種類に左右されない • DBMSを変更しても共通の方法で利用可能

• SQL (Standard Query Language) • DBMSごとに少し方言(機能の違い)もあるが,おおむね共

通した動作が可能

• 複数の利用者が利用しても整合性が担保される • ある番号は一人の利用者にしか付与されてはならない,などの

制約はDBMSが引き受けてくれる • あるフィールドには数字しか入ってはいけない,などのチェッ

クをDBMSで引き受けてくれる

9

Page 10: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースの特徴• 機密性の保護

• どのデータに誰がアクセスできるかを設定可能

• 同時に実行された結果を保証 • データAから10引き,データBに10足すという作業

• 完全に同時にこの二つを行うことができない • データAは変更されているがデータBは変更されていないと

いう瞬間が存在している • この瞬間に別の作業が発生すると期待された結果が得られない

• データAだけが変更されている状態で別の作業を行うと,整合性が崩れる

• このような状況を防ぐことができる

• 障害に強い • データの一部が破損しても回復することができる

• RAID

10

Page 11: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースは必要か• データベースが必要な場合

• データの複数同時操作 • データの整合性を常に保つ必要

• データの構造が複雑 • データ相互にどのような関係があるのか過不足なく記述

• ハードウェアの故障によるデータの損失を防ぐ必要 • ディスクが故障しても継続して動作

• データの機密性を保護する必要 • Aさんはデータを読むだけ,Bさんは読み書き,Cさんはアクセス不可

• データベースが不要な場合 • プログラムとデータが密接に結びついている • 複数のプログラムやユーザで同時にデータへアクセスしない • データへの細かなアクセス制御が不要

11

Page 12: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースの種類• 古くからあるデータベース

• RDBMS (Relational Database Management System) • この授業で扱う • SQLという統一的な操作系で操作可能 • 全てのデータを表とその関係という形で扱う

• OODBMS (Object-Oriented Database Management System) • データをオブジェクトの単位で格納,操作を行う • オブジェクト指向プログラミングとの相性が良い • 特定のプログラムで利用することを前提とすることが多い

• 新しいデータベース • NoSQL (Not Only SQL の略?)

• RDBMSに無い機能がある反面,RDBMSにある機能が無い • 操作系は統一されていない • KVS (Key Value Store) と呼ばれることもある

12

Page 13: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

主要なRDBMS• 商用製品

• Oracle • Microsoft SQL Server • Microsoft Access • IBM DB2 • Sybase • SAP Adaptive Server • HiRDB

• フリーウェア • MySQL / MariaDB • PostgreSQL • SQLite

• Rails での標準 • MacOS/iOSでの Core Data の正体

13

Page 14: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

主要なNoSQL• オープンソース

• Apache Cassandra • Apache HBase

• 本学のBigdata Appliance で利用可能 • MongoDB • Redis • Neo4j

• グラフを入れることに特化 • Dynamo

• Amazon Web Service 上で利用可能 • BigTable

• Google App Engine で利用可能

14

Page 15: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

動作環境• OS • 主要なOS(Windows, Linux, Macなど) で動作可能であることが多い • メインフレームなどでも動作しているものもある • ノートPCなどに入れて動作させることも問題無い

• インタフェース,操作環境 • 基本的にはコマンドライン (ターミナル, PowerShell など) • Excelのような感覚で GUI でも操作は可能 • プログラムから直接利用することも • この授業では基本的にコマンドラインを利用

• 料金 • 無料のものから数億円かかるものまで様々 • 有料のものは業務向けに作られた機能がたくさんある • 無料のものでも基本的には十分なことが多く,業務で用いられている例もある

15

Page 16: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

RDBMSの設計• ディスクの特性などを考えて設計されている • メモリはアクセス速度が速い,ディスクは遅い

• ディスクはシーケンシャルアクセスが速い,ランダムアクセスが遅い • シーケンシャルアクセス: 先頭から順にアクセスする方法 • ランダムアクセス: 目的のデータに直接アクセスする方法

• なるべくシーケンシャルアクセスを使うように設計されている

16

種類 1秒あたりに読み込み可能なデータ量メモリ 10,000MB (10GB)

有線ネットワーク 1,000MB (1GB)SSD (Sequential) 100MBHDD (Sequential) 100MBSSD (Random) 10MBHDD (Random) 1MB4G ネットワーク 1~10MB3G ネットワーク 0.1~1MB

引用元: https://qiita.com/awakia/items/c8ada6c8101efe2de561

単位:バイト(ビットではない)

Page 17: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

17

Page 18: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

この授業の概略

Page 19: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベースの設計手順• 何を格納するかを決める (1回目)

• プログラムの設計 • プログラムの目的は?

• 概念設計 (1回目) • 格納するデータ項目を決める

• データ相互の関係は? • 論理設計 (3-6回目)

• データベースへデータを格納する方法を決める • 整合性を取ることができるか? • 効率的に格納できるか?

• 物理設計 • どのデータをどのディスクへ格納するかを決める

• 格納スピードは十分か? • 一部が故障しても継続して格納することができるか?

• 時間の都合上この授業では扱わない

19

Page 20: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データベース設計の例• Webで授業アンケートを取りたい

• 設問を準備して,複数の人が同じ設問を答える • 回答は「はい」もしくは「いいえ」

• 最終的には表の形式で表示

20

設問 学生A 学生B 学生C 学生Dこの授業は理解しやすいですか? いいえ はい いいえ いいえ

教員の声は聞き取りやすいですか? いいえ いいえ はい はい

この授業の単位は取りやすいですか? はい はい はい いいえ

Page 21: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データの表現方法• 構造化データ

• 事前にデータの形式を定義可能な形式 • 表の形式で保存することが基本的には可能

• Excel のデータなど • この授業ではこの種類のデータを扱う

• 非構造化データ • 構造の定義がなされていない形式

• テキストデータ,画像データなど

• 半構造データ • 構造化データに非構造化データを含む形式

• 表の中にテキストや画像が入っているとき • 事前に定義されていないデータが入っているとき

• グラフ,木構造などで表現されているデータ形式 • XML, JSON などの形式を指す用語であることが多い

21

Page 22: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

表の説明

22

行 (row)

列 (column)表 (table)

値(value)

Page 23: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

表の説明

23

学籍番号 名前 性別

9001 鈴木一郎 男

9002 田中二郎 男

9003 高橋良子 女

9004 佐藤花子 女

学生

表名(table name)

属性(attribute)

Page 24: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

表の説明

24

学籍番号 名前 性別

9001 鈴木一郎 男

9002 田中二郎 男

9003 高橋良子 女

9004 佐藤花子 女

学生

ドメイン(domain) データが取りうる値の範囲

{男, 女}{9001,9002,…,9999} 文字列

空白を許容するかどうか?

値の範囲は?

正規表現にマッチするか? (emailなど)

Page 25: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

プログラムにとって扱いやすい表に

• このままの表をデータベースに入れるのは効率的ではない • 学生が増えると列が増える

• 列が増えるたびにプログラムを修正する必要がある

• 学生が増えても,設問が増えても同じプログラムで処理したい • 正規化を行う

• 第一正規形から第五正規形まで • 授業の3回目からはこの点についての話をメインに

25

設問 学生A 学生B 学生C 学生Dこの授業は理解しやすいですか? いいえ はい いいえ いいえ

教員の声は聞き取りやすいですか? いいえ いいえ はい はい

この授業の単位は取りやすいですか? はい はい はい いいえ

Page 26: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データのモデリング

Page 27: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

一般化• 扱うべきデータをいくつかのグループへまとめる

• アンケートの例の場合 • 設問

• 事前に準備しておく質問 • 学生

• 名前,学籍番号,学年 • 回答

• どの質問にどの学生が何を答えたのか

27

Page 28: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データのモデル化• ERモデル (Entity-Relationship Model)

• データを実体と関連,その関係で表現する

• 実体(エンティティ; Entity) • 人,物など実在する概念 • 例では「設問」,「学生」を実体とする • 長方形で表現

• 関連(Relationship) • 実体と実体の関係 • 例では「回答」 • ひし形で表現

• 実体と関連との関係を線で表現 • 設問と学生は「回答」で関係している • 実体と実体の間,関連と関連との間には関係させない

28

設問 学生回答

実体

関連

Page 29: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データのモデル化• 属性 (Attribute)

• 実体や関連に付随するデータ • 学生ならば名前,性別など

• 楕円で表現 • 実体もしくは関連との関係を線で表現

29

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

属性

Page 30: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データのモデル化• 主キー (primary key)

• 実体を一つに決めることができる属性群(複数でも良い) • 関連には必要なし • 下線を引く

30

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

キー

Page 31: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

キーと主キー• キーはいくつでも考えられる

• 学籍番号は一人の学生に固有の番号が与えられるので,学籍番号をキーにできる

• 同姓同名の人が同じ研究室にいないことが保証されるなら,名前と研究室の組み合わせをキーとすることができる

• 学籍番号がキーならば,学籍番号と性別の組み合わせもキーにできる

31

学生

学籍番号

名前

性別

研究室名

{学籍番号}{名前,研究室名}

{学籍番号, 性別}→キーに別の属性を付け加えると 必ずキーになるが主キーからは除外

Page 32: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

主キーの選択• 適切なものを一つキーから選択する

• キーに別の属性を付け加えたものは主キー候補から除外 • キーが一つも無い場合には属性にIDを付与する • 文字列よりも数値のほうが良いことが多い(高速化のため)

32

学生

学籍番号

名前

性別

研究室名

{学籍番号}{名前,研究室名}

{学籍番号, 性別}

→キーに別の属性を付け加えると 必ずキーになるが主キーからは除外

Page 33: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ

33

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

33設問内容

理解しやすい?

聞き取りやすい?

単位取りやすい?

設問

Page 34: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

34

学籍番号 名前 性別

9001 鈴木一郎 男

9002 田中二郎 男

9003 高橋良子 女

… … …

学生

Page 35: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

35

設問内容 学籍番号 回答内容理解しやすい? 9001 いいえ聞き取りやすい? 9001 いいえ単位取りやすい? 9001 はい

… … …

回答

関係を表にするときは実体の主キーと関係の属性を表の属性にする

Page 36: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データをテーブルに分割

36

設問 学生A 学生B 学生C 学生Dこの授業は理解しやすいですか? いいえ はい いいえ いいえ教員の声は聞き取りやすいですか? いいえ いいえ はい はいこの授業の単位は取りやすいですか? はい はい はい いいえ

設問内容理解しやすい?聞き取りやすい?単位取りやすい?

設問内容 学籍番号 回答内容理解しやすい? 9001 いいえ聞き取りやすい? 9001 いいえ単位取りやすい? 9001 はい

… … …

学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …

同じ

Page 37: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データをテーブルに分割した

37

設問内容理解しやすい?聞き取りやすい?単位取りやすい?

設問内容 学籍番号 回答内容理解しやすい? 9001 いいえ聞き取りやすい? 9001 いいえ単位取りやすい? 9001 はい

… … …

学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …

同じ

設問内容 学籍番号 回答内容理解しやす 9001 いいえ聞き取りや 9001 いいえ単位取りや 9001 はい… … …

学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …

削除

Page 38: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

キーを文字列ではなく数値へ

38

設問内容理解しやすい?聞き取りやすい?単位取りやすい?

設問内容 学籍番号 回答内容理解しやすい? 9001 いいえ聞き取りやすい? 9001 いいえ単位取りやすい? 9001 はい

… … …

学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …

同じ

設問番号 設問内容1 理解しや2 聞き取り3 単位取り… …

設問番号 学籍番号 回答内容1 9001 いいえ2 9001 いいえ3 9001 はい… … …

学籍番号 名前9001 鈴木一郎9002 田中二郎9003 高橋良子… …

Page 39: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

表を表現するための方法

39

学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …

学生 (学籍番号, 名前, 性別)

学生

学生

学籍番号

名前

性別

Page 40: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

簡単な書き方でもう一度説明

40

学生 (学籍番号, 名前, 性別)

回答 (設問内容, 学籍番号, 回答内容)

設問 (設問内容)

学生 (学籍番号, 名前, 性別)回答 (設問内容, 学籍番号, 回答内容)

OR学生 (学籍番号, 名前, 性別)

回答 (設問番号, 学籍番号, 回答内容)

設問 (設問番号, 設問内容)

Page 41: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

データのモデル化• 実体間の関係を見る

• 一つの設問に複数の学生が答える • 一人の学生は複数の設問に答える

41

設問 学生回答

設問内容

回答内容

学籍番号

名前

性別

M個の設問にN人の学生が 答える

設問と学生はM対Nの関係

M N

MやNを濃度(Cardinality)と呼ぶ

Page 42: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

三つの関係• 1対1の関係

• 表Aの一つの行が表Bの一つの行に対応している

42

学籍番号 名前

9001 鈴木一郎

9002 田中二郎

9003 高橋良子

9004 佐藤花子

学籍番号 寮の部屋番号

9001 1-101

9002 1-201

9003 3-103

9004 3-104

表A 表B

学生 寮の部屋居住

1 1

Page 43: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

1対1関係の対応• 二つの表を組み合わせて一つにすることが可能なことが多い

43

学籍番号 名前9001 鈴木一郎9002 田中二郎9003 高橋良子9004 佐藤花子

学籍番号 寮の部屋番号9001 1-1019002 1-2019003 3-1039004 3-104

表A 表B

学籍番号 名前 寮の部屋番号9001 鈴木一郎 1-1019002 田中二郎 1-2019003 高橋良子 3-1039004 佐藤花子 3-104

Page 44: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

三つの関係• 1対多の関係

• 表Aの一つの行が表Bの0個以上の行に対応している • 表Aに対応したものが表Bに無い場合もある

• 表Bの一つの行は表Aの最大一つの行に対応している • 表Bに対応したものが表Aに無い場合もある

44

学籍番号 名前

9001 鈴木一郎

9002 田中二郎

9003 高橋良子

9004 佐藤花子

学籍番号 授業

9001 ビッグデータ

9001 データ工学

9002 ビッグデータ

9002 機械学習

表A 表B

学生 授業履修1 N

Page 45: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

三つの関係• 多対多の関係

• 表Aの一つの行が表Bの0個以上の行に対応している • 表Bの一つの行は表Aの0個以上の行に対応している • 表Aと表Bには相互に関係しない行が含まれる場合もある

45

表A 表B

設問内容理解しやすい?聞き取りやすい?単位取りやすい?

学籍番号 名前

9001 鈴木一郎

9002 田中二郎

9003 高橋良子

9004 佐藤花子

質問 学生回答M N

Page 46: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

1対Nの関係• ある授業は別の授業を履修していないとならない,という関係をどのように表現するか? • ある授業を履修するためには別の授業を,その授業を履修する

ためにはさらに別の授業を,という可能性もある

46

授業 授業1 N

履修条件

同じもののはず

授業 履修条件

1

N

Page 47: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

1対Nの関係• 企業の上司・部下の関係をどのように表現するか?

• 上司の上司という関係も当然存在する

47

従業員 従業員1 N

役割

同じもののはず

従業員

1

N役割

Page 48: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

本日のまとめ• データベースとは何か

• データを複数人で利用するときに利用 • プログラム上で利用

• この授業の概要 • 論理設計と物理設計について • データベースを利用したプログラムについて

• データのモデリング • ER図

• 実体と関係 • 1:1, 1:N, M:N の関係

48

Page 49: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

本日の課題• 手元のPCにRailsのプログラムをインストール

• Webを参考にインストールしてください • 頑張れば数分,遅くても15分くらいで完了すると思います

• WindowsだとWindows Subsystem for Linuxでインストールするのが良いかもしれません

• 身近なものをER図で表現してください • 漫画のデータベース • テレビ番組とその出演者

49

Page 50: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18

次回予告• Ruby on Rails で簡単なアプリケーションの作成

50