データベース データベースアプリケーションとストアドプロシージャ
Categories: MCA Database
1.クライアントサーバー型データベース
SQLサーバーはクライアントサーバー型データベースに対応するよう開発されたDBMSです。クライアントにはデータベースアプリケーションが配置され、サーバにはデータとデータベースエンジンが配置されています。
①ファイル共有型データベース
クライアントにアプリケーショントデータベースエンジンを配置し、サーバにはデータだけを配置するタイプのデータベースシステムです。
2.データベースアプリケーションの開発
(1)アプリケーションのアーキテクチャ
データベースアプリケーションはプレゼンテーション層、ビジネス層、データ層という3つの層から構成されています。各層の機能を備えたプログラムの配置の仕方をアプリケーションアーキテクチャと呼び、2層アーキテクチャ、3層アーキテクチャの2種類があります。
①プレゼンテーション層
データの表示、入力を扱う層であり、ユーザーインターフェイスと呼ばれる機能が属する。
②ビジネス層
アプリケーションの中でも核となる機能が属する層であり、ビジネスルール(業務処理をする為のプログラム)、トランザクション処理のプログラムが属する。
③データ層
データベースのデータ格納、データ整合性の維持、トランザクションの管理、などの機能が属する。
(2)2層アーキテクチャ
2層アーキテクチャとはプレゼンテーション層をクライアントマシンに配置し、データ層をサーバーマシンに配置するアーキテクチャである。この場合、ビジネス層はクライアントに配置する場合もあればサーバーに配置する場合もあります。このアーキテクチャ場合はユーザー数が増えたばあい、サーバーへの付加やネットワーク通信量が増えることで極端にパフォーマンスが低下する恐れがあります。
①インテリジェントサーバー、インテリジェントクライアント
ビジネス層がサーバーに配置されるアーキテクチャをインテリジェントサーバー、クライアントに配置されるアーキテクチャをインテリジェントクライアントと呼ぶ。
(3)3層アーキテクチャ
3層アーキテクチャとはプレゼンテーション層、ビジネス層、データ層をすべて別のコンピュータに配置するアーキテクチャです。プレゼンテーション層(クライアントアプリケーション)―ビジネス層(アプリケーションサーバー)―データ層(データベースサーバー)のような構成です。
このアーキテクチャは各層が独立している為、いずれかの層に変更があってもほかの層には影響が及びにくいというメリットがあり、アプリケーション拡張や保守も容易です。
(4)N層アーキテクチャ
3層アーキテクチャはビジネス層をさらに複数のコンピュータに分けて配置することもできる為、層がいくつあるか不定であるという意味でN層アーキテクチャと呼ばれています。
3.アプリケーションプログラミングインターフェイス(API)アプリケーションプログラミングインターフェイス
アプリケーションプログラミングインターフェイス(API)アプリケーションプログラミングインターフェイスとはプログラムを開発する際に使用する命令や関数の集合のことを指します。複雑なコードを自分で記述しなくてすむため手間が省けミスの発生も防ぐことができます。
SQLserverはデータベースアプリケーションを開発するためのAPI(データベースAPI)としてOLE DB,ODBCをサポートしています。
①OLE DB(Object Linking and Embedding Database)
COM(Component Object Model)をベースとしたAPIであり、このAPIを使用するとリレーショナルデータベースのほか、テキストファイル、EXCELワークシートなど様々なデータにアクセスするプログラムが作成可能である。
②ODBC(Open DataBase Connectivity)
リレーショナルデータベースにアクセスするための専用APIである。ODBCはコールレベルインターフェイスAPI(プログラム宣言だけでプログラムの中身を自ら持っていない)なので単独では使用できない。ODBCはODBCドライバと呼ばれるソフトウェアとともに使用する。ODBCドライバはDBMSごとに用意されており、ODBCドライバによってDBMSの相違を吸収するため、DBMSの違いを意識せずアプリケーションの作成が可能である。
OLE DBやODBCを利用する場合において呼び出し命令を記述する代わりにデータベースオブジェクトインターフェイスを利用する方法がある。データベースオブジェクトインターフェイスはデータベースのAPI機能をブラックボックス化(カプセル化)したものである。
データベースオブジェクトインターフェイスはOLE DBに対応するADO(ActiveXデータオブジェクト、ODBCに対応するRDO(リモートデータオブジェクト)がある。データベースオブジェクトインターフェイスを使用した場合OLE DB、ODBCを簡単に利用できるが全ての機能が利用できるわけではないというデメリットも存在する。
4.ストアドプロシージャ
(1)ストアドプロシージャ
ストアドプロシージャはSQLステートメントの集合であり、頻繁に使用するステートメントのパターンをストアドプロシージャに保存しておき、サーバーに格納することができます。
(2)ストアドプロシージの種類
SQL Serverがサポートするストアドプロシージャにはシステムストアドプロシージャとローカルストアドプロシージャの2種類があります。システムストアドプロシージャはシステムテーブルからシステムやデータベースに関する情報を取得する際に使用されるストアドプロシージャのことです。ローカルストアドプロシージャはユーザーのデータベースに格納される普通のストアドプロシージャのことです。
(3)ストアドプロシージャを使用するメリット
ストアドプロシージャを使用するメリットとしては以下の点があります。
①アプリケーションのビジネスルールの部分をストアドプロシージャとすることでアプリケーションからビジネスルールを独立させることができる。
②複数のアプリケーションで同じストアドプロシージャを共有することでデータへのアクセスに一貫性を持たせることができる
③ユーザーの必要とするビジネスルールをストアドプロシージャにすることでデータベース詳細構造をユーザーの目から隠すことができる
④ユーザーに用意されたストアドプロシージャを実行する権限だけを与えることでデータベースオブジェクトを操作する権限を与えないことでユーザーごとに権限を与える手間が省ける
⑤ストアドプロシージャが一度実行されると実行プランが作成され、パフォーマンス向上になる。
⑥通常のSQLステートメントではネットワークトラフィックが大きくなってしまうが、ストアドプロシージャについてはストアドプロシージャ実行のステートメントだけですみ、ネットワークトラフィックが大きく軽減できる。
(4)ストアドプロシージャの作成
ストアドプロシージャの作成にはCreate Procedureステートメントを使用します。
■構文例 CREATE PROCEDURE <プロシージャ名> AS <ステートメント>
<プロシージャ名> : 作成するストアドプロシージャの名前を指定します
<ステートメント> : ストアドプロシージャを構成するSQLステートメントを指定します
■使用例 CREATE PROCEDURE EDATA AS SELECT * FROM 社員データ Where 社員番号 >= 001
EDATAという名前のストアドプロシージャを作成します。
ストアドプロシージャの実行にはEXECUTEステートメントを使用します。
■構文例 EXECUTE <プロシージャ名>
■使用例 EXECUTE EDATA
EDATAという名前のストアドプロシージャが実行されます。
5.トリガ
トリガとは指定のテーブルが更新されると自動的に起動される特殊なストアドプロシージャです。トリガは通常ストアドプロシージャのようにユーザーが自分の意思で起動することはできません。トリガが起動されるステートメントとトリガは一つのトランザクションとして実行されます。トリガ実行途中で問題が起きた場合、ロールバックされるがその場合は起動ステートメントの処理も無効となります。
①トリガ作成
トリガを作成するにはCREATE TRIGGERステートメントを使用されます。
■構文例 CREATE TRIGGER <トリガ名>ON <テーブル名> FOR INSERT | UPDATE | DELETE AS ステートメント
■使用例 CREATE TRIGGER 社員数変更 ON 社員データ FOR INSERT AS UPDATE 企業データ SET 社員数 = 社員数 + (SELECT COUNT(社員数) FROM INSERTED)
社員数変更という名前のトリガが作成されており、社員データテーブルに追加されたときに連動して企業データテーブルの社員数データを更新するトリガである。
■INSERTED
トリガが行の挿入操作によって起動される場合トリガを起動するステートメントによって挿入される行内容が一時的に保存されるテーブルの名前である。トリガが行の削除操作によって起動される場合はDELETEDというテーブルが作成される。
■INSTEAD OF トリガ
トリガにはINSTEAD OF トリガと呼ばれるものがあり、トリガを起動するきっかけとなるステートメントは実行されるその代わりとしてトリガが実行される。
6.まとめ
(1)クライアントサーバー型
クライアントサーバー型とはクライアントマシンとサーバーマシンから構成されるデータベースシステムのことである。
(2)アプリケーションアーキテクチャ
プレゼンテーション層、ビジネス層、データ層から成るプログラム配置の仕方である。
(3)2層アーキテクチャ
プレゼンテーション層をクライアントマシンに、データ層をサーバーマシンに配置するアーキテクチャ
(4)3層(N層)アーキテクチャ
プレゼンテーション層、ビジネス層、データ層をすべて別のコンピュータに配置するアーキテクチャである。
(5)アプリケーションプログラミングインターフェイス(API)
アプリケーションプログラミングインターフェイスとはプログラムを作成する際に使用する命令や関数の集合を指す。
(6)データベースオブジェクトインターフェイス
データベースAPIの機能をブラックボックス化し部品のようにしたものであり、OLE_DBに対応するADOとODBCに対応するRDOがある。
(7)ストアドプロシージャ
SQLステートメントの集合であり、SQLステートメントを実行する代わりに頻繁に使用するステートメントのパターンをストアドプロシージャとして保存する。
(8)トリガ
トリガとは指定のテーブルが更新されると自動的に起動される特殊なストアドプロシージャである。
(9)INSTEAD OF トリガ
通常のトリガとは違い、トリガを起動するステートメントは実行されず、その代わりに別のトリガが実行される。