# データベース

* 開講時期: 2年次 前期
* 担当教員：[山本 祐輔](https://hontolab.org/)（名古屋市立大学 大学院データサイエンス研究科 准教授）

この資料は，名古屋市立大学データサイエンス学部において開講されている講義「データベース」用に作成されたものです．

<!--
本資料はオンライン上でも閲覧できますし，PDF資料として保存することも可能です．
PDF資料が欲しい方は[コチラ]()からダウンロードしてください．
-->


## この講義で学ぶこと，学ばないこと
本講義は，データサイエンスを学ぶ方を対象にしたデータベース講義です．
一般に，データベースの講義はデータベースを使ったシステムの研究・開発を志向する学生，つまりコンピュータサイエンスを専門とする学生に提供されるものです．
しかし，本講義が想定している受講者はデータサイエンス学部の学生であり，その大半はデータ分析のためにデータベースを活用することが想定されます．
そのため，本講義では一般的なデータベースの講義で教授する内容のうち，
- 関係データベースの設計
- 関係データベース用いたデータの検索・分析

を行う上で必要となる知識・スキルに焦点をしぼって授業を行います．

以下，本講義で学ぶこと，学ばないことです．


### 学ぶこと
* データベースの概念
* 関係データモデル
* SQL
* 実体関連モデル
* 正規化
* 索引づけ


### 学ばないこと
* 関係代数
* 関係論理
* データ格納方式
* 問い合わせ最適化
* トランザクション
* 障害回復
* NoSQL


## 授業計画とコンテンツ
| |  日時  | トピック | 講義ノート | スライド資料 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | 04/13 | データベースを使わない世界 | [Here](content/introduction/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-01-introduction) |
| 2 | 04/20 | データベースの概念 | [Here](content/concept-of-database/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-02-db-concept) |
| 3 | 04/27 | 関係データモデル | [Here](content/relational-data-model/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-03-relational-model) |
| 4 | 05/11 | SQL（1/3） | [Here](content/sql/01.ipynb) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-04-sql-1) |
| 5 | 05/18 | SQL（2/3） | [Here](content/sql/02.ipynb) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-05-sql-2) |
| 6 | 05/25 | SQL（3/3） | [Here](content/sql/03.ipynb) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-06-sql-3) |
| 7 | 06/01 | SQL演習 - レポート課題1 | [Here](content/assignment/sql.ipynb) |  |
| 8 | 06/08 | 実体関連モデル（1/3） | [Here](content/er-model/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-08-er-model-1) |
| 9 | 06/15 | 実体関連モデル（2/3）| [Here](content/er-model/02.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-09-er-model-2) |
| 10 | 06/22 | 実体関連モデル（3/3） | [Here](content/er-model/03.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-10-er-model-3) |
| 11 | 06/29 | 正規化（1/2） | [Here](content/db-design/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-11-normalization-1) |
| 12 | 07/06 | 正規化（2/2） | [Here](content/db-design/02.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-12-normalization-2) |
| 13 | 07/13 | データベース設計演習 - レポート課題2 | [Here](content/assignment/db-design.md) |  |
| 14 | 07/20 | 索引づけ | [Here](content/indexing/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-14-indexing) |
| 15 | 07/27 | 発展的話題（NoSQL or Pandas入門） | [Here](content/nosql/01.md) | [SpeakerDeck](https://speakerdeck.com/trycycle/database-lecture-15-nosql) |
| 16 | 08/03 | 期末試験 |  |  |


## レポート課題
### レポート課題1（SQL）
[コチラのページ](content/assignment/sql.ipynb)で出題されているすべての課題を解きなさい．
解答期日，解答方法等については下記を参照すること．

- 設問数：26
- 成績評価における本課題の割合：20％（20点）
- 評価方法
	- Q1-Q6を全問正解した学生のみ，Q6以降を採点対象とします
	- Q7-Q25のSQLの実行結果をもとに，1問1点で採点します（最大20点）
- 解答〆切り：2026年6月14日 （日）23:59
<!-- - 解答提出方法：解答用サイト[SQL Autograder](https://sql-autograder.hontolab.org/)経由 -->
- 備考：〆切り以降に提出された解答は，本人の責めに帰さない限り，別途受理します．

### レポート課題2（データベース設計）
[コチラのページ](content/assignment/db-design.md)で出題されているすべての課題を解きなさい．
解答期日，解答方法等については下記を参照すること．

- 設問数：4
- 成績評価における本課題の割合：20％（20点）
- 評価方法：提出物をもとに担当教員が採点します．配点は各設問に記載しています
- 解答〆切り：2026年7月26日 （日）23:59
- 解答作成方法
	* Teams経由で配布したWordテンプレートを使用すること（図はPowerPointやdrawioで作成したものをWordに貼り付けるのが楽かと思います）
	* 解答提出時にはWordファイルを`PDFファイル`に変換すること．またファイル名は`学籍番号.pdf`とすること
- 提出方法：Teams経由
- 備考
	* 読めないものは採点しません
	* 指定されたフォーマット（PDFファイル）以外で提出された場合は採点対象としません
	* 〆切り以降に提出された解答は，本人の責めに帰さない限り，別途受理します．
