30
データベース技術 3回(2015.10.131

データベース技術 3(Database_3)

Embed Size (px)

Citation preview

データベース技術第3回(2015.10.13)

1

データベースの必須機能•データ構造が定義できること

•同時実行制御

•トランザクション機能

•障害回復機能

•対話機能・SQL

•機密保護機能

2

トランザクション機能(1)•トランザクション

-データの登録や更新の1サイクルのこと

•トランザクション機能-トランザクションを保証する機能

-データベースに下書きをし、矛盾がなければ更新する

-処理の始めに「トランザクション開始」を宣言

-処理の修了時に「トランザクション終了」を宣言

-トランザクション終了時にDB更新を行う3

トランザクション機能(2)•例:A商品が10個注文された場合

-トランザクション開始を宣言

-トランザクション終了を宣言(実際にDBを更新)

在庫数は100個 A商品 100個在庫台帳

A商品を10個注文する A商品10個注文売上帳

在庫数を減らす A商品 90個在庫台帳

トランザクション

4

トランザクション機能(3)•ロールバック

-途中で処理を中断し、トランザクション開始時点にまで戻る処理

-たとえば下記の場合に実行される• トランザクション終了までにデータに矛盾が生じた

• データの書き込みに失敗した

5

障害回復機能•障害発生時点まで、データを回復する機能

•データのバックアップとログが利用される

データベース

時間の流れ

バックアップ

ログファイル

DB更新のたびに処理内容がログファイルに書き込まれる

障害発生!

6

クライアントとサーバ(1)•クライアント・サーバ方式

データベース

サーバ端末(クライアント)

プログラム

SQLAPI

※API:Application Programming Interface

ネットワークライブラリ

ネットワークライブラリ

リスナー

7

クライアントとサーバ(2)•Webの場合

-サーバをWebサーバとデータベースサーバに分ける

データベース

データベースサーバWebサーバWebサービス

API

ネットワークライブラリ

ネットワークライブラリ

リスナーWebアプリ

8

クライアントとサーバ(3)•Webの場合(2)

- Webサーバをさらに分けると

データベース

データベースサーバ

Webサービス Webアプリ

アプリケーションサーバ

Webサーバ

Webサイトの見た目を作るクライアントとの窓口

計算をする データを管理する役割り:

9

データベースのモデル•階層型モデル•ネットワーク型モデル•リレーショナルモデル

-階層型モデル、ネットワーク型モデルは、ホストコンピュータやメインフレームで使われていた

-現在は、使われていない

10

リレーショナルデータベース•用語(1)

-表(テーブル、table):リレーションとも呼ぶ-行(row、レコード):1件のデータこと-列(column、フィールド):各項目のこと

商品コード 商品名 単価 備考10 鉛筆 100 黒のみ20 赤ボールペン 110

30 ノート 200 30ページ40 黒ボールペン 110

商品表(商品テーブル)

11

リレーショナルデータベース•用語(2)

-空値である(null):値が空であること-一意である(ユニーク、unique):同じ値がないこと-キー:重要な役割りを持つフィールド-主キー(primary key):データを識別するフィールド

• キーと主キーは一意であり、空値をとりません

商品表 商品コード 商品名 単価 備考10 鉛筆 100 黒のみ20 赤ボールペン 110

30 ノート 200 30ページ40 黒ボールペン 110

空値

空値

主キー

12

リレーショナルデータベースの操作•リレーショナルデータベースの操作は    数学の概念に基づいた演算でデータを操作する

•操作の種類-和(union)

-差(difference)

-積(intersection)

-直積(Cartesian product)

-射影(projection)

-選択(selection)

-結合(join)

-商(division)

13

和(union)•2つの表に存在する全てのレコードを抽出

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200

商品名 単価メロン ¥800いちご ¥150くり ¥200かき ¥350

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200くり ¥200かき ¥350

「商品1」表 「商品2」表

りんごレモン

メロンいちご

くりかき

商品1 商品2和のイメージ図

14

差(difference)•片方の表のみに存在するレコードを抽出

-どの表を基準にするかによって、結果が異なる

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200

商品名 単価メロン ¥800いちご ¥150くり ¥200かき ¥350

商品名 単価

くり ¥200

かき ¥350

「商品1」表 「商品2」表

商品1 商品2

差のイメージ図

メロンいちご

りんごレモン

くりかき

15

積(intersection)•2つの表に共通して存在するレコードを抽出

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200

商品名 単価メロン ¥800いちご ¥150くり ¥200かき ¥350

商品名 単価

メロン ¥800

いちご ¥150

「商品1」表 「商品2」表

商品1 商品2

積のイメージ図

メロンいちご

りんごレモン

くりかき

16

直積(Cartesian product)•2つの表の行の組み合わせをすべて組み合わせる

商品コード 商品名 単価

101 メロン ¥800

102 いちご ¥150

輸出先コード 輸出先名12 アメリカ23 中国25 フランス

直積

「商品」表 「輸出先」表

商品コード 商品名 単価 輸出先コード

輸出先名101 メロン ¥800 12 アメリカ101 メロン ¥800 23 中国101 メロン ¥800 25 フランス102 いちご ¥150 12 アメリカ102 いちご ¥150 23 中国102 いちご ¥150 25 フランス

17

Work:練習問題•商品表1、2の和・差・積を求めてみましょう

•商品表2と販売店表の直積を求めてみましょう

商品コード 商品名 単価10 鉛筆 10

20 ボールペン 100

30 ノート 150

店番号 店名1 佐藤商店2 山田書店

商品表1

販売店表

商品コード 商品名 単価10 鉛筆 10

21 フェルトペン 100

商品表2

18

Work解答(1)•和

•差

•積

商品コード 商品名 単価10 鉛筆 10

20 ボールペン 100

30 ノート 150

21 フェルトペン 100

商品コード 商品名 単価20 ボールペン 100

30 ノート 150

商品コード 商品名 単価10 鉛筆 10

19

Work解答(2)•直積

商品コード 商品名 単価 店番号 店名10 鉛筆 10 1 佐藤商店10 鉛筆 10 2 山田書店21 フェルトペン 100 1 佐藤商店21 フェルトペン 100 2 山田書店

20

射影(projection)•表中の列を抽出する

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200くり ¥200かき ¥350

商品名メロンいちごりんごレモンくりかき

射影

「商品」表

21

選択(selection)•表中の行を抽出する

商品名 単価メロン ¥800いちご ¥150りんご ¥120レモン ¥200くり ¥200かき ¥350

選択

「商品」表

商品名 単価

りんご ¥120

レモン ¥200

22

結合(join)(1)•表をつなぎ合わせる

-「商品」表の主キーである「商品コード」を参照する-このとき「売上」表の商品コードを外部キーと呼ぶ

商品コード 商品名 単価101 メロン ¥800102 いちご ¥150103 りんご ¥120104 レモン ¥200

「商品」表日付 商品コード 個数11/1 102 1,10011/1 101 30011/5 103 1,70011/8 101 500

「売上」表

主キー 外部キー

23

結合(join)(2)•表をつなぎ合わせる

商品コード 商品名 単価101 メロン ¥800102 いちご ¥150103 りんご ¥120104 レモン ¥200

「商品」表日付 商品コード 個数11/1 102 1,10011/1 101 30011/5 103 1,70011/8 101 500

「売上」表

日付 商品コード 商品名 単価 個数11/1 102 いちご ¥150 1,10011/1 101 メロン ¥800 30011/5 103 りんご ¥120 1,70011/8 101 メロン ¥800 500

結合

24

商(division)•割られる方の表から、割る方の表の全ての行を含むものを取り出し、そこから割る方の行を除く

輸出先コード 輸出先名 日付12 アメリカ 3/512 アメリカ 3/1023 中国 3/525 フランス 3/2130 イタリア 3/25

「売上」表輸出先コード 輸出先名

12 アメリカ23 中国

「輸出先」表

日付3/5

25

商(division)(手順1)•割られる方の表から、割る方の表の全ての行を含むものを取り出す

輸出先コード 輸出先名 日付12 アメリカ 3/512 アメリカ 3/1023 中国 3/525 フランス 3/2130 イタリア 3/25

「売上」表(割られる方の表)輸出先コード 輸出先名

12 アメリカ23 中国

「輸出先」表(割る方の表)

輸出先コード12と23(アメリカと中国)の両方を含む行を取り出す

輸出先コード 輸出先名 日付12 アメリカ 3/523 中国 3/5

日付 3/10 は中国を含まないので取り出さない

26

商(division)(手順2)•割る方の行を除く

輸出先コード 輸出先名 日付12 アメリカ 3/512 アメリカ 3/1023 中国 3/525 フランス 3/2130 イタリア 3/25

「売上」表(割られる方の表)輸出先コード 輸出先名

12 アメリカ23 中国

「輸出先」表(割る方の表)

輸出先コードと輸出先名を除く

輸出先コード 輸出先名 日付12 アメリカ 3/523 中国 3/5

日付3/5

手順1の結果得られた表

27

リレーショナルデータベースの操作•操作の種類

-和(union)

-差(difference)

-積(intersection)

-直積(Cartesian product)

-射影(projection)

-選択(selection)

-結合(join)

-商(division)

集合演算と呼ばれる

関係演算と呼ばれる

28

練習問題•商を求めてみましょう

輸出先コード 輸出先名12 アメリカ23 中国25 フランス

輸出先コード 輸出先名 日付12 アメリカ 3/123 中国 3/112 アメリカ 3/325 フランス 3/512 アメリカ 3/625 フランス 3/1

「売上」表(割られる方の表)「輸出先」表(割る方の表)

29

練習問題•直積を求めてみましょう

商品コード 商品名 単価101 メロン ¥800102 いちご ¥150103 りんご ¥120104 レモン ¥200

輸出先コード 輸出先名12 アメリカ23 中国

「商品」表 「輸出先」表

30