Database Introduction
データベース
データサイエンス学部専門科目
経済学部
教授 谷口伸一
1
Database Introduction
データベースシステム
と
情報処理システム
事例紹介
NEC Web帳票管理システム(YouTube)
★
受講生課題研究
Ⅰ★
★
受講生課題研究
Ⅱ★
2
Database Introduction
情報出力
データ処理・加工
データ入力
データベース
管理システム
実習環境
▆
データベース管理システム
Microsoft Access
,MySQL(フリーソフト)
▆
プログラム作成ソフト
TeraPad
▆
動作実験
Webブラウザ:GoogleChrome
Webサーバ :
IIS
, Apache
URL: http://localhost/input.html
キーボード
タッチパネル
マウス・OCR
HTMLで画面設計
ディスプレイ
音響装置
HTMLで画面設計
VBScript
ASP
データと
情報の違い
3
情報処理とデータベース
Database Introduction
データベース
路線別時刻表
運賃,乗換時間
etc.
路線検索処理
プログラム
入力画面
出力画面
4
Yahooの路線情報に学ぼう
Database Introduction
WWWサーバ
110.112.114.116
データベースサーバ
110.112.114.117
連携DNSサーバ
110.112.114.118
①https://www.yahoo.co.jp/FireWall
②https://www.yahoo.co.jp/ ③https://203.216.231.189/ ①http://www.shiga-u.ac.jp/ ②http://www.shiga-u.ac.jp/ ③http://110.112.114.116/Yahooを検索
レポートを提出
④http://110.112.114.116/Internet
④https://203.216.231.189/5
Web情報システムとその仕組み
Database Introduction
<HTML> <HEAD> <TITLE>データ入力画面</TITLE> </HEAD> <BODY> X+Yの計算をします.<Form Action="keisan.asp"Method="GET"> X=<Input Type="number" Name=“x" Size="5"> Y=<Input Type="number" Name=“y" Size="5"> <HR Align="left" Width="150">
<Input Type="submit" Value="計算"> <Input Type="reset" Value="消去"> </Form> </BODY> </HTML> <%@ LANGUAGE="VBScript" %> <HTML> <HEAD><TITLE>ASP</TITLE></HEAD> <BODY> <% 'プログラムの始まり 'データ処理 X=Request("x") 'このとき x は文字列 Y=Request("y") 'このとき y は文字列
Z=Cint(X)+Cint(Y) 'CInt関数で数値に変換
'結果の表示
Response.Write "ASPによるX+Yの計算<BR>" Response.Write "X=" & X & "<BR>"
Response.Write "Y=" & Y & "<BR>" Response.Write "X+Y=" & Z & "<BR>"
%> 'プログラムのおわり </BODY> </HTML> input.html keisan.asp IIS データの受け渡し
http://localhost/keisan.asp?
X=10
&
Y=20
6
Database Introduction
■input.htmlの説明
①<Form Action="keisan.asp" Method="GET">
入力フォームを作成し、データをプログラム"keisan.asp"に渡すことを指示 Method="GET"はデータを渡す方式. "GET "と"POST"の2種類がある
②<Input Type="データ形式" Name="タグ" …> →右上の8種類を覚えよう
③計算ボタンが,Type= "submit”となる.Submitの意味:①服従させる(- -) ②提出する(^^)
■keisan.aspの説明
①ファイルの拡張子は"asp" ②<%@ LANGUAGE="VBScript" %> によってスクリプト(プログラム)言語を明記."JScript"もある ③プログラムの記述範囲を "<%"(はじまり)…….. "%>"(おわり) で囲む ④X=Request("X") によって送られてきたデータを変数Xに代入(記憶)する ⑤CInt( )関数 文字列は計算処理できないので、数値(整数)に変換する.Type="number"としても文字列 CInt : Convert Integerの略.2バイトの整数変換(-32,768 ~ +32,767)CLng: Convert Long Integerの略.4バイトの整数変換(-2147,483,648 ~ +2147,483,647) ⑥Response.Write "こんにちは"
ダブルクォーテーションで囲まれた文字列"こんにちは"を書き出す. 文字列と変数を連結して処理結果を書き出すこともできる
NAME=Request(
"name")
Response.Write "こんにちは"& NAME &"さん" ※文字列と変数は"&"で連結する. 例:Response.Write "X+Y="& Z&" <BR> "
"X+Y="は文字列,Zは変数なので,その中身"30"が連結されて,"X+Y=30" となって書き出される ※プログラムの動作を自分がコンピュータになって考える癖をつけるとよい. ① Type=“text” ② Type=“number” ③ Type=“radio” ④ Type=“checkbox” ⑤ Type=“select” ⑥ Type=“textarea” ⑦ Type=“date” ⑧ Type=“hidden”
7
Database Introduction
■入力画面の例
■結果画面の例
1回目のレポートにします。
ポイント
1. 演算子入力の追加
2. 演算子をIF文で判別・処理
※IF文の使い方を調べなさい。
8
四則演算に拡張しよう!
Database Introduction
データベースシステム
と
データ分析
事例
NEC 手軽に使えるBIツール(YouTube)
9
Database Introduction
売上データ.xlsxを使って、以下の分析をしてください。 1. 商品別分析 ① キリマンジャロだけを表示する. ② キリマンジャロの売上合計を計算する. ③ 緑茶に分類される商品の売上合計から特徴を分析する. ④ すべての商品の売上合計から特徴を分析する. 2. 店舗別分析 ① 日光店の売上だけを表示する. ② 日光店の売上合計を計算する. ③ 日光店の商品別売上合計から特徴を分析する. 3. クロス集計分析 ① 店舗別に商品別売上合計を計算して特徴を探る. ピボット・テーブルを使ってみよう.◼ 今後10年で最もセクシーな仕事は
データサイエンティスト
だ!
Googleチーフエコノミスト ハル・ヴァリアン (2009)◼ データサイエンティスト
とは大量のデータを分析し、有益な結
果を導き出すことで,ビジネス上の価値創出のシナリオまで描
ける専門家である。
数理統計
と
プログラミング
のスキル、そこ
に
経営
や
マーケティング
などのビジネススキルを備えているこ
と。
トーマス・ダベンポート 参考:週刊ダイヤモンド(2013,3.25)10
データ分析スキルの重要性
Database Introduction
以下の手順でEXCELデータをAccessへインポートします. 1. “ACCESS"を起動する. ①「空のデスクトップデータベース」をクリック ②ファイル名入力→売上データベース.accdb ③保存先を指定→X:¥Webpages ④[作成]をクリック 2. ExcelデータをAccessデータベースにインポート ⑤「外部データ」をクリック ⑥インポートとリンクから「Excel」をクリック①
⑤
②
③
④
⑥
11
表計算からデータベースへ
Database Introduction
3. 「参照」→エクセルファイルを指定. 4. OK
各自の場所を指定
Database Introduction
5. データ型(整数型、テキスト型など)の設定を正しく!
整数型
Database Introduction
6. 「売上データ」をダブルクリックするとテーブルが開く⑥
https://paiza.jp/works/sql/primer /beginner-sql1-cloud/1002214
Database Introduction
7. SQLでデータ分析!
8. SQLを実行する準備としてクエリを作成. 「作成」メニュー→「クエリデザイン」→テーブルを追加(売上データ) 9. 「商品名」を下のフィールドにドラッグ&ドロップ⑦
⑧
15
Database Introduction
10. SQLビューにする 「ホーム」メニュー→「表示」下の▼をクリック→「SQLビュー」 11. 図のようにSQLを入力して、キリマンジャロだけを表示する SQLの入力が終われば「表示」をクリック→検索結果が表示される検索結果
SELECT * FROM 売上データ WHERE 商品名='キリマンジャロ‘ 意味 売上データ・テーブルから、 商品名=‘キリマンジャロ’の行を選択し、 “*”=すべての列(フィールド)を表示する⑨
⑩
16
Database Introduction
SQL実行Webシステムを作ろう!
◼ Accessのクエリ機能で検索を実習しましたが、文字が小さく、扱いやすい
とは言えませんね.
◼ そこで,SQLコマンドを実行できる
Webシステム
を作成して,
データベース
操作
を実習しましょう.
◼ そのために,次のプログラムを作成します.
① SQL文を入力するプログラム
(HTML入力画面)
② SQL文を実行するプログラム
(ASPプログラム)
◼ あわせて,Webデータベースシステムのプログラミングを理解して下さい.
入力画面の例
商品名 売上合計 キリマンジャロ 4989000 緑茶 4553340 コーラ 4467980 ブレンドコー ヒー 4449280 ほうじ茶 401192017
Database Introduction
Web Server
Client PC
InterNet
➢ SELECT.html
➢ SELECT.asp
+
IIS & ASP
単価が150円
以上の商品を
検索!
① 入力画面
② 結果画面
③ ホームディレクトリ
コンテンツ
Client PCの画面
18
Webデータベースシステムの仕組み
Database Introduction
19
SELECT.HTML
<HTML> <HEAD>
<TITLE>SQL execution SELECT</TITLE> </HEAD>
<BODY>
SQLコマンドを入力して下さい.<BR><BR>
<FORM ACTION="SELECT.asp" METHOD="GET">
<TABLE CELLSPACING="2">
<TR>
<TD>SELECT</TD>
<TD><INPUT TYPE="text" NAME="select" SIZE="100"></TD> </TR>
<TR>
<TD>FROM</TD>
<TD><INPUT TYPE="text" NAME="from" SIZE="50"></TD> </TR>
<TR>
<TD>WHERE</TD>
<TD><INPUT TYPE="text" NAME="where" SIZE="100"></TD> </TR>
<TR>
<TD>GROUP BY</TD>
<TD><INPUT TYPE="text" NAME="group" SIZE="50"></TD> </TR>
<TR>
<TD>ORDER BY</TD>
<TD><INPUT TYPE="text" NAME="order" SIZE="50"></TD> </TR>
</TABLE>
<BR>
<INPUT TYPE="SUBMIT" VALUE="検索"> <INPUT TYPE="RESET" VALUE="取消">
</FORM>
</BODY> </HTML>
Database Introduction
20
<%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE>SQL実行</TITLE> </HEAD> <BODY> SQL実行結果<BR><BR> <%On Error Resume Next '---'コマンド受信 '---vSELECT=Request("select") vFROM=Request("from") vWHERE=Request("where") vGROUP=Request("group") vORDER=Request("order") sp=" " :'半角空白を定義 '---'SQL文の作成
'---SQLs=vSELECT & sp & vFROM & sp & vWHERE & sp & vGROUP & sp & vORDER Response.Write "実行するSQL文<BR>" & SQLs & "<BR><BR>"
'---'DBオープン
'---Set DB=Server.CreateObject("ADODB.Connection") :'Objectを作成
DB.Provider="Microsoft.ACE.OLEDB.12.0" :'propertyを定義
DB.Open Server.MapPath("売上データベース.accdb") :'methodを実行
Database Introduction
21
'---'SQL実行:データベースOPEN後の操作は細心の注意を払う '---Set RS= DB.Execute(SQLs) '---'エラーチェックを行う '---If (DB.Errors.Count = 0) ThenResponse.Write "<Table Border=1>"
'---'SELECT句で指定された列名の表示
'---For i=0 to RS.Fields.Count – 1 :'RS.Fields.Count=検索された列数(2つ) Response.Write "<TH>" & Rs.Fields( i ).Name & "</TH>"
Next
'---'検索された全レコード表示
'---Do Until (RS.EOF=True) :'End Of Fileで終了を判定 Response.Write "<TR>"
For i=0 to RS.Fields.Count-1 :'列数分を表示
Response.Write "<TD Align=center>" & RS.Fields( i ) & "</TD>"
Next Response.Write "</TR>" RS.MoveNext :'次の行へ移動。忘れるエンドレス Loop Response.Write "</Table>" Else Response.Write "SQL実行エラーが発生しました.<BR>" Response.Write "原因=" & DB.Errors(0).Description
End If RS.Close DB.Close %> </BODY> </HTML>
Database Introduction
次の1. から3. のSQLを実行し、その結果からデータ分析を試みなさい。季節,店舗の立地条件などを 勘案するとよい.検索レコード数が多い場合は20行程度を示すこと。
1. 商品別の売上を分析する
① キリマンジャロだけを表示する.
SELECT * FROM 売上データ WHERE 商品名='キリマンジャロ'
② キリマンジャロの売上合計を計算する.
SELECT SUM(売上金額) FROM 売上データ WHERE 商品名='キリマンジャロ'
③ 緑茶に分類される商品の売上合計から特徴を分析する.
SELECT 商品名, SUM(売上金額) FROM 売上データ WHERE 分類='緑茶' GROUP BY 商品名 ORDER BY SUM(売上金額) DESC
④ すべての商品の売上合計から特徴を分析する.
SELECT 商品名, SUM(売上金額) FROM 売上データ GROUP BY 商品名 ORDER BY SUM(売上金額) DESC
2. 店舗別(自分で考える) ① 日光店の売上データを表示する. ② 日光店の売上合計を求める. ③ 日光店の商品別売上合計から特徴を分析する. 3. 応用(クロス集計) ① 店舗別に商品別売上合計を計算して特徴を探る.
SELECT 店舗名, 商品名, SUM(売上金額) FROM 売上データ GROUP BY 店舗名, 商品名
ORDER BY 店舗名, SUM(売上金額) DESC
② TRANSFORM ~ PIVOTで売上金額をクロス集計表を作成してみよう(Access限定です). SELECT欄に1行で入力してみてください。 TRANSFORM SUM(売上金額) SELECT 店舗名 FROM 売上データ GROUP BY 店舗名
22
店舗名で分類(行) 商品名で分類(列)Database Introduction
アンケート調査の分析と考察
1. 女子のみの入学理由を見たい
2. 男子のみの専攻と入学理由を見たい
3. 女子の就職希望と志望業界A,B,Cをみたい
4. 男子の専攻別に就職希望と志望業界A,B,Cをみたい
5. 性別と専攻のクロス集計をしたい
6. 性別と入学理由のクロス集計をしたい
7. 性別と就職希望のクロス集計をしたい
8. 専攻と就職希望のクロス集計をしたい
9. 性別と会社に求めることのクロス集計をしたい
10. 専攻別にデータサイエンティストが求められる業界の予想をみたい
11. 自分の関心がある分析を2つ以上試みなさい
23
2回目のレポートですよ。
SQL(Select)の理解を深める
ためにWebデータベースシス
テムを使ってデータ分析して
みよう!
データベースはデータ管理を主たる目的とします。各種統計処理にはR
やSPSSなど統計処理ソフトで行います。
そこで、データベースからCSV形式ファイルを作成して統計処理ソフト
に渡せるようプログラムを作成してみましょう。
Database Introduction
24
SELECT.HTML
<HTML> <HEAD>
<TITLE>SQL execution SELECT</TITLE> </HEAD>
<BODY>
SQLコマンドを入力して下さい.<BR><BR>
<FORM ACTION="SELECT.asp" METHOD="GET">
<TABLE CELLSPACING="2">
<TR>
<TD>Database</TD>
<TD><INPUT TYPE="text" NAME="DB" SIZE="50" PLACEHOLDER="例:売上データベース.accdb"></TD> </TR>
<TR>
<TD>SELECT</TD>
<TD><INPUT TYPE="text" NAME="select" SIZE="100"></TD> </TR>
<TR>
<TD>FROM</TD>
<TD><INPUT TYPE="text" NAME="from" SIZE="50"></TD> </TR>
<TR>
<TD>WHERE</TD>
<TD><INPUT TYPE="text" NAME="where" SIZE="100"></TD> </TR>
<中略>
</TABLE>
CSVファイルを作成するとき⇒
<INPUT TYPE="text" NAME="FL" SIZE="30" PLACEHOLDER ="ファイル名を入力"><BR><BR>
<INPUT TYPE="SUBMIT" VALUE="検索"> <INPUT TYPE="RESET" VALUE="取消"> </FORM>
</BODY>
朱 書 き が 追 加 ・ 変 更 に な ります
Database Introduction
<%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE>SQL実行</TITLE> </HEAD> <BODY> SQL実行結果<BR><BR> <%On Error Resume Next '---'コマンド受信 '---vSELECT=Request("select") vFROM=Request("from") vWHERE=Request("where") vGROUP=Request("group") vORDER=Request("order") vDB=Request("DB") :'データベース名 vFL=Request("FL") :'ファイル名 vPT=Server.MapPath("csvFile") :'csvFile(作成済み)フォルダーのパス sp=" " :'半角空白を定義 '---'SQL文の作成
'---SQLs=vSELECT & sp & vFROM & sp & vWHERE & sp & vGROUP & sp & vORDER
Response.Write "実行するSQL文<BR>" & SQLs & "<BR><BR>"
25
SELECT.ASP
Database Introduction
26
'---'ファイル作成ボタン
'---Response.Write "<Form Action='CreateFile.asp' Method='GET'>"
Response.Write "<Input Type='hidden' Name='DB' Value='" & vDB & "'>" Response.Write "<Input Type='hidden' Name='FL' Value='" & vFL & "'>" Response.Write "<Input Type='hidden' Name='PT' Value='" & vPT & "'>" Response.Write "<Input Type='hidden' Name='select' Value='" & vSelect & "'>" Response.Write "<Input Type='hidden' Name='from' Value='" & vFrom & "'>"
vWhere=Replace(VWhere,"'","$") :'アポストロフィ"'"を"$"に変換 Response.Write "<Input Type='hidden' Name='where' Value='" & vWhere & "'>"
Response.Write "<Input Type='hidden' Name='group' Value='" & vGroup & "'>" Response.Write "<Input Type='hidden' Name='order' Value='" & vOrder & "'>" Response.Write "<Input Type='submit' Value='ファイル作成'>"
Response.Write "</Form>"
'---'DBオープン
'---Set DB=Server.CreateObject("ADODB.Connection") :'Objectを作成
DB.Provider="Microsoft.ACE.OLEDB.12.0" :'propertyを定義 DB.Open Server.MapPath("売上データベース.accdb") :'methodを実行
Database Introduction
27
CreateFile.ASP
<%@ LANGUAGE="VBScript"%> <HTML> <HEAD> <TITLE>File作成</TITLE> </HEAD> <BODY> ファイルの作成中!<BR> <%'On Error Resume Next
'---'パラメータ受信 '---vDB=Request("DB") :'データベース名 vPT=Request("PT") :'フォルダーパス vFL=Request("FL") :'作成ファイル名 vSELECT=Request("select") vFROM=Request("from") vWHERE=Request("where") vGROUP=Request("group") vORDER=Request("order") vWhere=Replace(vWhere,"$","'") :'"$"を"'"に戻す sp=" " :'半角空白文字 '---'SQL文の作成
'---SQLs=vSELECT & sp & vFROM & sp & vWHERE & sp & vGROUP & sp & vORDER
'---'DBオープン
'---Set DB=Server.CreateObject("ADODB.Connection") :'Object DB.Provider="Microsoft.ACE.OLEDB.12.0" :'property DB.Open Server.MapPath(vDB) :'method
Database Introduction
28
'---'CSVファイルを作成するためのプログラム
'---Set objFS=Server.CreateObject("Scripting.FileSystemObject") :'Object Set objFile=objFS.CreateTextFile(vPT & "¥" & vFL) :'File作成 'SQL実行
Set RS=DB.Execute(SQLs) IF ( DB.Errors.Count=0 ) Then
For i=0 to RS.Fields.Count-1 :'RS.Fields.Countの値=列数 vRecord=vRecord & "," & Rs.Fields( i ).Name
Next
'先頭行の書出し
vRecord=Mid(vRecord,2) :'先頭のカンマ","を削除 objFile.WriteLine vRecord
Do Until ( RS.EOF=True ) :'End Of Fileで終了を判定 vRecord="" :'Set null to csvRecord For i=0 to RS.Fields.Count-1 :'列数分を表示
vRecord=vRecord & "," & RS.Fields(i) Next 'データ行の書出し vRecord=Mid(vRecord,2) :'先頭のカンマ","を削除 objFile.WriteLine vRecord RS.MoveNext Loop Response.Write vFL & "の作成が完了しました!<BR>" objFile.Close Else Response.Write "SQL実行エラーが発生しました.<BR>" Response.Write "原因=" & DB.Errors(0).Description End If RS.Close DB.Close %> </Body> </HTML>
Database Introduction
ExcelあるいはAccessのデータ(表)を見て、なにか「ムダ」、「不都合」
がないか考えてみよう!
1.
「ムダ」と思ったものは?
⚫
…
⚫
…
⚫
みなさんなら「ムダ」を省くためにどのような表にしますか?
2.
「不都合」と考えたものは?
⚫
…
⚫
…
⚫
「緑茶,ほうじ茶,玉露」は,「緑茶」として分類され,間違いで
はありませんが,「日本茶」に変更したい.
→どうしますか?
※ここで気づいたことがデータベースの設計にとって重要!
29
データベースの設計を考えるために
Database Introduction
Check!
Webシステムの動作・仕組みを理解できましたか?
Web Serverの役割を理解できましたか?
ExcelからAccessに変換してデータベースを作成できましたか?
Excelでクロス集計ができるようになりましたか?
SQLによるデータ操作ができるようになりましたか?
データ分析の重要性を考えるきっかけになりましたか?
次章では
データベース設計
のための
技法
と
理論
を学びます
データベース入門編チェック!
30
Database Introduction
専用クライアント (専用ソフトが必要) Webブラウザ (標準装備) Webサーバ データベースサーバ 連携(ODBC) 基幹系システム 以下の手順でWebサーバを準備しましょう. 1. IISの機能を追加する. ◼ 設定(歯車)→アプリ→アプリと機能(左側)→プログラムと機能(右側) Windowsの機能の有効化(左側)→インターネットインフォーメーションサービス →World Wide Webサービス→アプリケーション開発機能→ASP→ISAPI機能拡張 2. ホームディレクトリを設定する◼ タスクバーのフォルダー→PCクリック→管理→サービスアプリケーション
→インターネットインフォーメーションサービス→サイト→Default Web Service →詳細設定(右側)→物理パス→ホームディレクトリ選択
3. このWebサーバへアクセスするためのURL:http://localhost/input.html