SlideShare uma empresa Scribd logo
データベース技術
第11回(2015.12.8)
1
ビュー表の作成
•ビュー表(View table)
- ユーザーから見たときのみに存在する仮想的な表
- 実表(Base table):実際のデータが入力される表
•ビュー表 作成の書式
- CREATE VIEW ビュー名 AS SELECT文;
•作成したビューからデータの取得
- SELECT * FROM ビュー名;
•ビューの削除
- DROP VIEW ビュー名;
2
データベースとプログラム
•プログラムとデータの独立性
- SQLでデータベース処理を行うことにより、プログラ
ムとデータを分けて考えることが可能
- 生産性の向上につながる
データ
ベース
DBMSプログラム
SQL
3
プログラムの例(Ruby)
require "sqlite3"
db = SQLite3::Database.new("database.db")
sql = "create table Item (商品コード integer primary key, 商品名 text, 価格 int)"
db.execute(sql)
puts "Itemテーブルを作成しました。"
db.transaction do
	 sql = "insert into Item values (?, ?, ?)"

 db.execute(sql, 101, "メロン", 800)

 db.execute(sql, 102, "いちご", 150)

 db.execute(sql, 103, "リンゴ", 120)

 db.execute(sql, 104, "レモン", 200)
end
db.execute2("select * from Item") do | row |
	 puts row.join("t")
end
db.close
SQL文を作成
SQL文を作成
SQL文を実行
具体的なデータを入力し
SQL文を実行
結果を表示
データベースに接続
SQL文を実行
4
プログラミングインタフェース
•プログラムとデータベースの間でデータをやり
とりするもの
•API(Application Programming Interface)
- プログラムをアプリケーションプログラムと呼び、 
そのインタフェースなので、APIと呼ぶ
•APIの具体例
- Oracle:C言語から呼び出すOCI
- PostgreSQL:C言語から呼び出すlibpq
問題点:汎用性に欠ける
→データベースが変わるとプログラムの変更が必要
5
- ソフトウェアB:ネットワーク経由でライブラリを使う
- ソフトウェアA:直接ライブラリを使う
- どちらも同じAPIを使っている
プログラミングインタフェース
データ
ベース
サーバ
ソフトウェアB
クライアント
ネットドライバ
API
ソフトウェアA
ネットドライバ
ライブラリ RDBMS
API
ネットワーク
6
プログラミングインタフェース
データ
ベース
ライブラリ RDBMS1
データ
ベース
ライブラリ RDBMS2
データ
ベース
ライブラリ RDBMS3
ソフトウェアC
クライアント
API①
ODBC
またはJDBC
API②
API③
- 製品が異なっても       
同じインタフェースを使用できる
7
ODBC
•Open Database Connectivity
•Microsoft社が制定
•これに従いデータベースベンダがODBCドライ
バを提供
•ハードウェアやOSの違いを意識せずに済む
•例
- Excelからデータベースに接続してデータを取得する
8
ODBCの仕組み(1)
•クライアントパソコンに「ODBCドライバ」を
インストール
•データベースに接続し、データを取得するプロ
グラムを組む
- ODBC規格のAPIを利用
•利点
- データベース製品の変更の際、プログラムの大幅な変
更は不要
- 将来の移行を考えた場合、SQL文は標準のものにする
9
ODBCの仕組み(2)
アプリケーションプログラム
ODBC
ライブラリ
または ネットワークライブラリ
RDBMS
←製品ごとに異なる
アプリケーションプログラム
ODBC
DB Library
SQL Server
アプリケーションプログラム
ODBC
Net8
Oracle
<SQL Serverの場合> <Oracleの場合>
←ODBC規格のAPIを利用
10
JDBC
•Javaプログラミング用につくられたAPI
•JDBCを使うとデータベースを意識せずにアクセ
ス可能
•JDBCの4つのタイプ
- ODBC Bridge Driver(TYPE 1)
- Native-API Partly-Java Driver(TYPE 2)
- Net Protocol All-Java Driver(TYPE 3)
- Native Protocol All-Java Driver(TYPE 4)
11
TYPE 1(ODBC Bridge Driver)
•既存のODBCにJDBCのAPIをかぶせることで 
データベース接続を実現
•JDBCからODBCに「橋渡し」
JDBC-ODBC
ブリッジ
ドライバ
ODBC
ドライバ
データ
ベース
クライアント
ネイティブ
プロトコル
(例:SQLコマンド)
ODBC
API
Javaアプリ
ケーション
プログラム
12
•JDBCのAPIを、データベース製品固有のAPI 
(ネイティブライブラリ)に変換する
•アプリケーションを動作させるデータベース 
製品固有のAPIが必要になる
TYPE 2( Native-API Partly-Java Driver)
ネイティブ
ブリッジ
ドライバ
クライアント
ライブラリ
データ
ベース
クライアント
ネイティブ
プロトコル
(例:SQLコマンド)
ネイティブ
API
Javaアプリ
ケーション
プログラム
13
•データベース接続の部分をアプリケーションプ
ログラムから分離
•JDBC APIをDBMSに依存しないネットプロトコ
ルに変換し、中継サーバに接続
•中継サーバは、ネットプロトコルをDBMS特有
のプロトコルに変換し、ドライバとDBMSとの
接続を仲介する
TYPE 3( Net Protocol All-Java Driver)
ネット
プロトコル
ドライバ
ネイティブ
ライブラリ
データ
ベース
クライアント
ネイティブ
プロトコル
中間
プロトコル
Javaアプリ
ケーション
プログラム
中継サーバ
リスナ
14
•データベース製品固有のAPIをJDBCドライバに
すべて実装したもの
•クライアント側にデータベース製品固有のAPIの
インストールが不要
TYPE 4( Native Protocol All-Java Driver)
ネット
プロトコル
ドライバ
データ
ベース
クライアント
ネイティブ
プロトコル
Javaアプリ
ケーション
プログラム
15
Webとデータベース(1)
•Web創世記:固定的な文書の公開
•WebサーバにCGIが追加
- CGI(Common Gateway Interface):ユーザが作成
したプログラムを呼び出す機能
- 動的な情報が扱えるようになった
•現在:アプリケーションのWeb化
- GmailやGoogleカレンダーなど様々なWebサービスが
提供されている
16
Webとデータベース(2)
•負荷分散の仕組み
- サーバを3つの役割りに分け、多数のユーザに対応
データ
ベース
データベースサーバ
Webサービス Webアプリ
アプリケーション
サーバ
Webサーバ
Webサイトの見た目を作る
クライアントとの窓口
計算をする データを管理する
役割り:
ユーザ
クライアント
17
Webとデータベース(3)
•Twitter API
- Twitterの情報を利用することができる
- 例:ウィジェット
ここのソースコードを
Webサイトに貼付けると
Webサイトにツイートが表示される
18
Excelとデータベース(1)
•Excelでは、データベースからデータ取得可能
•外部データ参照機能を使う
•この機能では、ODBCが使われている
•例
- データベースにある売上データをExcelに取り出し、
グラフ化
19
Excelとデータベース(2)
20
Microsoft Accessとデータベース
•小規模なデータベースシステム構築が可能
•利点
- フォーム機能を使って簡単にアプリケーションプログ
ラムが作成できる
- 細かい制御はVBA(Visual Basic Application)を利用
•Accessをフロントエンドとすることができる
- フロントエンド:画面の機能(Accessで作成)
- バックエンド:データベスの機能(Oracleなどの大規
模データベースを使用)
21

Mais conteúdo relacionado

Semelhante a データベース技術 11(Database 11)

SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新
iPride Co., Ltd.
 
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
聡 大久保
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料
Nobumasa Ura
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストールQCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
QlikPresalesJapan
 
Dynamo 製品概要
Dynamo 製品概要Dynamo 製品概要
Dynamo 製品概要
AutodeskCIM
 
SQL Azure Management and Security
SQL Azure Management and SecuritySQL Azure Management and Security
SQL Azure Management and Security
junichi anno
 
MySQL_Update_20191010
MySQL_Update_20191010MySQL_Update_20191010
MySQL_Update_20191010
DAISUKE INAGAKI
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
Yoshitaka Seo
 
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
Insight Technology, Inc.
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
Michio Koyama
 
Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介
Shinsuke Yamamoto
 
ASP.NET MVC Part 2
ASP.NET MVC Part 2ASP.NET MVC Part 2
ASP.NET MVC Part 2
Yoshitaka Seo
 
見よう見まねでJavaFX!
見よう見まねでJavaFX!見よう見まねでJavaFX!
見よう見まねでJavaFX!
_denko
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
 
MySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL WorkbenchMySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL Workbench
yoyamasaki
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud Platform - Japan
 
G0042 h
G0042 hG0042 h
G0042 h
silicone69
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
Michio Koyama
 
今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門
Tetsuya Yokoyama
 

Semelhante a データベース技術 11(Database 11) (20)

SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新
 
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
iOSハンズオントレーニング データの永続化編(SQLite3, NSUserDefaults)
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストールQCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
QCDI勉強会_20240604_QCDI_基本の設定とゲートウェイのインストール
 
Dynamo 製品概要
Dynamo 製品概要Dynamo 製品概要
Dynamo 製品概要
 
SQL Azure Management and Security
SQL Azure Management and SecuritySQL Azure Management and Security
SQL Azure Management and Security
 
MySQL_Update_20191010
MySQL_Update_20191010MySQL_Update_20191010
MySQL_Update_20191010
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
[db tech showcase Sapporo 2015] A26:SQL Server Data Page Structure Deep Dive ...
 
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~プリンタ情報の取得と表示~
 
Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介Ibm cognos10 bi_セルフスタディーキットのご紹介
Ibm cognos10 bi_セルフスタディーキットのご紹介
 
ASP.NET MVC Part 2
ASP.NET MVC Part 2ASP.NET MVC Part 2
ASP.NET MVC Part 2
 
見よう見まねでJavaFX!
見よう見まねでJavaFX!見よう見まねでJavaFX!
見よう見まねでJavaFX!
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
 
MySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL WorkbenchMySQLの公式GUIツール MySQL Workbench
MySQLの公式GUIツール MySQL Workbench
 
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
Google Cloud ベストプラクティス:Google BigQuery 編 - 01 : BigQuery とは?
 
G0042 h
G0042 hG0042 h
G0042 h
 
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
.NETからActive Directoryデータにアクセス ~コンピュータ情報の取得と表示~
 
今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門今さら聞けない! Active Directoryドメインサービス入門
今さら聞けない! Active Directoryドメインサービス入門
 

Mais de Yuka Obu

データベース技術 14(Database 14)
データベース技術 14(Database 14)データベース技術 14(Database 14)
データベース技術 14(Database 14)
Yuka Obu
 
データベース技術 12(Database 12)
データベース技術 12(Database 12)データベース技術 12(Database 12)
データベース技術 12(Database 12)
Yuka Obu
 
データベース技術 9(Database 9)
データベース技術 9(Database 9)データベース技術 9(Database 9)
データベース技術 9(Database 9)
Yuka Obu
 
データベース技術 6(Database_6)
データベース技術 6(Database_6)データベース技術 6(Database_6)
データベース技術 6(Database_6)
Yuka Obu
 
データベース技術 5(Database_5)
データベース技術 5(Database_5)データベース技術 5(Database_5)
データベース技術 5(Database_5)
Yuka Obu
 
データベース技術 3(Database_3)
データベース技術 3(Database_3)データベース技術 3(Database_3)
データベース技術 3(Database_3)
Yuka Obu
 
ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1
Yuka Obu
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のためにYuka Obu
 
Sns 2
Sns 2Sns 2
Sns 2
Yuka Obu
 
Twitter in Hitachiohta 3
Twitter in Hitachiohta 3Twitter in Hitachiohta 3
Twitter in Hitachiohta 3
Yuka Obu
 
Twitter in Hitachiohta 2
Twitter in Hitachiohta 2Twitter in Hitachiohta 2
Twitter in Hitachiohta 2
Yuka Obu
 
Twitter in Hitachiohta 1
Twitter in Hitachiohta 1Twitter in Hitachiohta 1
Twitter in Hitachiohta 1
Yuka Obu
 

Mais de Yuka Obu (12)

データベース技術 14(Database 14)
データベース技術 14(Database 14)データベース技術 14(Database 14)
データベース技術 14(Database 14)
 
データベース技術 12(Database 12)
データベース技術 12(Database 12)データベース技術 12(Database 12)
データベース技術 12(Database 12)
 
データベース技術 9(Database 9)
データベース技術 9(Database 9)データベース技術 9(Database 9)
データベース技術 9(Database 9)
 
データベース技術 6(Database_6)
データベース技術 6(Database_6)データベース技術 6(Database_6)
データベース技術 6(Database_6)
 
データベース技術 5(Database_5)
データベース技術 5(Database_5)データベース技術 5(Database_5)
データベース技術 5(Database_5)
 
データベース技術 3(Database_3)
データベース技術 3(Database_3)データベース技術 3(Database_3)
データベース技術 3(Database_3)
 
ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1ソーシャルメディアワークショップ1
ソーシャルメディアワークショップ1
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
 
Sns 2
Sns 2Sns 2
Sns 2
 
Twitter in Hitachiohta 3
Twitter in Hitachiohta 3Twitter in Hitachiohta 3
Twitter in Hitachiohta 3
 
Twitter in Hitachiohta 2
Twitter in Hitachiohta 2Twitter in Hitachiohta 2
Twitter in Hitachiohta 2
 
Twitter in Hitachiohta 1
Twitter in Hitachiohta 1Twitter in Hitachiohta 1
Twitter in Hitachiohta 1
 

データベース技術 11(Database 11)