More Related Content Similar to TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」 Similar to TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」 (20) TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」2. 第六六回:データベース 12/07/25
今⽇日の内容
› 前回のフォローアップ › SQL
› 仕様のまとめ⽅方 › 例例題
› データベースとは › ER図とは
› RDBMSの種類 › 概要
› リレーショナルデータベー › SQLインジェクションとは
スの仕組み › 概要と例例
› 例例題
All Rights Reserved. Copyright (C) 2012, T ware 1
3. 第六六回:データベース 12/07/25
前回のフォローアップ
› 仕様のまとめ⽅方(書き⽅方) B
› 社内標準があればそれに従う
› 標準がない場合
› ドキュメントの⽬目的を正しく理理解する
› ⽬目的に合わない内容は削除することも検討する
› お⼿手本となるドキュメントを参考にする
› 書き⽅方、⾔言葉葉の使い⽅方、章⽴立立てなど、良良いと思うものは
どんどん取り⼊入れる
› ドキュメントの⽬目的から外れないように
› なぜそう書いてあるのか も考える
› 「⾃自分ならこんな書き⽅方しない」と思ったときは要注意
All Rights Reserved. Copyright (C) 2012, T ware 2
4. 第六六回:データベース 12/07/25
前回のフォローアップ
› 仕様のまとめ⽅方(書き⽅方) B
› 標準がない場合(続き)
› 誤解無く伝える
› あいまいな⾔言葉葉を使わない
ü 例例:「データベース」
ü データベースサーバに保存されているデータ
ü 保存形式は問わないが、あるまとまりのデータ
› 1⽂文に内容を詰め込み過ぎない
› 例例:クリックして登録されたデータを表⽰示できます
ü 登録されたデータをクリックして下さい。該当の
データが表⽰示されます。
› 図の意味は明快に
› 指し⽰示すものと動きが⽭矛盾無く理理解可能か?
› (時間を置いて)読み返してみる
All Rights Reserved. Copyright (C) 2012, T ware 3
5. 第六六回:データベース 12/07/25
データベースとは
› データベース(ウィキペディアより) B
› 特定のテーマに沿ったデータを集めて管理理し、容易易に検索索・抽
出などの再利利⽤用をできるようにしたもの
› データベースをコンピュータ上で管理理するためのシステムを
データベース管理理システム (Database Management
System, DBMS) という
› 優れている点 W
› データ保存が容易易かつ安全
› アプリケーションが⾯面倒をみる必要がない
› データの⼀一貫性を保持できる
› トランザクション処理理
All Rights Reserved. Copyright (C) 2012, T ware 4
6. 第六六回:データベース 12/07/25
主なRDBMS
› RDBMS(Relational Database Management System) B
No. 名称 ベンダ 種別 概要(ウィキペディアより抜粋)
オープン 世界で最も普及しているオープンソース・
1 MySQL ⽇日本オラクル
ソース データベース
オープン 国内では、PostgreSQL 53.0% と MySQL
2 PostgreSQL −
ソース 51.4% がほぼ横並び
企業サーバ向けの⾼高機能なシステムから組み
⽇日本マイクロ
3 SQL Server 商⽤用 込み系の⼩小規模なシステムまで幅広く、また
ソフト
Microsoft Windowsと親和性が⾼高い
世界初の商⽤用RDBMSであり、メインフレー
Oracle
4 ⽇日本オラクル 商⽤用 ムからパーソナルコンピュータまで、幅広い
Database
プラットフォームをサポート
軽量量のデータベースである。 ⼀一般的な
オープン
5 SQLite − RDBMSに⽐比べて⼤大規模な仕事には不不向きだ
ソース
が、中⼩小規模ならば速度度に遜⾊色はない
All Rights Reserved. Copyright (C) 2012, T ware 5
7. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› リレーショナルデータモデル
› 現在もっとも広く⽤用いられているデータモデル
› データをリレーション(関係)で表現
› データはテーブルに格納
› 例例題
› ディレクタ表
No. 名前 携帯番号 ⼊入社年年⽉月
1 TAM ⼀一郎郎 090-5555-1234 2005.1
2 TAM ⼆二郎郎 090-5555-2345 2007.4
3 TAM 三郎郎 090-5555-3456 2010.3
4 TAM 花⼦子 090-5555-4567 2002.1
5 TAM 葉葉⼦子 090-5555-5678 2010.6
All Rights Reserved. Copyright (C) 2012, T ware 6
8. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
› 顧客表
No. 社名 住所 電話番号
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100
2 B株式会社 ⼤大阪市北北区 06-6666-1100
3 C株式会社 東京都港区 03-3333-1200
4 D株式会社 東京都⽂文京区 03-3333-1300
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware 7
9. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
› 顧客担当ディレクタ表
No. 社名 住所 電話番号 担当ディレクタ
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100 TAM ⼀一郎郎、TAM 花⼦子
2 B株式会社 ⼤大阪市北北区 06-6666-1100 TAM ⼆二郎郎、TAM 花⼦子
3 C株式会社 東京都港区 03-3333-1200 TAM 三郎郎、TAM 花⼦子
4 D株式会社 東京都⽂文京区 03-3333-1300 TAM ⼀一郎郎、TAM 葉葉⼦子
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200 TAM 三郎郎、TAM 花⼦子
2名で1顧客を担当
All Rights Reserved. Copyright (C) 2012, T ware 8
10. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
› 顧客担当ディレクタ表(作り直し)
担当
No. 社名 住所 電話番号 携帯番号 ⼊入社年年⽉月
ディレクタ
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100 TAM ⼀一郎郎 090-5555-1234 2005.1
2 A株式会社 東京都⽬目⿊黒区 03-3333-1100 TAM 花⼦子 090-5555-4567 2002.1
3 B株式会社 ⼤大阪市北北区 06-6666-1100 TAM ⼆二郎郎 090-5555-2345 2007.4
4 B株式会社 ⼤大阪市北北区 06-6666-1100 TAM 花⼦子 090-5555-4567 2002.1
5 C株式会社 東京都港区 03-3333-1200 TAM 三郎郎 090-5555-3456 2010.3
6 C株式会社 東京都港区 03-3333-1200 TAM 花⼦子 090-5555-4567 2002.1
7 D株式会社 東京都⽂文京区 03-3333-1300 TAM ⼀一郎郎 090-5555-1234 2005.1
8 D株式会社 東京都⽂文京区 03-3333-1300 TAM 葉葉⼦子 090-5555-5678 2010.6
9 E株式会社 ⼤大阪市⽣生野区 06-6666-1200 TAM 三郎郎 090-5555-3456 2010.3
10 E株式会社 ⼤大阪市⽣生野区 06-6666-1200 TAM 花⼦子 090-5555-4567 2002.1
All Rights Reserved. Copyright (C) 2012, T ware 9
11. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
担当
No. 社名 住所 電話番号 携帯番号 ⼊入社年年⽉月
ディレクタ
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100 TAM ⼀一郎郎 090-5555-1234 2005.1
2 A株式会社 東京都⽬目⿊黒区 03-3333-1100 TAM 花⼦子 090-5555-4567 2002.1
3 B株式会社 ⼤大阪市北北区 06-6666-1100 TAM ⼆二郎郎 090-5555-2345 2007.4
4 B株式会社 ⼤大阪市北北区 06-6666-1100 TAM 花⼦子 090-5555-4567 2002.1
5 C株式会社 東京都港区 03-3333-1200 TAM 三郎郎 090-5555-3456 2010.3
6 C株式会社 東京都港区 03-3333-1200 TAM 花⼦子 090-5555-4567 2002.1
7 D株式会社 東京都⽂文京区 03-3333-1300 TAM ⼀一郎郎 090-5555-1234 2005.1
8 D株式会社 東京都⽂文京区 03-3333-1300 TAM 葉葉⼦子 090-5555-5678 2010.6
9 E株式会社 ⼤大阪市⽣生野区 06-6666-1200 TAM 三郎郎 090-5555-3456 2010.3
10 E株式会社 ⼤大阪市⽣生野区 06-6666-1200 TAM 花⼦子 090-5555-4567 2002.1
(1) 大阪市の顧客数 (3) ⼊入社3年年以内のディレクタが担当する顧客
(2) TAM一郎の担当件数 (4) TAM花⼦子の携帯番号変更更
All Rights Reserved. Copyright (C) 2012, T ware 10
12. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
› テーブル定義(第1ステップ)
ディレクタテーブル
名称 フィールド名 データ型
No. d_̲id integer
名前 d_̲name varchar
携帯番号 d_̲phone varchar
⼊入社年年⽉月 d_̲join date
顧客テーブル
名称 フィールド名 データ型
No. c_̲id integer
社名 c_̲name varchar
住所 C_̲address varchar
電話番号 c_̲phone varchar
All Rights Reserved. Copyright (C) 2012, T ware 11
13. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
› テーブル定義(第2ステップ)
ディレクタテーブル 顧客担当ディレクタテーブル
概要 フィールド名 データ型 概要 フィールド名 データ型
No. d_̲id integer No. cd_̲id integer
名前 d_̲name varchar 社名 c_̲name varchar
携帯番号 d_̲phone varchar 住所 c_̲address varchar
⼊入社年年⽉月 d_̲join date 電話番号 c_̲phone varchar
名前 d_̲name varchar
顧客テーブル
携帯番号 d_̲phone varchar
概要 フィールド名 データ型
⼊入社年年⽉月 d_̲join date
No. c_̲id integer
社名 c_̲name varchar
住所 C_̲address varchar
電話番号 c_̲phone varchar
All Rights Reserved. Copyright (C) 2012, T ware 12
14. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
ディレクタテーブル 顧客担当ディレクタテーブル
概要 フィールド名 データ型 概要 フィールド名 データ型
No. d_̲id integer No. cd_̲id integer
名前 d_̲name varchar No. d_̲id integer
携帯番号 d_̲phone varchar No. c_̲id integer
⼊入社年年⽉月 d_̲join date
顧客テーブル
概要 フィールド名 データ型
No. c_̲id integer
社名 c_̲name varchar
住所 C_̲address varchar
電話番号 c_̲phone varchar
All Rights Reserved. Copyright (C) 2012, T ware 13
15. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き)
ディレクタテーブル 顧客担当ディレクタテーブル
d_id d_name d_phone d_join cd_id c_id d_id
1 TAM ⼀一郎郎 090-5555-1234 2005.1 1 1 1
2 TAM ⼆二郎郎 090-5555-2345 2007.4 2 1 4
3 TAM 三郎郎 090-5555-3456 2010.3 3 2 2
4 TAM 花⼦子 090-5555-4567 2002.1 4 2 4
5 TAM 葉葉⼦子 090-5555-5678 2010.6 5 3 3
6 3 4
顧客テーブル
c_id c_name c_address c_phone 7 4 1
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100 8 4 5
2 B株式会社 ⼤大阪市北北区 06-6666-1100 9 5 3
3 C株式会社 東京都港区 03-3333-1200 10 5 4
4 D株式会社 東京都⽂文京区 03-3333-1300
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware 14
16. 第六六回:データベース 12/07/25
リレーショナルデータベースの仕組み W
› 例例題(続き) フィールド
ディレクタテーブル 顧客担当ディレクタテーブル
d_id d_name d_phone d_join cd_id c_id d_id
1 TAM ⼀一郎郎 090-5555-1234 2005.1 1 1 1
2 TAM ⼆二郎郎 090-5555-2345 2007.4 2 1 4
3 TAM 三郎郎 090-5555-3456 2010.3 3 2 2
4 TAM 花⼦子 090-5555-4567 2002.1 4 2 4
5 TAM 葉葉⼦子 090-5555-5678 2010.6 5 3 3
6 3 4
顧客テーブル
c_id c_name c_address c_phone 7 4 1
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100 8 4 5
2 B株式会社 ⼤大阪市北北区 06-6666-1100 9 5 3
3 C株式会社 東京都港区 03-3333-1200 10 5 4
4 D株式会社 東京都⽂文京区 03-3333-1300
テーブル
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware レコード
15
17. 第六六回:データベース 12/07/25
SQL
› SQLとは(ウィキペディアより) B
› リレーショナルデータベース管理理システム (RDBMS) において、
データの操作や定義を⾏行行うためのデータベース⾔言語(問い合わ
せ⾔言語)
RDBMS
SQL MySQL
アプリケーション
PostgreSQL
プログラム
SQL Server
Oracle Database
データ
等
ベース
SQL:Structured Query Language
All Rights Reserved. Copyright (C) 2012, T ware 16
18. 第六六回:データベース 12/07/25
SQL W
ディレクタテーブル:director_̲tbl
d_id d_name d_phone d_join 顧客担当ディレクタテーブル:
1 TAM ⼀一郎郎 090-5555-1234 2005.1 cus_̲dir_̲tbl
2 TAM ⼆二郎郎 090-5555-2345 2007.4 cd_id c_id d_id
3 TAM 三郎郎 090-5555-3456 2010.3 1 1 1
4 TAM 花⼦子 090-5555-4567 2002.1 2 1 4
5 TAM 葉葉⼦子 090-5555-5678 2010.6 3 2 2
4 2 4
5 3 3
顧客テーブル:customer_̲tbl
6 3 4
c_id c_name c_address c_phone
7 4 1
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100
8 4 5
2 B株式会社 ⼤大阪市北北区 06-6666-1100
9 5 3
3 C株式会社 東京都港区 03-3333-1200
10 5 4
4 D株式会社 東京都⽂文京区 03-3333-1300
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware 17
19. 第六六回:データベース 12/07/25
SQL W
› SQLの例例
› ⼤大阪市の顧客数
mysql>
select
count(*)
from
customer_tbl
where
c_address
like
'大阪市%’;
+----------+
|
count(*)
|
+----------+
|
2
|
+----------+
!
› TAM⼀一郎郎の担当件数
mysql>
select
count(*)
from
director_tbl,cus_dir_tbl
where
cus_dir_tbl.d_id=director_tbl.d_id
and
director_tbl.d_name='TAM
一郎';
+----------+
|
count(*)
|
+----------+
|
2
|
+----------+
All Rights !
Reserved. Copyright (C) 2012, T ware 18
20. 第六六回:データベース 12/07/25
SQL W
› データ操作コマンド
› 検索索
select … from 〜~ where ***
› 挿⼊入(新しくデータを追加)
insert into 〜~… values …
› 更更新(登録されているデータを置き換える)
update 〜~ set … where ***
› 削除
delete from 〜~ where ***
All Rights Reserved. Copyright (C) 2012, T ware 19
21. 第六六回:データベース 12/07/25
SQL W
ディレクタテーブル:director_̲tbl
d_id d_name d_phone d_join 顧客担当ディレクタテーブル:
1 TAM ⼀一郎郎 090-5555-1234 2005.1 cus_̲dir_̲tbl
2 TAM ⼆二郎郎 090-5555-2345 2007.4 cd_id c_id d_id
3 TAM 三郎郎 090-5555-3456 2010.3 1 1 1
4 TAM 花⼦子 090-5555-4567 2002.1 2 1 4
5 TAM 葉葉⼦子 090-5555-5678 2010.6 3 2 2
4 2 4
5 3 3
顧客テーブル:customer_̲tbl
6 3 4
c_id c_name c_address c_phone
7 4 1
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100
8 4 5
2 B株式会社 ⼤大阪市北北区 06-6666-1100
9 5 3
3 C株式会社 東京都港区 03-3333-1200
10 5 4
4 D株式会社 東京都⽂文京区 03-3333-1300
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware 20
22. 第六六回:データベース 12/07/25
SQL W
› SQLの例例
› TAM花⼦子の携帯番号変更更
mysql>
update
director_tbl
set
d_phone='090-6666-1111’
where
d_id=4;
Query
OK,
1
row
affected
(0.00
sec)
Rows
matched:
1
Changed:
1
Warnings:
0
mysql>
select
*
from
director_tbl;
+------+------------+---------------+------------+
|
d_id
|
d_name
|
d_phone
|
d_join
|
+------+------------+---------------+------------+
|
1
|
TAM
一郎
|
090-5555-1234
|
2005-01-01
|
|
2
|
TAM
二郎
|
090-5555-2345
|
2007-04-01
|
|
3
|
TAM
三郎
|
090-5555-3456
|
2010-03-01
|
|
4
|
TAM
花子
|
090-6666-1111
|
2002-01-01
|
|
5
|
TAM
葉子
|
090-5555-5678
|
2010-06-01
|
+------+------------+---------------+------------+
All Rights Reserved. Copyright (C) 2012, T ware 21
23. 第六六回:データベース 12/07/25
SQL W
ディレクタテーブル:director_̲tbl
d_id d_name d_phone d_join 顧客担当ディレクタテーブル:
1 TAM ⼀一郎郎 090-5555-1234 2005.1 cus_̲dir_̲tbl
2 TAM ⼆二郎郎 090-5555-2345 2007.4 cd_id c_id d_id
3 TAM 三郎郎 090-5555-3456 2010.3 1 1 1
4 TAM 花⼦子 090-5555-4567 2002.1 2 1 4
5 TAM 葉葉⼦子 090-5555-5678 2010.6 3 2 2
4 2 4
5 3 3
顧客テーブル:customer_̲tbl
6 3 4
c_id c_name c_address c_phone
7 4 1
1 A株式会社 東京都⽬目⿊黒区 03-3333-1100
8 4 5
2 B株式会社 ⼤大阪市北北区 06-6666-1100
9 5 3
3 C株式会社 東京都港区 03-3333-1200
10 5 4
4 D株式会社 東京都⽂文京区 03-3333-1300
5 E株式会社 ⼤大阪市⽣生野区 06-6666-1200
All Rights Reserved. Copyright (C) 2012, T ware 22
24. 第六六回:データベース 12/07/25
SQL W
› SQLの例例!
› ⼊入社3年年以内のディレクタが担当する顧客
mysql>
select
c_name,d_name
from
customer_tbl,cus_dir_tbl,director_tbl
where
customer_tbl.c_id=cus_dir_tbl.c_id
and
cus_dir_tbl.d_id=director_tbl.d_id
and
director_tbl.d_join
>=
date_sub(CURDATE(),
interval
3
year);
+-----------------+------------+
|
c_name
|
d_name
|
+-----------------+------------+
|
C株式会社
|
TAM
三郎
|
|
E株式会社
|
TAM
三郎
|
|
D株式会社
|
TAM
葉子
|
+-----------------+------------+
All Rights Reserved. Copyright (C) 2012, T ware 23
25. 第六六回:データベース 12/07/25
データベースの定義(ER図)
› ER図とは B
› データを「実体(entity)」と「関連(relationship)」、「属性
(attribute)」の3つの構成要素でモデル化した「ERモデル」を
図式化したもの。
› 設計情報として、案件引継ぎ時にやり取りされる場合がある
※MySQLWorkbenchで作成
All Rights Reserved. Copyright (C) 2012, T ware 24
26. 第六六回:データベース 12/07/25
SQLインジェクションとは
› SQLインジェクションとは(ウィキペディアより) B
› セキュリティ上の不不備を意図的に利利⽤用し、アプリケーションが
想定しないSQL⽂文を実⾏行行させることにより、データベースシス
テムを不不正に操作する攻撃⽅方法のこと。また、その攻撃を可能
とする脆弱性のこと
› 例例 W
› ユーザログインのためのSQL⽂文
select
*
from
user
where
uid=‘ID入力値’
and
pwd=‘PW入力値’
› ⼊入⼒力力値
ID入力値:tam-taro、 PW入力値:’or‘t’=‘t
› ⼊入⼒力力値を代⼊入したSQL⽂文
select
*
from
user
where
uid=‘tam-taro’
and
pwd=‘’
or‘t’=‘t’
› プログラム処理理で対策可能
› 型チェック、エスケープ処理理 等
All Rights Reserved. Copyright (C) 2012, T ware 25
27. 第六六回:データベース 12/07/25
これだけは憶えよう
› 前回のフォローアップ › SQL
› 仕様の書き⽅方 › RDBMSへの問合せ⾔言語
› ⽬目的に即した情報をシン › ER図とは
プルに表現する › データベースの設計情報
› データベースとは › 引継ぎ時に要求される場合
› MySQL, PostgreSQL, がある
SQLite、SQL Server, › SQLインジェクションとは
Oracle Database 等
› SQLを利利⽤用したデータベー
› リレーショナルデータベー スの不不正操作
スの仕組み › プログラム処理理で対策可能
› データの関係を利利⽤用して効
率率率的にデータにアクセスで
きる仕組み
All Rights Reserved. Copyright (C) 2012, T ware 26
28. 第六六回:データベース 12/07/25
ご質問、お問合せお寄せ下さい
toru@tam-‐tam.co.jp
support@i-‐tware.com
All
Rights
Reserved.
Copyright
(C)
2012,
T ware 27