データ工学基礎 第一回 -...
TRANSCRIPT
![Page 1: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/1.jpg)
データ工学基礎
鈴木 優
第一回
データ工学の概要
![Page 2: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/2.jpg)
授業目的• データベースの基礎について学習
• データベースとは • 背景・歴史
• データベースを利用したアプリケーションを自力で構築 • Ruby on Rails によるWebアプリケーションを例に • データベースを直接利用
• SQLの基礎について学ぶ • 基本的な操作の方法 • いくつかの実例
2
![Page 3: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/3.jpg)
授業の進め方• 授業
• 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/4.jpg)
本日の内容• データベースとは何か • この授業の概略 • データのモデル化
4
![Page 5: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/5.jpg)
データベースとはなにか
![Page 6: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/6.jpg)
データとは• データ: 数字や記号の羅列 • 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/7.jpg)
データベースの意義• みんなが期待している情報は「価値付きの情報」
• データベースにどう格納されているかは重要ではない • 価値付きの情報を作るためには情報の抽出が必要 • 情報を作るためには意味の抽出が必要
• 意味を抽出するためには整理されたデータが重要 • データ解析のプロセスで最も重要なフェースは「データクリー
ニング」「構造化」 • 整理された質の良いデータが価値付きの情報には必要
• データを様々か角度から見ることで新たな発見が生まれる • 様々な角度から見ることができるデータ構造は重要
7
![Page 8: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/8.jpg)
データベースとは
データをプログラムから分離
8
データベースマネージメントシステム
プログラム
Java, Ruby,…
並列プログラム
B1 B2 B3 B4
可視化ソフトウェア
Access, Tableau,…
プログラム
コマンドライン
データとプログラムは一体
データファイルデータファイルデータファイル
プログラム
データファイルデータファイルデータファイル
プログラム
データファイルデータファイルデータファイル
使えない
![Page 9: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/9.jpg)
データベースの特徴• データを複数人で共有して利用できる
• プログラム言語に左右されない • だいたいどのような言語からも利用可能
• データベース管理システムの種類に左右されない • DBMSを変更しても共通の方法で利用可能
• SQL (Standard Query Language) • DBMSごとに少し方言(機能の違い)もあるが,おおむね共
通した動作が可能
• 複数の利用者が利用しても整合性が担保される • ある番号は一人の利用者にしか付与されてはならない,などの
制約はDBMSが引き受けてくれる • あるフィールドには数字しか入ってはいけない,などのチェッ
クをDBMSで引き受けてくれる
9
![Page 10: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/10.jpg)
データベースの特徴• 機密性の保護
• どのデータに誰がアクセスできるかを設定可能
• 同時に実行された結果を保証 • データAから10引き,データBに10足すという作業
• 完全に同時にこの二つを行うことができない • データAは変更されているがデータBは変更されていないと
いう瞬間が存在している • この瞬間に別の作業が発生すると期待された結果が得られない
• データAだけが変更されている状態で別の作業を行うと,整合性が崩れる
• このような状況を防ぐことができる
• 障害に強い • データの一部が破損しても回復することができる
• RAID
10
![Page 11: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/11.jpg)
データベースは必要か• データベースが必要な場合
• データの複数同時操作 • データの整合性を常に保つ必要
• データの構造が複雑 • データ相互にどのような関係があるのか過不足なく記述
• ハードウェアの故障によるデータの損失を防ぐ必要 • ディスクが故障しても継続して動作
• データの機密性を保護する必要 • Aさんはデータを読むだけ,Bさんは読み書き,Cさんはアクセス不可
• データベースが不要な場合 • プログラムとデータが密接に結びついている • 複数のプログラムやユーザで同時にデータへアクセスしない • データへの細かなアクセス制御が不要
11
![Page 12: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/12.jpg)
データベースの種類• 古くからあるデータベース
• 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/13.jpg)
主要な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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/14.jpg)
主要な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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/15.jpg)
動作環境• 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/17.jpg)
17
![Page 18: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/18.jpg)
この授業の概略
![Page 19: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/19.jpg)
データベースの設計手順• 何を格納するかを決める (1回目)
• プログラムの設計 • プログラムの目的は?
• 概念設計 (1回目) • 格納するデータ項目を決める
• データ相互の関係は? • 論理設計 (3-6回目)
• データベースへデータを格納する方法を決める • 整合性を取ることができるか? • 効率的に格納できるか?
• 物理設計 • どのデータをどのディスクへ格納するかを決める
• 格納スピードは十分か? • 一部が故障しても継続して格納することができるか?
• 時間の都合上この授業では扱わない
19
![Page 20: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/20.jpg)
データベース設計の例• Webで授業アンケートを取りたい
• 設問を準備して,複数の人が同じ設問を答える • 回答は「はい」もしくは「いいえ」
• 最終的には表の形式で表示
20
設問 学生A 学生B 学生C 学生Dこの授業は理解しやすいですか? いいえ はい いいえ いいえ
教員の声は聞き取りやすいですか? いいえ いいえ はい はい
この授業の単位は取りやすいですか? はい はい はい いいえ
![Page 21: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/21.jpg)
データの表現方法• 構造化データ
• 事前にデータの形式を定義可能な形式 • 表の形式で保存することが基本的には可能
• Excel のデータなど • この授業ではこの種類のデータを扱う
• 非構造化データ • 構造の定義がなされていない形式
• テキストデータ,画像データなど
• 半構造データ • 構造化データに非構造化データを含む形式
• 表の中にテキストや画像が入っているとき • 事前に定義されていないデータが入っているとき
• グラフ,木構造などで表現されているデータ形式 • XML, JSON などの形式を指す用語であることが多い
21
![Page 22: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/22.jpg)
表の説明
22
行 (row)
列 (column)表 (table)
値(value)
![Page 23: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/23.jpg)
表の説明
23
学籍番号 名前 性別
9001 鈴木一郎 男
9002 田中二郎 男
9003 高橋良子 女
9004 佐藤花子 女
学生
表名(table name)
属性(attribute)
![Page 24: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/24.jpg)
表の説明
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/25.jpg)
プログラムにとって扱いやすい表に
• このままの表をデータベースに入れるのは効率的ではない • 学生が増えると列が増える
• 列が増えるたびにプログラムを修正する必要がある
• 学生が増えても,設問が増えても同じプログラムで処理したい • 正規化を行う
• 第一正規形から第五正規形まで • 授業の3回目からはこの点についての話をメインに
25
設問 学生A 学生B 学生C 学生Dこの授業は理解しやすいですか? いいえ はい いいえ いいえ
教員の声は聞き取りやすいですか? いいえ いいえ はい はい
この授業の単位は取りやすいですか? はい はい はい いいえ
![Page 26: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/26.jpg)
データのモデリング
![Page 27: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/27.jpg)
一般化• 扱うべきデータをいくつかのグループへまとめる
• アンケートの例の場合 • 設問
• 事前に準備しておく質問 • 学生
• 名前,学籍番号,学年 • 回答
• どの質問にどの学生が何を答えたのか
27
![Page 28: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/28.jpg)
データのモデル化• ERモデル (Entity-Relationship Model)
• データを実体と関連,その関係で表現する
• 実体(エンティティ; Entity) • 人,物など実在する概念 • 例では「設問」,「学生」を実体とする • 長方形で表現
• 関連(Relationship) • 実体と実体の関係 • 例では「回答」 • ひし形で表現
• 実体と関連との関係を線で表現 • 設問と学生は「回答」で関係している • 実体と実体の間,関連と関連との間には関係させない
28
設問 学生回答
実体
関連
![Page 29: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/29.jpg)
データのモデル化• 属性 (Attribute)
• 実体や関連に付随するデータ • 学生ならば名前,性別など
• 楕円で表現 • 実体もしくは関連との関係を線で表現
29
設問 学生回答
設問内容
回答内容
学籍番号
名前
性別
属性
![Page 30: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/30.jpg)
データのモデル化• 主キー (primary key)
• 実体を一つに決めることができる属性群(複数でも良い) • 関連には必要なし • 下線を引く
30
設問 学生回答
設問内容
回答内容
学籍番号
名前
性別
キー
![Page 31: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/31.jpg)
キーと主キー• キーはいくつでも考えられる
• 学籍番号は一人の学生に固有の番号が与えられるので,学籍番号をキーにできる
• 同姓同名の人が同じ研究室にいないことが保証されるなら,名前と研究室の組み合わせをキーとすることができる
• 学籍番号がキーならば,学籍番号と性別の組み合わせもキーにできる
31
学生
学籍番号
名前
性別
研究室名
{学籍番号}{名前,研究室名}
{学籍番号, 性別}→キーに別の属性を付け加えると 必ずキーになるが主キーからは除外
![Page 32: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/32.jpg)
主キーの選択• 適切なものを一つキーから選択する
• キーに別の属性を付け加えたものは主キー候補から除外 • キーが一つも無い場合には属性にIDを付与する • 文字列よりも数値のほうが良いことが多い(高速化のため)
32
学生
学籍番号
名前
性別
研究室名
{学籍番号}{名前,研究室名}
{学籍番号, 性別}
→キーに別の属性を付け加えると 必ずキーになるが主キーからは除外
![Page 33: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/33.jpg)
一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ
33
設問 学生回答
設問内容
回答内容
学籍番号
名前
性別
33設問内容
理解しやすい?
聞き取りやすい?
単位取りやすい?
…
設問
![Page 34: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/34.jpg)
一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ
設問 学生回答
設問内容
回答内容
学籍番号
名前
性別
34
学籍番号 名前 性別
9001 鈴木一郎 男
9002 田中二郎 男
9003 高橋良子 女
… … …
学生
![Page 35: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/35.jpg)
一度このモデルを表にしてみる• 一つの実体,関係を一つの表へ
設問 学生回答
設問内容
回答内容
学籍番号
名前
性別
35
設問内容 学籍番号 回答内容理解しやすい? 9001 いいえ聞き取りやすい? 9001 いいえ単位取りやすい? 9001 はい
… … …
回答
関係を表にするときは実体の主キーと関係の属性を表の属性にする
![Page 36: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/36.jpg)
データをテーブルに分割
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/37.jpg)
データをテーブルに分割した
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/38.jpg)
キーを文字列ではなく数値へ
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/39.jpg)
表を表現するための方法
39
学籍番号 名前 性別9001 鈴木一郎 男9002 田中二郎 男9003 高橋良子 女… … …
学生 (学籍番号, 名前, 性別)
学生
学生
学籍番号
名前
性別
![Page 40: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/40.jpg)
簡単な書き方でもう一度説明
40
学生 (学籍番号, 名前, 性別)
回答 (設問内容, 学籍番号, 回答内容)
設問 (設問内容)
学生 (学籍番号, 名前, 性別)回答 (設問内容, 学籍番号, 回答内容)
OR学生 (学籍番号, 名前, 性別)
回答 (設問番号, 学籍番号, 回答内容)
設問 (設問番号, 設問内容)
![Page 41: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/41.jpg)
データのモデル化• 実体間の関係を見る
• 一つの設問に複数の学生が答える • 一人の学生は複数の設問に答える
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/42.jpg)
三つの関係• 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/43.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/44.jpg)
三つの関係• 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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/45.jpg)
三つの関係• 多対多の関係
• 表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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/46.jpg)
1対Nの関係• ある授業は別の授業を履修していないとならない,という関係をどのように表現するか? • ある授業を履修するためには別の授業を,その授業を履修する
ためにはさらに別の授業を,という可能性もある
46
授業 授業1 N
履修条件
同じもののはず
授業 履修条件
1
N
![Page 47: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/47.jpg)
1対Nの関係• 企業の上司・部下の関係をどのように表現するか?
• 上司の上司という関係も当然存在する
47
従業員 従業員1 N
役割
同じもののはず
従業員
1
N役割
![Page 48: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/48.jpg)
本日のまとめ• データベースとは何か
• データを複数人で利用するときに利用 • プログラム上で利用
• この授業の概要 • 論理設計と物理設計について • データベースを利用したプログラムについて
• データのモデリング • ER図
• 実体と関係 • 1:1, 1:N, M:N の関係
48
![Page 49: データ工学基礎 第一回 - bigdata.naist.jpbigdata.naist.jp/~ysuzuki/lecture/dataengineering... · データとは • データ: 数字や記号の羅列 • 4/16,16:00, 18](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/49.jpg)
本日の課題• 手元の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](https://reader033.vdocuments.us/reader033/viewer/2022050510/5f9add0992317a2c756e9214/html5/thumbnails/50.jpg)
次回予告• Ruby on Rails で簡単なアプリケーションの作成
50