PH2 / W1 / データベースってなに?
データベースってなに?
時間割アプリの授業データは、どこにしまって、どうやって取り出すのか。このレッスンでは、その置き場所になるデータベースの形と、話しかけ方を学びます。
いまどこを学んでいる?
今回は、Laravel の奥でデータを保存しているPostgreSQLを学びます。
授業のデータはどこに?
時間割アプリの授業一覧って、どこに置けばいいんですか? JavaScript の配列に書いておけば足りそうですけど。
8件を表示するだけならそれでも動くよ。でも、学生が履修登録するたびに中身が書き換わるとしたら?
Excelではだめ?
大学の時間割は Excel で配られています。あれをアプリに置いたらどうですか?
人が開いて眺めるなら Excel は便利だね。でもアプリでは、200人が同じ表を同時に書き換えるんだ。
どれが最後に残る?
データベースとは
データをしまい、探したり書き換えたりする仕事を一手に引き受ける専用のソフトをデータベースと呼びます。アプリは「これを探して」と頼むだけで済みます。
| 頼むこと | データベースがやってくれること |
|---|---|
| 探す | 8件でも10万件でも、条件に合う行だけを返す |
| 同時に書く | 200人が一度に登録しても、表を壊さない |
| 守る | 決めた種類と違う値は受け付けない |
中はどんな形?
専用のソフトと聞くと、中身が想像できません。
実は、Excel の表とよく似た形をしているんだ。授業のデータを入れた表を見てみよう。
テーブル
データベースの中では、データが表の形で入っています。この表をテーブルと呼びます。授業の表には courses という名前を付けました。
| id | code | name | teacher | day |
|---|---|---|---|---|
| 1 | CS101 | データベース論 | 佐藤 | 1 |
| 2 | CS102 | プログラミング基礎 | 鈴木 | 2 |
| 3 | MA101 | 線形代数 | 高橋 | 1 |
カラム
縦の列は「授業名」「教員」のような項目です。これをカラムと呼びます。name カラムには、どの行でも授業名が入ります。
| id | code | name | teacher | day |
|---|---|---|---|---|
| 1 | CS101 | データベース論 | 佐藤 | 1 |
| 2 | CS102 | プログラミング基礎 | 鈴木 | 2 |
| 3 | MA101 | 線形代数 | 高橋 | 1 |
レコード
横の1行は、授業1つ分のデータです。これをレコードと呼びます。授業を1つ追加すると、レコードが1行増えます。
| id | code | name | teacher | day |
|---|---|---|---|---|
| 1 | CS101 | データベース論 | 佐藤 | 1 |
| 2 | CS102 | プログラミング基礎 | 鈴木 | 2 |
| 3 | MA101 | 線形代数 | 高橋 | 1 |
入る値の種類
カラムごとに、入れてよい値の種類(型)が決まっています。day は整数なので、「月曜」と文字で入れようとするとエラーで止められます。
| カラム | 型 | 入る値の例 |
|---|---|---|
| name | 文字列 | データベース論 |
| day | 整数 | 1(月)〜 5(金) |
| credits | 整数 | 2 |
| required | 真偽値 | true(必修)/ false |
どうやって取り出す?
月曜の授業だけ見たいとき、Excel ならフィルタのボタンを押しますよね。データベースにはボタンがありません。
代わりに、文章で命令を送るんだ。その命令の書き方を次で見ていこう。
SQLとクエリ
データベースへの命令はSQLという言葉で書きます。そして「月曜の授業をください」のような1回分の命令をクエリと呼びます。
クエリの例
「月曜の授業名をください」を SQL で書くと、このクエリになります。英単語が並んでいますが、1語ずつの意味は次のレッスンで見ていきます。
| name |
|---|
| データベース論 |
| 線形代数 |
SELECT name FROM courses WHERE day = 1;
PostgreSQL
データベースのソフトにはいくつか種類があり、PH2 ではPostgreSQL(ポストグレス)を使います。どれも SQL で命令でき、基本の書き方はほぼ共通です。
| 名前 | よく見かける場面 |
|---|---|
| PostgreSQL | PH2 で使う。Webサービスで広く使われる |
| MySQL | Webサービスで広く使われる |
| SQLite | スマホアプリなど。1つのファイルで動く |
まとめ
- データベースは、データの保存・検索・同時の書き換えを引き受ける専用のソフト
- 中身はテーブル(表)。縦の列がカラム、横の1行がレコード
- データベースへの命令は SQL で書き、1回分の命令をクエリと呼ぶ