ic-1. リレーショナルデータベー
スの基本まとめ
(データベース)
URL: https://www.kkaneko.jp/de/index.html
1
金子邦彦
謝辞:この資料では「かわいいフリー素材集 いらすとや」のイラストを使用しています
アウトライン
1. リレーショナルデータベースシステムの概要
2. SQL
3. SQL の実行
4. データベースの設計
2
1. リレーショナル
データベースシステム
3
データベースシステム
データベースシステムは,データベースを扱う IT
のシステム
4
データベース
管理システム
利用者
データベースシステム
データベース(データの集まり)
データベース管理システム(ソフトウエア)
データベース
コンピュータ
記憶
装置
利用者
利用者
データベースシステム
ネットワーク
データベースシステム
5
データベー
スシステム
ネットワー
取引
記入
データ保
センサー連携
人工知能応用
・データベース管理システムは,データベースの管理等の機
能を持ったソフトウエア
・オンラインでデータを共有するときに,特に適する
リレーショナルデータベースシステム
6
リレーショナル
データベース
管理システム
リレーショナル
データベース
コンピュータ
記憶
装置
あわせて
リレーショナルデータベースシステム
たくさんのテーブルが格納される
データベースシステムの一種
データの形はテーブルリレーションともいう)
属性 id,
name, price
属性 book, who,
what, at
リレーショナルデータベースシステムは
表計算ではない
7
データベース
+
データベース
管理システム
| |
データベース
システム
エクセルのデータ
+
エクセル
(ソフトウエア)
| |
表計算のシステム
表計算
データ共有,検索,セキュリティ
リレーショナルデータベースシステムの特徴
データの形テーブル
機能が豊富
扱いは容易.SQL を利用.
リレーショナルデータベース設計の基礎は体系化
されている異状正規化
普及度はナンバーワン
リレーショナルデータベース管理システムには
まざまあるMySQL, マイクロソフト Access,
Oracle, SQL Server, PostgreSQL, SQLite3,
Firebird など.(無料で使えるものもある)
8
テーブル定義
9
テーブル
book」と「who」と
what」と「at」の属性
book who what at
XX
貸出
2023-05-
11 13:30:18
XX
返却
2023-05-
11 13:30:18
YY
貸出
2023-05-
11 13:30:18
ZZ
貸出
2023-05-
11 13:30:18
テーブル名: tosyo
リレーショナルデータベースの構築手順
10
テーブル定義
最初,テーブルは
データベース
生成
最初,デー
タベースは
テーブル生成
データベース
設計
id
購入
商品
ID
数量
id
購入
商品
ID
数量
1
X
1
2
Y
2
id
name price
テーブル定義
11
テーブル定義では,
テーブル名
属性属性名
属性データ型
などを設定して,テーブル定義する
CREATE TABLE tosyo (
book TEXT,
who TEXT,
what TEXT,
at DATETIME);
テーブル名: tosyo
book who what at
XX
貸出
2023
-05-
11 13:30:18
XX
返却
2023
-05-
11 13:30:18
YY
貸出
2023
-05-
11 13:30:18
ZZ
貸出
2023
-05-
11 13:30:18
book who what at
XX
貸出
2023-05-
11 13:30:18
XX
返却
2023-05-
11 13:30:18
YY
貸出
2023-05-
11 13:30:18
ZZ
貸出
2023-05-
11 13:30:18
属性のデータ型
12
テーブル
の本体
属性名
それぞれの属性データ型
TEXT
DATETIME
TEXT
TEXT
2. SQL
13
問い合わせ(クエリ)の仕組み
14
データの種類ごとに分かれ
た,たくさんのテーブル
問い合わせ
(クエリ)
コマンド
問い合わせ(クエリ)
結果は,テーブル形式の
データ
リレーショナル
データベースシステム
問い合わせ(クエリ)
問い合わせ(クエリ)」とは、
データベース検索集計・集約、ソート(並べ
)を行うこと
リレーショナルデータベースでの問い合わせ(ク
エリ)の結果は、テーブル形式のデータ
15
SQL は、リレーショナルデータベースシステム
さまざまな機能を使える言語
問い合わせ(クエリ)
テーブル定義
その他の操作
16
SQL
SQL の特徴
SQL は,リレーショナルデータベースシステム
標準言語
豊富な機能
さまざまな機能を組み合わせて使うことができる
簡単簡潔
コマンドなので,自動実行も簡単.あとからの確
認も簡単
17
SQL による問い合わせ(クエリ)の例
SQLは簡潔で単純
18
誰が何回貸出,返却したか
SELECT who, COUNT(*) FROM tosyo GROUP BY who;
貸出の回数は全部で何回か
SELECT COUNT(*) FROM tosyo WHERE what='貸出';
SQL を用いた新しい行の挿入
19
テーブル名
値の並び.半角のカンマ「,」で区切る
文字列は半角の「'」で囲む
INSERT INTO products VALUES(4, 'apple', 150);
id name price
1
orange
50
2
apple
100
3
melon
500
id name price
1
orange
50
2
apple
100
3
melon
500
4
apple
150
テーブル名: products
SQL の利用イメージ
リレーショナル
データベースシステム
SQLプログラム1
SQLプログラム2
SQLプログラム3
SQL プログラムを準備しておき,
呼び出すことが可能.
・他のアプリの中に SQL プログラム
を埋め込むことが可能
SQLの作成,
編集,実行
一般利用者は,リレーショナル
データベースの利用で,
SQLのことを意識しないことも多い
20
3. SQL の実行
21
アウトライン
SQL によるテーブル定義
SQL による行の挿入
SQL による問い合わせ(クエリ)
22
作成するテーブル
図書 (book) は,次の3冊とする
赤,青,緑
貸出者(who),貸出か返却か(what),日時(at)を記
録する
23
book who what at
XX
貸出
2023-05-
11 13:30:18
XX
返却
2023-05-
11 13:30:18
YY
貸出
2023-05-
11 13:30:18
ZZ
貸出
2023-05-
11 13:30:18
at には,プログラム
実行日時を記録する
テーブル名: tosyo
テーブル定義のSQL
CREATE TABLE tosyo (
book TEXT,
who TEXT,
what TEXT,
at DATETIME);
24
貸出者
貸出返却
日時
SQL
のキーワード
TEXT
文字列
DATETIME
日時,日付,時刻など
Paiza.IO の使い方
ウェブブラウザを起動する
次の URL を開く
https://paiza.io/
もし,表示が英語になっていたら,日本語に切り
替える
「コード作成を試してみる」をクリック
MySQL」を選ぶ左上のボタンをクリックするとメニューが出る)
27
プログラムの
編集画面
実行ボタン
プログラムを
書き換えること
ができる
編集画面を確認する。
すでに、SQL が入っているが、使わないので消す
テーブル定義
29
CREATE TABLE tosyo (
book TEXT,
who TEXT,
what TEXT,
at DATETIME);
行の挿入と確認
30
INSERT INTO tosyo VALUES('', 'XX', '貸出', NOW());
INSERT INTO tosyo VALUES('', 'XX', '返却', NOW());
INSERT INTO tosyo VALUES('', 'YY', '貸出', NOW());
INSERT INTO tosyo VALUES('', 'ZZ', '貸出', NOW());
SELECT * FROM tosyo;
NOW() MySQL の機能で
現在日時の取得
(9時間遅れの世界標準時)
集計・集約
31
SELECT who, COUNT(*) FROM tosyo GROUP BY who;
SELECT COUNT(*) FROM tosyo WHERE what='貸出';
誰が何回貸出,返却したか
SELECT who, COUNT(*) FROM tosyo GROUP BY who;
貸出の回数は全部で何回か
SELECT COUNT(*) FROM tosyo WHERE what='貸出';
ここで使用した SQL
テーブル定義
CREATE TABLE ...
問い合わせ
SELECT ... FROM ...
SELECT ... FROM ... WHERE ...
行の挿入
INSERT INTO ...
32
4. リレーショナルデータベース
の設計
33
はじめに
データベースで一番困ることは,データベースの
異状である.
【異状とは】
データベース内のデータが、
つじつまの合わない状態
あるいは
記録したいデータが記録できない状態
になり、しかも、修復できない状態に陥ること
異状は完全に防止できるわけではないが,正規化
により,ある程度防ぐことができる
34
異状の例
35
このバスは無料です このバスは運賃1000円です
異状が起きやすいリレーショナルデータベースの
36
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
カレーライスは、400
うどんは、250
Aさんはカレーライスを食べた
Bさんはうどんを食べた
Cさんはカレーライスを食べた
情報
テーブル
異状が起きやすいリレーショナルデータベースの
37
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
カレーライスは、400
うどんは、250
Aさんはカレーライスを食べた
Bさんはうどんを食べた
Cさんはカレーライスを食べた
情報
テーブル
情報の更新
350
350
350
カレーライスが
400円から 350円に値下げ
異状が起きやすいリレーショナルデータベースの
38
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
テーブル
情報の更新
350
カレーライスが
400円から 350円に値下げ
書き換え忘れして
しまうかも!
異状が起きやすいリレーショナルデータベースの
39
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
350
テーブル
情報の更新
カレーライスが
400円から 350円に値下げ
異状が起きている
◆朝食の値段が1つのはずなの
に、違った値段が記録
されていてつじつまが合わない
テーブル分解
40
分解
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
朝食
値段
カレーライス
400
うどん
250
名前
朝食
A
カレーライス
B
うどん
C
カレーライス
分解後、情報は失わ
れていない
分解後のテーブルは,異状が起きにく
41
テーブル
異状はない
カレーライスが
400円から 350円に値下げ
朝食
値段
カレーライス
400
うどん
250
名前
朝食
A
カレーライス
B
うどん
C
カレーライス
350
設計変更による異状の防止
42
朝食
値段
カレーライス
400
うどん
250
異状が起きにくいデータベース
350
名前
朝食
A
カレーライス
B
うどん
C
カレーライス
異状が起きやすいデータベース
名前
朝食
値段
A
カレー
ライス
400
B
うどん
250
C
カレー
ライス
400
350
350
カレーライスの値下げのとき、
片方を書き忘れると 異状
情報は
同じ
冗長なデータがある
冗長なデータがない
43
1つのテーブルを、複数テーブルに分解
ることで異状の防止ができる場合がある.