データベース データウェアハウスとOLAP

Categories:  MCA Database

1.データウェアハウス

データベースの中には基幹系データベースと情報系データベースとありますがデータウェアハウスとは情報系データベースのことであり、日々の業務の実績や履歴のデータを蓄積する為のデータベースのことです。データウェアハウスのデータは企業が今後とるべき戦略を立てる上での意思決定支援として役立ちます。

(1)データウェアハウスの特徴

 データウェアハウスには次の4つの特徴があります。

①サブジェクト指向

サブジェクト指向とは[主観]を意味しており、データウェアハウスにはシステムが自分の主観からみて必要と思える情報をえることができるであることが要求されています。単に売上データに関してもそのデータが今後の経営意思決定に活かす情報をかえすのがサブジェクト指向であり、その情報を蓄積したデータベースをデータウェアハウスと呼んでいます。データウェアハウスはユーザーの知りたいというニーズにこたえるものでなければなりません。

②統合性

本来、企業の部門ごとにわかれているシステムごとに分散して蓄積、保存されているデータを全てまとめて一つのものとして扱えます。この場合データの項目、データの型に一貫性を持たせることが必要となります。

③系列性

時系列性とはあるデータのさまざまな時点での状態を記録できるということを意味しています。

④揮発性

不揮発性とは日常的には更新処理が行われないが、定期的に一括して行われています。データウェアハウスのデータは日常的にはデータの検索や分析だけに使用されています。

2.データウェアハウジングの構成

データウェアハウスにはそのデータを分析するためのシステムが必要であり、データウェアハウスとその分析システムをあわせてデータウェアハウジングと呼ばれています。SQLサーバーを使用した場合には次のような要素から構成されています。

①DTS(Data Transformation Services:データ変換サービス)

DTSは通常のデータベースのデータ(OLTPデータソース)をデータウェアハウスに使用できるものに変換し、DW(データウェアハウス)ストレージに転送します。

②データウェアハウス(DW)ストレージ

DWストレージはデータウェアハウスのデータ格納先であり、DWストレージに格納されたデータはAnlysis Servicesによる分析に利用されます。

③Analysis Services

Analysis Servicesはマイクロソフトが提供しているサーバーソフトウェアでデータウェアハウスのデータ分析を行うのに使用されるています。これはOLAP、データマイニングといった分析処理のための機能を備えており、これはクライアントアプリケーションがAnalysis Servicesを利用してOLAP処理(On-line-analytical processing)を行うのに必要なデータ(キューブ)を作成する機能を持っています。

④クライアントアプリケーション

クライアントアプリケーションはAnalysis Servicesのサービスを利用してOLAPの処理を行いデータを分析するためのアプリケーションです。クライアントアプリケーションとしてはExcelが使用されています。

クライアントアプリケーションからキューブへのアクセスにはOLE DB for OLAP、ADO MDといったAPIが使用されています。

3.OLAP(ON-Line Analytical Processing)

OLAPとはON-Line Analytival Processingの略称であり、企業が日常の業務によって蓄積された販売データや顧客データなどをさまざまな角度から分析することです。Analysis ServicesはOLAPツールの一つです。それに対して基幹系データベースの日常業務で使用される処理をOLTP(On-line-transaction processing)と呼んでいます。

OLAPでは売上が月毎、地域毎、製品毎にどのように異なっているか、商品Aと商品Bの相関関係、天候によって売れる商品に違いがあるかなどが調べられます。

(1)キューブ

OLAPでは次元の多い多次元モデルと呼ばれる構造のデータを使用し、次元が3つになっているデータのことをキューブと呼んでいます。また次元が4つ以上のデータをハイパーキューブと呼んでいます。

キューブは次の3種類の要素から構成されています。

①次元(ディメンション)

次元はデータを分析する切り口を意味し、どのような切り口で分析を行うかにより設定します。

②メンバ

メンバとは次元を構成する項目であり、商品の場合であればその中のカテゴリとなります。

③セル

キューブをグラフ化すると直方体になるがセルはこの直方体を指します。

(2)スライス

スライスとは一つの次元の中から特定のメンバだけを選択することを意味しています。時間、店舗、商品の次元から構成されるキューブがあるとすればそのキューブの時間次元の中から2001年というメンバを選択し2001年におけるすべての店舗のすべての商品の売上データを取り出したものはスライスと呼ぶことができます。

(3)ドリルダウン/ドリルアップ

キューブ次元のメンバはいくつかのカテゴリに分かれるがこのカテゴリをかえて分析の対象を絞り込むことをドリルダウン、分析の対象を広くすることをドリルアップと呼びます。分析対象を絞り込むようにカテゴリを変えた場合はメンバのレベルを下げる、逆に分析の対象を広くするようにカテゴリをかえることをメンバのレベルを上げると呼びます。

4.データマイニング

データマイニングはパターン認識、人工知能などの技術、統計学を利用し自動的にデータの相関関係、傾向、パターンを見つけ出すことを呼びます。Analysis Servicesはデータマイニングの機能としてディシッジョンツリー、クラスタリングの二つが用意されています。

(1)ディシジョンツリー

因果関係を見つけ出すのに役立つ機能であり、分類の結果を図にすると木構造になるためそのように呼ばれています。

(2)クラスタリング

クラスタリングはデータ類似性という観点からグループにまとめる機能です。クラスタリングを利用することで顧客を、商品を購入する見込みが高いか低いかで有望顧客、一般顧客に分けることができます。

5.まとめ

(1)サブジェクト指向

データウェアハウスの特徴の一つで主観の意味を持つ。ユーザーが自分の主観からみて必要と思える情報を得ることができる、ユーザーのニーズに応える特性のこと。

(2)Analysis Services

マイクロソフトが提供するサーバーソフトウェアであり、データウェアハウスのデータ分析を行うのに使用される。

(3)OLAP

企業が日常の業務で蓄積された販売データ、コキャクデータなどを様々な角度から分析すること。

(4)キューブ

OLAPで使用される次元が3つのデータのこと。

(5)ドリルダウン/ドリルアップ

OLAPにおいてキューブの次元メンバのカテゴリをかえ、分析対象を絞りこむことをドリルダウン/分析対象を広げることをドリルアップという。

(6)ディシジョンツリー

データマイニングとしてAnalysis Servicesを使用した場合に因果関係を見つけ出すのに役立つ機能のこと。

(7)クラスタリング

Analysis Servicesの中でデータ類似性という観点からグループにまとめる機能のこと。

データベース データベースアプリケーションとストアドプロシージャ

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 トリガ

通常のトリガとは違い、トリガを起動するステートメントは実行されず、その代わりに別のトリガが実行される。

データベース 分散データベース

Categories:  MCA Database

1.分散データベース環境

分散データベースとは複数のサーバーに同じデータベースを複製し、重複して配置した環境を分散データベース環境です。同じデータベースを複数のサーバーに配置する理由としては次の点があります。

(1)データとユーザーの距離を近くできる

(2)組織内の各部門がそれぞれ独立してデータを利用できる

(3)通常のデータベース操作(オンライントランザクション処理=OLTP)に使うデータとデータウェアハウスなどで主に読み取り処理に使うデータを独立させることができる。

(4)一つのデータベースを使う人数を減らすことができる。

また分散データベース環境を構築するにはデータベースを複数のサーバーに複製する必要があります。その方法としてはレプリケーション、分散トランザクションの二種類の方法があります。

 

2.レプリケーション

レプリケーションはデータベースのデータを定期的に繰り返し複製することです。

(1)パブリッシャ、ディストリビュータ、サブスクライバ

データベースレプリケーションにはパブリッシャ、ディストリビュータ、サブスクライバの3種類のコンピュータが関与しています。

①パブリッシャ

パブリッシャとは複製元となるデータベース(データベースソース)を保持するコンピュータである。ソースデータベースの内容がどのように変更されたか、をディストリビュータに知らせるという役割があります。

②ディストリビュータ

パブリッシュからのソースデータベースの内容がどのように変更されたかという情報を格納し、サブスクライバに送るコンピュータです。

③サブスクライバ

データベースのコピーを保持し、ディストリビュータから送られてきた情報に基づいてデータを更新するコンピュータです。一台のコンピュータに同時にパブリッシャ、ディストリビュータ、サブスクライバにすることも可能です。

(2)レプリケーション方法

レプリケーションの方法には、スナップショットレプリケーション、トランザクションレプリケーション、マージレプリケーションの3種類があります。

①スナップショットレプリケーション

ソースデータベースの特定の時点の内容をそのままサブスクライバにコピーする方式のレプリケーションです。
他のデータベースが必ずしも最新な状態でなくてもよい場合に適したレプリケーション方式であり、前回のコピー時からどの部分がどのように変更されたかはまったく関与せず、ディストリビュータも必要がない方式です。

②トランザクションレプリケーション

ソースデータベースにどのような変更がなされたのかだけを知らせる方式のレプリケーションです。
パブリッシャはデータ変更記録を抽出しディストリビュータにトランザクションログ内容を送り、ディストリビュータはソースデータベースのトランザクションログファイルに基づき、サブスクライバのデータベースに対し実行します。
トランザクションレプリケーションはレプリケーションの中でもソースデータベースが更新されてからその更新がデータベースのコピーに反映されるまでの時間が最も短い方法です。

③マージレプリケーション

双方向でデータの複製が行われるレプリケーション手法であり、パブリッシャ、サブスクライバのどちらもユーザーによって更新が可能し、データ更新は、同期、マージと呼ばれる処理によって統一されています。ソースデータベース、サブスクライバのコピー双方で同じデータに対して違う変更が加えられると競合と呼ばれる問題が発生する。その場合は更新に優先順位をつけるなどの対策が必要です。

 

3.分散トランザクション

分散トランザクションは複製によって作成された複数のまったく同じ内容のデータベースに対して同時に同じトランザクションを実行します。
これによってデータベース間で内容に違いがでるのを防ぐことができる。但し同時に複数のデータベースにトランザクションを実行したが、傷害によりロールバックする事態も発生します。
SQLServerではその危険性を抑えるために2フェーズコミット(2PC)と呼ばれる方式を採用します。

(1)2フェーズコミット

2フェーズコミットとはトランザクションのコミットを準備フェーズ、コミットフェーズ2段階に分けて行う方式である。2フェーズコミットにはMS DTC(Microsoft Distributed Transaction Coordinator)というサービスが必要です。

①準備フェーズ

準備フェーズはMS DTCがアプリケーションからコミット要求を受け取り、同じトランザクションが実行されているサーバーに準備コマンドと呼ばれるコマンドを送る。準備コマンドを受け取ったサーバーは準備フェーズ作業が完了した場合、作業が完了したということをMS DTCに通知します。

②コミットフェーズ

サーバーからの準備完了コマンドを受け取り、コミットコマンドと呼ばれるコマンドを各サーバーに送信する。コミットコマンドを受け取ったサーバーは再度コミットが正常に完了したという通知をMS DTCに送る。ここで一つでもコミットが正常に完了しなかったという通知を送ってきた場合はMSDTCはすべてのサーバーにロールバックコマンドを送り、アプリケーションには分散トランザクションが正常に完了しなかったことを通知します。
分散トランザクションは全てのサーバーが常に通信可能な状態になっていなければならないのが条件です。

 

4.まとめ

(1)分散データベース環境

複数のサーバーに同じデータベースを複製し、重複して配置した環境。

(2)OLTP

オンライントランザクション処理のことでデータベース操作のこと。

(3)レプリケーション

レプリケーションとはアルデータベースのデータを定期的に繰り返し複製することである。

(4)ソースデータベース

複製元のデータベースをソースデータベースと呼び、ソースデータベース保持のコンピュータをパブリッシャと呼ぶ。

(5)パブリッシャ

・ソースデータベースを保持する。
・ディストリビュータにデータベースの変更内容を知らせる

(6)ディストリビュータ

・データベースの変更に関する情報を保持する
・変更に関する情報をサブスクライバに送る

(7)サブスクライバ

・データベースのコピーを保持する。
・ディストリビュータからの情報に基づきコピーを更新する。

(8)競合

ソースデータベースとサブスクライバのコピー双方で同じデータに対し違う変更が加えられていることを競合と呼ぶ

(9)分散トランザクション

分散トランザクションとは分散データベース環境における運用方式である。その他レプリケーション方式という方法がある。

(10)2フェーズコミット

分散トランザクションにおけるトランザクションのコミットを標準フェーズとコミットフェーズに分けて2段階に分けて行う方式である。

(11)MS DTC

分散トランザクションを行う場合において、複数のサーバーに同時にトランザクションを実行する状況において、ロールバックを防ぐために2フェーズコミット方式を行う場合に使用するサービス名称。

(12)準備コマンド

2フェーズコミットの準備フェーズ、コミットフェーズのうち、準備フェーズの段階において複数サーバーに送るコマンドのこと。

(13)コミットコマンド

2フェーズコミットのコミットフェーズの段階において準備コマンド完了後に複数サーバーに送るコマンドのこと。

(14)ロールバックコマンド

MSDTCにより、コミット完了コマンドが複数サーバーよりすべて正常に完了されなかった場合において、正常に完了しなかったという通知を送るコマンドのこと。

データベース セキュリティ管理

Categories:  MCA Database

1. SQL Serverのユーザーロール

(1).ユーザー確認のステップ

SQLServerのユーザーの確認は次の3つの段階に分かれています。
①SQLServerのデータベースを利用するユーザーログインアカウント(認証)を持っているか確認
②データベースユーザーとして登録がされているか確認
③データベースの何らかの操作の許可(権限)をもっているか確認

(2)ログインアカウント種類

①標準アカウント
②Windowsユーザーアカウント
③windowsグループアカウント

(3)ログイン認証

①windows認証モード
 SQLServerのログインアカウントによるログインはできず、WINDOWSユーザーはSQLServerのユーザーとして登録する必要があります。
②混合モード
 SQLServer認証とWINDOWS認証のうちどちらかで認証が行われるモードです。

(4).データベースユーザー

 ログインアカウントとは別に利用するデータベースごとにデータベースユーザーとして登録が必要です。また、ユーザー別にそのユーザーのユーザーアカウントを登録するデータベース、登録しないデータベースに分けることができます。

2.権限とロール

権限とはデータベースのデータに対して何らかの操作に対する許可のことであります。

(1).権限の種類

権限にはオブジェクト権限、ステートメント権限の二種類があります。データベースのオブジェクト(テーブル、列、ビュー、ストアドプロシージャ、関数)を操作するための権限です。権限の種類には次の種類があります。
①SELECT:テーブルやビューのデータを抽出するための権限
②INSERT:テーブルやビューに行を挿入するための権限
③UPDATEテーブルやビューの行を更新するための権限
④DELETE:テーブルやビューの行を削除する為の権限
⑤REFERENCES:テーブルの中の列を外部キーの参照先にする為の権限
⑥EXECUTE:ストアドプロシージャを実行する為の権限

(2)ステートメント権限

データベースやテーブルなどのオブジェクトを作成するための権限です。ステートメント権限は通常システム管理者や開発者にのみ与えられ権限です。
①Create table:テーブルを作成するための権限
②Create View:ビューを作成する為の権限

(3)ロール

ロールは権限ユーザーのグループであり、SQLServer管理者より与えられる。ロールには固定サーバーロール、固定データベースロール、ユーザーデータベースロールの三種類があります。
①継承
ロール権限がそのまま所属ユーザー権限になること

(4)固定サーバーロール

固定データベースロールもインストールと同時に作成されるロールであり、このロールにはサーバーレベルの管理者となるユーザーのログインアカウントとして使用します。固定サーバーロールには管理者として適切な権限があらかじめ与えられているのでどのような権限を与えればよいのかを特に設定する必要はありません。固定サーバーロールを追加、削除、変更することはできません。固定サーバーロール種類には次のロールがあります。
①Sysadmin:サーバー上のあらゆる操作が行える
②Serveradmin:サーバーのシステムオプションの設定やSQLServerのシャットダウンができる。
③Setupadmin:起動時に実行するストアドプロシージャの管理が行える
④Securityadmin:セキュリティ管理に関する作業が行える
⑤Processadmin:サーバー上のプロセス管理に関する作業が行える
⑥Dbcreater:データベース作成、変更、削除ができる。
⑦diskadmin:ディスク上のファイルの管理に関する作業が行える
⑧Bulkadmin:Bulk INSERTトリートメントが実行できる

(5)固定データベースロール

固定データベースロールもインストールと同時に自動的に作成されるロールです。固定サーバーロールと異なるのはこのロールにはサーバーレベルではなくデータベースレベルの管理者となるユーザーをログインアカウントとして使用される点です。固定データベースロールには次の種類があります。
■固定データベースロールの種類
①Db_owner:データベースでのあらゆる操作を実行できる
②Db_accessadmin:データベースのユーザー、グループ、ロールの追加、削除ができる
③Db_ddladmin:データベースオブジェクトの追加、変更、削除ができる
④Db_securityadmin:セキュリティ管理にかんする操作ができる。
⑤Db_backupoperator:データベースのバックアップに関する操作ができる
⑥db_datareader:データベース内のすべてのテーブルのデータ読み取りができる
⑦Db_datawriter:データベース内のすべてのテーブルに対してデータの更新(追加、変更、削除ができる)
⑧db_denydatareader:データベース内のすべてのテーブルに対してデータの読み取りができない
⑨db_denydatawriter:データベース内のすべてのテーブルに対してデータ更新(追加、変更、削除)ができない。
⑩その他、dbo:データベース所有者、public:一般ユーザーを所属させるロールがある。

(6)ユーザー定義データベースロール

このロールはSQLServerによって自動的に作成されるのではなく、ユーザーが自ら作成するロールです。

3.まとめ

(1)ログイン

SQLServerのデータベースを利用するユーザーはSQLServerへの接続を行う必要があります。

(2)認証

SQLServerは正規のユーザーであることを確認する2種類の認証モードがあり、Windows認証モード、混合モードとあります。

(3)アカウント

SQLServerへログインする為の、ユーザーアカウントです。

(4)権限

権限とはデータベースのデータに対して何らかの操作に対する許可のこと。権限にはオブジェクト権限、ステートメント権限の2種類があります。

(5)データベースユーザー

データベースに対しての操作を行うためにユーザーが正規のデータベースユーザーとして登録してある必要があります。

(6)ロール

サーバー、データベースのユーザーのグループのことで、権限はSQLServerの管理者によって定められています。

データベース Transact-SQL

Categories:  MCA Database

1.Transact-SQL

SQLはANSIによって規格が定められた標準のデータベース言語であり、最新の規格はANSI SQL-92であり、Transact-SQLはSQL Serverで使用するSQL言語です。

(1)Transact-SQLの分類

データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つに分類され、Transact-SQLの命令のことをステートメント(問合せ、クエリ)と呼びます。

DDL:create,alter,drop

DML:Select,Insert,Update,Delete

DCL:Grant,Revoke,Deny

 

(2)Transact-SQLの処理の流れ

ステップ1.解析

発行されたクエリがTransact-SQLの構文規則に照らして正しいかどうかチェックされる

ステップ2.標準化

クエリの中から冗長な部分が探されそれを排除することでクエリを効率的に処理しやすい形に変換する。

ステップ3.最適化

クエリの評価が行われ、その結果をもとに最も効率的な実行の方法がどのようなものかが判断される。

ステップ4.コンパイル

クエリが人間に読める形式のものからコンピュータに読める形式のものに変換される。

ステップ5.実行

コンパイルによってできた実行コードが実行される。

 

(3)データ型とは

データベースに格納されるデータにはさまざまな種類があり、その種類のことをデータ型と呼びます。

① int:正または負の整数

②decimal:固定小数点数

③numeric:decimalと同じ

④float:浮動小数点数

⑤money:金額

⑥datetime:日付と時刻

⑦char:固定長の文字列

⑧varchar:可変長の文字列

⑨text:固定長の文字列

⑩binary:バイナリデータ

⑪image:画像データ

 

2.データの抽出

(1)Selectステートメント

Select <列名> FROM <テーブル名> WHERE <検索条件>、複数の列を指定する際には列名と列名の間を,で区切ります。

(2)複数の列が検索対象になる場合

検索対象が複数になる場合は<*>の記号を使用します。

SELECT * FROM 社員データ WHERE 社員番号=001

 

(3)比較演算子

比較演算子には次の記号を使用します。

①= 等しい

②> 大きい

③< 小さい

④>= 以上

⑤<= 以下

⑥< > IWOjD

(4)ワイルドカード文字

あいまい検索をする場合、ワイルドカード文字を使用します。
Where句の検索条件の指定にはワイルドカード文字を使用することもできます。%,-,[],[^]

①select * from 社員データ where 社員名 Like ‘赤%’

この場合は社員データテーブルの中の赤で始まる社員の行を抽出します。

②Select * from 社員データ where 社員名 Like ‘赤-‘

社員データテーブルのすべての列殻社員名が赤から始まる2文字になっている行を抽出します。

③Select * from 社員データ where 社員名 like ‘赤[坂羽尾]’

社員データテーブルの全ての列から社員名が赤で始まる2文字目が坂、羽、尾になっている行を抽出します。

④Select * FROM 社員データ where 社員名 Like ‘赤[^尾]’

この場合は2文字目が尾でない行を抽出します。

 

(5)論理演算子

論理演算子には AND,OR,NOTなどがあります。

①* Select * from 社員データ Where 社員名 Like ‘赤[^尾]’ AND 社員番号 >001
②* Select * from 社員データ where 社員名 like ‘赤[^尾]’ OR 社員番号 >001 AND 給与 >=200000
③* Select * from 社員データ where (社員名 like ‘赤[^尾]’ OR 社員番号 > 001) AND (給与 >=200000)

(6)算術演算子

算術演算子は+,-,*,/,%があります。

 

(7)BETWEEN演算子

①Select * from 社員データ where 社員番号 Between 001 and 003

Between演算子を使用した場合も比較演算子を使用した場合もコンピュータ内部での処理やステートメントの実行速度に違いはありません。

(8)IN演算子

IN演算子はSELECTステートメントの中でIN演算子の後に続くデータから選択し抽出する場合に使用します。

①Select * from 社員データ Where 社員名 IN(“田中’,’鈴木’,’佐藤’)

OR演算子を使用すると次のように書き換えられます。

②Select * from 社員データ where 社員名 =’田中’ or 社員名 =’鈴木’ or 社員名=’佐藤’

(9)NULL

データベースのデータ欠落のことをNULLといい、データベースからNULLの部分を検索するにはIS NULL演算子と呼ばれる演算子を使用します。

①Select * from 社員データ Where 電話番号 IS NULL

逆にNULLになっていない行を抽出するにはIS NOT NULL 演算子と呼ばれる演算子

②Select * from 社員データ where 電話番号 IS NOT NULL

(10)ORDER BY句

ORDER BY をSelectステートメントに入れると行を昇順にソートすることができます。

①Select * from 社員データ where 社員番号 >=001 order by 社員番号 ASC

ソートを昇順から降順にする場合はDESCを使用します。

②Select * from 社員データ where 社員番号 >=001 order by 社員番号 DESC

(11)Distinct

Selectステートメントによっては処理結果(導出テーブル)に重複する行ができてしまうがSelectステートメントにDistinctを使用すれば解消できます。
この場合は社員データテーブルから社員番号001以上のデータを重複しないで抽出します。

①Select DISTINCT * from 社員データ Where 社員番号 >=001

(12)列名の変更

①列名変更、ASの使用
Select 社員番号 AS 社員ID FROM 社員データ
社員番号を社員IDとして抽出します。

②スペースを使用する場合

Select 社員番号 社員ID FROM 社員データ

③=を使用

Select 社員番号 = 社員ID FROM 社員データ

(13)集計関数

集計関数は次の関数があります。

①AVG:平均値を求める

②Count:行数を求める

③MAX:最大値を求める

④MIN:最小値を求める

⑤SUM:合計値を求める

集計関数を使用した例は次の通りです。

①AVG関数の例

Select AVG(給与) AS ‘給与の平均値’ FROM 社員データ

社員データテーブルから給与平均値として給与の平気を抽出します。

②COUNT関数の例

Select count(社員名) AS ‘社員名’ FROM 社員データ

③SUM関数の例

Select SUM(給与) AS ‘給与の合計値’FROM 社員データ

社員データテーブルの給与例のデータの合計値を求めるステートメントです。

 

(14)GROUP BY句

テーブルの行を特定の列のデータを基準にしてグループに分けます。この関数を使用した場合はグループごとに合計値、平均値、最大値を求めることができます。

①Select 部署コード,SUM(給与) AS ‘部署ごとの給与の合計値’ FROM 社員データ GROUP BY 部署コード
社員データテーブルの給与列のデータの合計値が表示される列には部署ごとの給与の合計値という名前で抽出します。

(15)HAVAING句

HAVING区は集計関数とGROUP BY句で求めたグループごとの合計値や平均値から特定の条件を満たすものだけを抽出するための句です。

①Select 部署コード,AVG(給与) AS ‘部署ごとの給与の平均値’ FROM 社員データ GROUP BY 部署コード HAVING AVG(給与) >=200000
この場合は社員データテーブルの給与列のデータの平均値を部署別に求めさらにその中から20万以上になっているものを抽出します。

3.副問合せ

Selectステートメントの中にSELECTステートメントを更に埋め込むことを副問合せと呼ぶ。この場合は副問合せから実行しその処理結果を利用して外側のステートメントが実行されます。
副問合せをサブクエリと呼びます。ただしSQL Serverでは副問合せの中にさらに副問合せを埋め込むことは原則として認められていません。

■使用例
この場合は商品データテーブルから単価を平均価格とし、その平均価格以上の単価の商品名、単価、平均価格を抽出します。

Select 商品名,単価,(Select AVG(単価) FROM 商品データ) AS 平均価格 FROM 商品データ WHERE 単価>=(SELECT AVG(単価) FROM 商品データ)

4.相関副問合せ

外側のSELECTステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せです。相関副問合せの処理は次の手順で進みます。

手順1.外側のSELECTステートメントで選択されたデータのうち1行目が内側のステート面とに渡されます
手順2.渡されたデータに対して内側のSELECTステートメントが実行され、その事項結果が外側のSELECTステートメントに渡されます。
手順3.外側のSELECTステートメントが渡された実行結果のうち条件に合うものだけを導出テーブルに組み込みます。
手順4.外側のSELECTステートメントで選択されたデータがなくなるまで1-3の処理が繰り返されます。

■使用例

Select 商品コード.売上金額 FROM 商品データ AS P1 WHERE P1.売上金額 <= (SELECT AVG (P2.売上金額) FROM 商品データ AS P2 WHERE P2.商品コード AS P2 WHERE P2.商品コード=P1.商品コード)
このステートメントを実行すると売上金額が全商品の平均値以下になっている商品が検索され、その商品コードと売上金額を格納した導出テーブルが作成されます。A.Bというようにピリオドで区切られているステートメントでは左側にあるAはテーブル名をを示し、右側になるBはそのテーブルAの列名を示します。

5.EXISTSキーワード

EXISTSキーワードは相関副問合せに使用するもので、特定の条件を満たす行がテーブル中に存在するか否かを外側の問合せに知らせるサブクエリを作成するためのキーワードです。

Select 社員番号,社員名 FROM 社員データ AS s WHERE EXISTS(Select * from 誕生日データ as b where s.社員番号=b.社員番号 and b.生年月日 =’66/5/26’)
このステートメントを実行すると生年月日が66/5/26である社員があるか検索され該当する社員がいればその社員の社員番号と名前を格納した導出テーブルが作成されます。

①共通集合演算と差集合演算

差集合演算はNOT EXISTSキーワードを使用し、テーブルA,Bについて共通集合演算を行うステートメントです

Select * from A where EXISTS (Select * from B where<Aの主キー>=<Bの主キー>)

差集合を行うステートメントは次の通りです。

Select * from A where NOT EXISTS (Select * from B where <Aの主キー>=<Bの主キー>)

6.テーブルの結合

同時に複数のテーブルを対象として検索を行わねばならない為、テーブルの結合を行う場合があります。

(1)内部結合

結合の対象となるテーブルの間で共通の列を比較し同じデータをもつ行だけを抽出します。通常結合とは基本内部結合を指します。内部結合を行う場合はFROM句でINNER JOINを使用します。

■構文 Select 社員データ.*,部署コードと部署名.* FROM 社員データ INNER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード

■直積集合演算
テーブルA,Bの間で直積集合演算を行うステートメントです
SELECT A.*,B.*FROM A INNER JOIN B

 

(2)外部結合

内部結合に対し共通する列のデータが結合するテーブルの間で一致していない行も残すという場合は、外部結合と呼びます。外部結合には左外部結合と右外部結合という二つの種類があります。
左外部結合はテーブルAについてはすべての行を残し、テーブルBについてはテーブルAと共通する列のデータが一致しているものだけを残し、右外部結合はテーブルBについてはすべての行を残し、テーブルAについてはテーブルBと共通する列のデータが一致しているものだけを残します。

 

(3)左外部結合

 

Select 社員データ.*,部署コードと部署名.* FROM 社員データ LEFT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード

 

(4)右外部結合例

Select 社員データ.*,部署コードと部署名.* FROM 社員データ RIGHT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード = 部署コードと部署名.部署コード

 

7.結果の結合

これにはUNIONという演算子を使用しUNION演算子を使用します。

■構文
Select ステートメント UNION Select ステートメント

■例 Select 商品コード,売上金額 From 1月の売上データ UNION Select 商品コード,売上金額 FROM 2月の売上データ
このステートメントは1月の売上データテーブルの商品コードの列、売上金額列を2月の売上データテーブルの商品コード列、売上金額列を結合させます。
UNION演算子を使用した処理は和集合と同じものになります。

8.データ更新

(1)INSERT

INSERTステートメントはテーブルに新しい行を一つ追加するステートメントです。

■構文 INSERT <テーブル名><列名> VALUES <追加するデータ>
■例 INSERT 社員データ(社員番号,社員名) VALUES (005,’小田’)

 

(2)UPDATEステートメント

■構文 UPDATE<テーブル名> SET<列名> =<更新後のデータ> where <更新対象となる行を限定する条件>

■例 UPDATE 社員データ SET 社員名=’渡部村子’ Where 社員番号=005

更新対象となる行を限定する条件の指定によっては一度に複数の行を更新対象にできます。

(3)DELETEステートメント

テーブルの既存の行を削除するというステートメントです。

■構文 DELETE <テーブル名> where <削除する行を限定する条件>

■例 DELETE 社員データ WHERE 社員番号=005

(4)SELECT INTOステートメント

SELECT INTOステートメントは既存テーブルからデータを取り出して新しいテーブルに格納するというステートメントです。

■構文 SELECT <列名> INTO <新規のテーブル名> FROM <既存テーブル名> where <検索条件>

■ローカル一時テーブル、グローバル一時テーブル

ローカル一時テーブルはそのテーブルを作成したセッションでのみ使用できる一時テーブルのこと、グローバル一時テーブルはそのテーブルを作成した以外のセッションでも使用できる一時テーブルです。ローカル一時テーブルはテーブルの前に#を付加し、グローバル一時テーブルはテーブル前に##を付加します。

■例 Select * INTO #社員データ004以降 FROM 社員データ WHERE 社員番号 >=004

(5)INSERT INTOステートメント

■構文 SELECT INTO <テーブル名><Selectステートメント>

■例 INSERT INTO 社員データ2 SELECT * FROM 社員データ

社員データテーブルの中のすべての列からデータを抽出し、社員データ2テーブルに格納せよというステートメントです。

9.データベース定義

(1)データベースの作成

データベースを新規に作成するにはCREATE DATABASEステートメントを使用します。SQL ServerではCreate Databaseによりデータファイルとログファイルを作成するステートメントです。

■構文 

Create DATABASE <データベース名> ON (NAME =<論理ファイル名>,FILENAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>) LOG ON (NAME=<論理ファイル名>,FILE NAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>)

①<データベース名>

作成するデータベースの名前を指定します。

②<論理ファイル名>

データファイル、ログファイルの論理名を指定する。論理名とはSQL言語でそのファイルを扱う際に使用するファイル名である。

③<物理ファイル名>

データファイル、ログファイルの物理名を指定する。物理名とはWindows上でエクスプローラなどを使って普通にファイルを扱う際に使用するファイル名

④<初期サイズ>

データファイルとログファイルの初期サイズを指定する。

⑤<最大サイズ>

データファイルとログファイルを最大でどのくらいの大きさまで拡張できるかを指定する。

⑥<増分値>の部分

データファイル、ログファイルを拡張する際、どのくらいの単位で拡張するかを指定する。

■CREATE DATABASE使用例
CREATE DATABASE Sample ON(NAME=Datafile,FILENAME=’c:\ProgramFiles\data\sampledata.mdf,Size=5MB,MAXSIZE=5MB,FILEGROWTH=1MB)
LOG ON (NAME=Logfile,FILE NAME=’c:\Program FILES\DATA\LogSample.ldf’,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB)

10.データベース拡張

データベースのデータファイルやログファイルの拡張が必要になる場合はALTER DATABASEステートメントを使用します。データベースのサイズ拡張には次の3つの方法があります。

①データファイル、ログファイルが自動的に拡張されるように設定
②データファイルやログファイルのサイズを手作業で変更
③手作業でデータファイル、ログファイルを新たに追加する

■使用例
ALTER DATABASE Sample ADD FILE(NAME=Datafile2,Filename=’c:\ProgramFiles\Data\SampleData2.ndf’,Size=5MB,MAXSIZE=20MB)
ALTER DATABASE Sample MODIFY FILE(NAME =Logfile, SIZE=2MB)

11.テーブルの作成と削除

テーブルの作成にはCREATE TABLEステートメントを使用します。
■構文 CREATE TABLE <テーブル名>(<列名><データ型> NULL|NOT NULL)

NULL|NOT NULLについては列にNULLを入れるかどうかを指定します。

■使用例 Create table 社員データ(社員番号 int NOT NULL,社員名 varchar(20) NOT NULL,給与 money NULL

このステートメントは社員データという名前のテーブルが作成され、このテーブルにはNULLが許可されない社員番号(整数)、NULLが許可されない社員名(文字データ)NULLが許可される給与の列ができます。テーブルの削除にはDROP TABLEステートメントが使用されます。

■構文 DROP TABLE<テーブル名>

 

12.ビューの作成

ビューは使用頻度の高い検索(SELECTステートメント)の内容をデータベースにあらかじめ記憶させておくものであるが、検索を行うことによってその結果によってテーブルが作成されるのでデータが保存されていない仮想的なテーブルと見ることができます。ビューの作成にはCREATE VIEWステートメントというステートメントを使用します。

■構文 CREATE VIEW <ビュー名> AS <SELECTステートメント>
■使用例 Create View 給与20万以上の社員リスト AS Select * FROM 社員データ Where 給与 >=200000
■ビュー使用のメリット

①ユーザーに必要なデータだけを集めることができる。
②複雑なデータベース、テーブルを用意に使用できるものにする。
③不適切なユーザーにテーブルの使用権限を与えずにすむ。

 

13.整合性制約の定義

データベースのデータは一環していて矛盾がなく、正確なものである必要がある。それを整合性と呼ばれるが、整合性には3つの種類があります。

①ドメイン整合性

ドメイン整合性とは列のデータが一定の条件に適合したものであること

②実態整合性

テーブルのデータに重複がないことを意味する。

③参照性合成

外部キーと参照先の列のデータに矛盾がないことを意味する。

(1)ドメイン整合性

ドメイン整合性を維持するには、DEFAULT制約、CHECK制約を定義します。

①Default制約

DEFAULT制約とはINSERTステートメントの列の規定値を指定する為のルールです。INSERTステートメントが列にどのようなデータを入れるかを指定しなかった場合、自動的に列に入力されるデータのことです。

■DEFAULT制約構文例

CONSTRAINT <制約名> DEFAULT <規定値>
<制約名>:制約の名前を指定する
<規定値>:規定値を指定する

DEFAULT制約の制約名の先頭には通常DFをつけます。

■使用例

ALTER Table 社員データ ADD CONSTRAINT DF_depcode DEFAULT 001 FOR 部署コード

社員データテーブルの部署コードの列の規定値を001にするDF_depcodeという名前のDEFAULT制約の名前です。

 

(2)CHECK制約

■CHECK制約
CHECK制約はテーブルの列に入力する値に制限をかけ、規定外のデータがテーブルに入力されることがなくなります。
■CHECK制約構文 Constraint <制約名> CHECK(<条件式>)
CHECK制約の制約名の先頭には通常CK_をつけます。
■使用例
ALTER TABLE 社員データ ADD CONSTRAINT CK_pay CHECK(給与>=200000)
このステートメントは社員データテーブルの給与列のデータを20万以上に制限します。

(3)実態の整合性

実態の整合性を維持するにはPRIMARY KEY制約、UNIQUE制約を定義します。PRIMARY KEYの制約は次の通りです。この制約はテーブルの主キーを制約するためのもの。以下の3点に注意します。

①主キーは各テーブルに一つだけ指定することができる
②主キーとなった列ではNULLは許可されない
③主キーとなった列に関してはインデックスが自動的に作成される。このインデックスはデータ重複が排除される。

■PRIMARY KEY制約構文例

CONSTRAINT <制約名> PRIMARY KEY CLUSTERED | NONCLUSTERED(<列名>)
CLUSTERD|NONCLUSTEREDは自動的に作成されるインデックス種類の選択であり、CLUSTEREDはクラスタ化インデックス
NONCLUSTEREDは非クラスタ化インデックスが作成されます。PRIMARY KEY制約の制約名先頭には通常PK_をつけます。

■PRIMARY KEY使用例
ALTER TABLE 社員データ ADD CONSTRAINT PK_empid PRIMARY KEY CLUSTERED(社員番号)
社員データテーブルの社員番号列を主キーとするステートメントであります。

(4)UNIQUE制約

主キー以外の列に関してデータ重複を排除するためのものであり、この制約を定義した例ではデータ重複ができません。UNIQUE制約を定義する際は次の点に注意します。

①各テーブルには複数定義できる
②NULLは列につき一つだけ許可される。
③UNIQUE制約を定義した列に関してはインデックスが自動的に作成される。このインデックスではデータ重複が排除される

■UNIQUE制約構文例

CONSTRAINT <制約名> UNIQUE CLUSTERED|NONCLUSTERED(<列名>)

UNIQUE制約の制約名の先頭には通常UK_をつける。

■使用例

ALTER TABLE 社員データ ADD CONSTRAINT UK_depcode UNIQUE ClUSTERED(部署コード)

社員データテーブルの部署コード列からデータの重複を排除するステートメント

(5)参照整合性

①FOREIGN KEY

参照整合性を維持するにはFOREIGN KEY制約を定義します。

■構文例

CONSTRAINT <制約名>FOREIGN KEY(<制約>)REFERENCES <テーブル名>(<列名>)

FOREIGN KEY制約の制約名の先頭には通常FK_をつけます

■使用例

ALTER TABLE 部署データ ADD CONSTRAINT FK_empid FOREIGN KEY(社員番号) REFERENCES 社員データ(社員番号)

この場合は部署データテーブルの社員番号の列を外部キーとするステートメントである、参照先となるのは社員データテーブルの社員番号列です。

②CASCADE/NOACTION

その他CASCADE、NOACTIONといったオプションを指定することもできます。
CASCADEオプションを指定すると連鎖参照整合性と呼ばれる整合性が維持されるようになります。これは参照先の列のデータが変更・削除されるとそれにともなって外部キーでもデータが変更・削除が行われます。NOACTIONオプションは参照先の列でデータの削除、更新ができなくなります。

■構文例

CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE CASCADE|ON UPDATE CASCADE

CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE NOACTION | ON UPDATE NOACTION

尚、ON DELEATE NOACTION、ON UPDATE NOACTION は規定値なので何も指定しないと自動的にこのオプションは有効です。

 

14.問合せの最適化

SQLServerにはクエリオプティマイザと呼ばれる機能があり、これによって問合せの処理が最適化されます。最適化とは処理のために必要となるコンピュータ資源をできる限り減らし、処理速度を向上させることができます。

(1)最適化手順

SQLステートメントの評価を行い、その結果をもとに最適な実行方法(実行プラン)がどのようなものかを判断します。SQLステートメントの評価としては次の方法があります。

[SQLステートメント評価]

①問合せ対象となるテーブルについてインデックス有無を調べる。インデックスがあればそれが問合せ効率化にどの程度役に立つか調べる
②問合せでテーブルを結合する場合は最も効率的な結合の順序や結合方法を判断する。
③実行プランを立てその中でページの入出力、CPU使用率が最も低いと思われるものを選択する。

[コストページ最適化]

ページI/O,CPU使用率をまとめてコストと呼びます。クエリオプティマイザはコストが最も低い実行プランを選択するが、この最適化の方法をコストベースの最適化と呼びます。

 

(2)結合最適化

クエリオプティマイザには問合せ中に結合演算が含まれています。選択肢となる結合方法は、ネスト化ループ結合、マージ結合、ハッシュ結合の三種類があります。

①ネスト化ループ結合

結合する二つのテーブルのうち一方が外部テーブル、もう一方を内部テーブルとし、外部テーブルから一行選択されその行と結合できる行が内部テーブルのすべての行の中から検索される。
結合対象となるデータが比較的少ない場合に有効である。

②マージ結合

二つのテーブルからそれぞれ1行が選択され、比較される。両者が一致しなければ小さいほうのデータが破棄されそのデータが属するテーブルから次の行のデータが取り出され、再度比較される。
マージ結合はテーブルのデータがあらかじめソートされている場合に有効な方法である。

③ハッシュ結合

基準となるハッシュキーとする列とし、ハッシュテーブルで一致したものは結合作成されるテーブルに組み込まれる。
ハッシュ結合はテーブルにインデックスがない場合や、インデックスがあってもあまり役立たない場合に有効である。

 

15.まとめ

(1)ANSI SQL-92とは

1992年に制定されたSQL言語

(2)データ定義言語(Data Definition Language)とは

データベースのオブジェクトを作成する、オブジェクトに関する設定を変更する、オブジェクトを削除するなどの用途に使用される言語

(3)データ操作言語(Data Manipulation Language)とは

データベースの検索、データの追加、更新、削除などの用途に使用される言語

(4)データ制御言語(Data Control Language)とは

データベースオブジェクトに対する権限の制御に使用される言語

(5)データ型とは

データベースに格納されるデータの種類であり、主なところはINT,maney,charなどがある。

(6)比較演算子とは

比較演算子はWhere句で使用される演算子であり、=,>,<,>=,<=,<>がある。

(7)ワイルドカード

Where句の検索条件の指定で文字列の代わりに使用できる文字でありワイルドカード文字と呼ぶ。
%,-,[],[^]がある、

(8)論理演算子

Where句の検索条件に条件を指定する場合に使用する。演算子にはAND,OR,NOTがある。

(9)算術演算子

数値に関して加減乗除などの算術演算を行うことが可能である。算術演算子は加算+,減算-,乗算*,除算/,剰余%とある。

(10)集計関数

集計関数とはデータベースのデータについて、平均値、最大値、最小値、合計値などを求めるための関数の総称。

AVG:平均値
COUNT:行数を求める
MAX:最大値を求める
MIN:最小値を求める
SUM:合計値を求める

(11)副問合せ

Selectステートメントの中にSELECTステートメントを埋め込むことができ、それを副問合せと呼ぶ。

(12)相関副問合せ

相関副問合せとは外側のSelectステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せである。

(13)結合

同時に複数のテーブルを対象として複数のテーブルを組み合わせて新たな一つのテーブルを作成する。

(14)UNION演算子

複数のSELECTステートメントの実行結果を結合するもの。
SELECT ステートメントUNION SELECT ステートメントで結合する。

(15)整合性

データベースのデータが一貫していて矛盾がなく、正確なものであること。

(16)クエリオプティマイザ

問合せ資源の最適化処理のこと。

データベース アーキテクチャ

Categories:  MCA Database

1.物理アーキテクチャ

(1)データファイルとトランザクションログファイル

SQLServerではすべてのデータベースがデータファイルとトランザクションログファイルから構成されています。データファイルはデータベースのすべてのオブジェクトを格納するファイル、トランザクションログファイルはデータベースにどのような変更が加えられたかを記録するファイルです。データファイルはmdf、トランザクションログファイルの拡張子はldfとなる。またセカンダリデータファイルを作成する場合は拡張子はndfです。

(2)ページとエクステント

SQLServerではデータは8KBごとにブロックに分けて格納され、このブロックをページと呼び8つのページの集合をエクステントと呼ばれています。

(3)データアクセス方法

SQLServerではデータをアクセスするにはテーブルスキャンという方法とインデックスを利用する方法があります。テーブルスキャンはテーブルのデータから直接必要なデータを検索し、抽出する方法、インデックスは書籍の目次から索引するような方法でデータに指標をつけ取り出す方法です。
テーブルスキャンはテーブルのすべてのページのすべての行を順に検索し、指定の条件に合致する行を取り出します。インデックスを地用したアクセスの場合はインデックスを検索し、その中から指定の条件に合致したデータを取り出します。

 

2.インデックス設計

(1)インデックス

インデックスとはテーブルのデータを効率よく検索できるよう作成するデータのことです。データベースのインデックスはテーブル中の特定の列のデータを抽出してファイルにまとめたものです。インデックスの作成された列のことをインデックス列と呼び、インデックス列内のデータをキー値と呼び、複数列をまとめてインデックスにしたものを複合インデックスと呼んでいます。

(2)インデックスのメリットとデメリット

インデックスを作成すればデータへのアクセスを効率化できるが、大量のディスクが必要になり、データ更新時のオーバーヘッドが大きくなるデメリットが生じてきます。インデックスを作成すべきかどうかは各列についてメリットとデメリットを考慮して決めていきます。

①インデックス作成でメリットがある列

・主キーと外部キー
・頻繁に検索される列
・行がソートされた状態で利用されることが多い列

②インデックス作成でメリットがない列

・ほとんど参照されない列
・データの重複が多い列
・頻繁に行う検索で大部分の行が抽出される列

(3)インデックスの種類

SQL Serverのインデックスにはクラスタ化インデックスと非クラスタ化インデックスの2種類があります。

①クラスタ化インデックス

クラスタ化インデックスはインデックスの階層構造の再開レベルがデータベースになるインデックス方式であり、インデックスは一つのテーブルにつき1つしか作成できません。

②非クラスタ化インデックス

非クラスタ化インデックスはインデックスの階層構造とデータページが完全に分離したインデックスであり、非クラスタ化インデックスのリーフレベルにある各行のデータにはどのデータファイルでどのデータページのどの行に格納されているのか識別子が必要です。このインデックスを使用した場合はデータページのデータはソートされません。非クラスタインデックスはテーブル1つ249個まで作成が可能です。

 

3.逆正規化

逆正規化とはデータベースをあえて正規化にしないこと、一般に正規化を行えばデータベースは重複のない扱いやすいものになりますが、正規化することでテーブルが複数になり検索が非効率になってしまうということもあり得るため、正規化を行わないケースがあります。

(1)テーブルの変更時の整合性に問題

逆正規化を行ったテーブルの場合、データを変更することによって矛盾が生じるデータがあります。細心の注意を払ってデータの変更を行う必要があります。

(2)検索の仕方によっては非効率

正規化によって2つに分割されるテーブルの両方を対象に行わなければならない検索、逆正規化によって効率があがりますが、逆正規化によってテーブルが大きくなってしまうため、非効率になるケースもあります。

 

4.まとめ

①データファイルとは?

データベースの全てのオブジェクトを格納するファイル

②トランザクションログファイルとは?

データベースがどのような変更が加えられたか記録するファイル

③ページとは?

データは8KBごとにブロックに分けて格納されるがこのブロック1単位のこと

④エクステントとは?

ページが8つ集合した単位をエクステントと呼びます。

⑤テーブルスキャンとは?

テーブルのデータから直接必要なデータを検索し抽出する方法

⑥インデックスキーとは?

インデックスとはテーブルのデータを効率よく検索できるよう作成するデータであり、データベースのインデックスはテーブル中の特定の列のデータを抽出してファイルにまとめたもの。

⑦B-Tree

行の数が増えてルートページに入りきらなくなった場合は新たなページが割り当てられ残りの行はそのページに格納される。インデックスページが増えると階層構造になりこのようにしてページを増やしていく方式をB-Treeという。

⑧クラスタ化インデックス

クラスタ化インデックスはインデックスの階層構造の最下位レベルがデータページになるインデックスである。

⑨非クラスタ化インデックス

インデックスの階層構造とデータページが完全に分離したインデックスのこと。

⑩逆正規化

データベースをあえて正規形にしないことであり、正規化をしないことでテーブルを増やす必要がなくなる。正規化による検索効率が下がるのを防ぐ。

⑪リーフレベル

階層構造の再開のレベルにあるページのことでそれ以外のページを非リーフレベルと呼びます。

データベース SQLServer

Categories:  MCA Database

1.SQL Serverのアーキテクチャ

SQLServerはDBMS(Database management System)の代表例であり、リレーショナルデータベースに対応することからRDBMS(Relational Database Management System)と呼ばれています。RDBMSの他の例としてはOracleがあります。

SQLServerの機能としては点があります。

(1)SQL Serverの機能

①トランザクション処理
②データを分析する
③データベースアプリケーションの作成を支援
④データベースアプリケーションの実行

 

2.SQL Serverの歴史

①SQLServer1.0(1989年発表)

UNIX向けDBMSだったサイベース社のSybaseをもとにOS/Sに移植されたのが始まりです。

②SQLserver4.2(1994年発表)

Windows NTに対応されました。

③SQLServer6.0(1995年)―SQLServer6.5(1996年発表)

WindowsNT用のDBMSで4.2を拡張したものです

④SQLServer7.0(1999年)

マイクロソフト独自の特性を持つようになり、アーキテクチャ、管理を自動化する機能も多く取り入られるようになりました。このバージョンではWindowsNT、Windows2000両方に対応しています。

⑤SQL Server2000(2000年発表)

インターネット対応機能が充実、小規模から大規模なシステムにまで対応できるスケーラビリティ、信頼性の向上が追加されました。

 

3.SQLServerの4つのサービス

SQLServerにはインストール時にデフォルトで4つのサービスがインストールされます。MS SQLServer、SQLServerAgent、MSDTC(Microsoft Distributed Transaction Coordinator)、Microsoft Searchの4つがあります。

①MSSQLServerサービス

データベースエンジンであり、データ追加、削除、変更といった処理を実際に行うプログラムです。その他データベースのデータを管理する機能もあります。

②SQLServerAgentサービス

データベースバックアップなどの管理作業を定期的、自動的に行うサービスです。管理作業を行うスケジュールはユーザーが指定できます。

③MSDTC

分散トランザクション処理を管理するサービスであり、分散トランザクション処理時にサーバー間のデータ矛盾が起きることを防止できます。

④Microsoft Search

全文検索エンジンであり、全文検索に必要なインデックスを作成し、保守する機能を持ちます。

 

4.インスタンスについて

SQLServerで動作するSQLServerシステムのことをインスタンスと呼び、SQLServer2000では一つのコンピュータ上で複数のインスタンス(マルチインスタンス)を動作させることが可能です。インスタンスは規定のインスタンスと名前付きインスタンスの2種類があり、規定のインスタンスは各コンピュータに1つだけ存在し、名前付きインスタンスは各コンピュータに最大16個まで作成できます。

各インスタンスはMSSQLServerサービスとSQLSearverAgentサービスを単独で保持し、MicrosoftSearchはほかのインスタンスとの共有しています。

 

5.ネットワークライブラリとは

クライアントアプリケーションはSQLServerが動作するコンピュータと異なるコンピュータ(クライアント)で動作します。その通信を行う場合においてクライアントとサーバー間のネットワークプロトコルにはいくつもの種類があります。

SQLServerにはネットワークライブラリ(Net-Library)というソフトウェアが用意されており、クライアントとサーバーの両方にインストールしておくことでネットワークライブラリがプロトコル間の違いを吸収する為、通信プロトコルが変わってもアプリケーションを書きなおす必要がなくなります。

ネットワークライブラリが対応できるプロトコルには(TCP/IP,NWLINK,IPX/SPX/Appletalk)があります。

 

6.データベースの種類

SQLServerのデータベースにはインストール時にシステムデータベースとユーザーデータベースの2種類がインストールされています。

 

(1)システムデータベース

システムデータベースとはシステムやデータベースの操作と管理に使用するデータベースです。デフォルトで次のデータベースがインストールされます。

①MASTER

SQLServerの動作全体の制御に利用されるデータベースであり、ユーザーに関する情報、メモリ割り当て情報、システムエラーメッセージが保持される情報です。

②Model

ユーザーデータベースのテンプレートです。

③msdb

SQLServerAgentサービスが主に使用するデータベース、ジョブのスケジュール、履歴に関する情報です

④tempdb

一時テーブルを格納するためのデータベースとして一時作業領域として使用されています。

 

(2)ユーザーデータベース

ユーザデータベースとはユーザーが作成し、ユーザーが使用するデータベースです。

①pubs

ユーザーのデータベースサンプル

②Northwind

ユーザーデータベースのサンプル

7.データベースオブジェクト

データベースは何種類かのオブジェクトで構成され、主にテーブル、制約、インデックス、ビュー、ストアドプロシージャ、トリガの6種類があります。

①テーブル

②制約

テーブルの各列に格納する値に関する規則(主キー制約、参照制約)を定義するためのオブジェクトです。

③インデックス

データ検索を効率化するための作成され使用されます。

④ビュー

使用頻度の高い検索内容を保持するオブジェクトであり、仮想的なテーブルを保持しているとも考えられています。

⑤ストアドプロシージャ

SQL言語で書かれたSQLステートメントの集合であり、同じパターンのSQLステートメントを保存しておくことにより効率、ネットワークへの負荷を大きくなるのを防ぐことができます。

⑥トリガ

ストアドプロシージャの一種であるがユーザーがテーブルのデータを変更すると自動的に起動される機能を持つ。ユーザーが任意のタイミングで起動することはできません。

 

8.システムテーブルとユーザーテーブル

テーブルにはシステムテーブルとユーザーテーブルの2種類があります。

①システムテーブル

システムテーブルはSQLServerがシステムやデータベースを管理するのに使用する情報が格納されるテーブルです。システムテーブルに保存されるデータの属性、意味、格納場所などデータを定義する情報をメタデータと呼ばれています。

②ユーザーテーブル

ユーザーテーブルはユーザーがデータを格納するために作成する普通のテーブルです。

 

9.データディクショナリ

データディクショナリはシステムテーブルのメタデータを登録、管理している。SQLServerにはメタデータ取得に使用されるストアドプロシージャがあらかじめ用意されています。

(1)主なシステムストアドプロシージャ

①sp_configure

サーバーのオプション設定情報を取得するためのプロシージャ

②sp_helpdb

サーバ上に存在するすべてのデータベースに関して、名前、サイズ、所有者ID、作成日付、オプションといった情報を取得できる。

③sp_dbopinion

データベースのオプション設定情報を取得するプロシージャ

④識別子

データベースオブジェクトにつけられる名前。テーブルの識別子は次のようになる。<サーバー名.データベース名.所有者名.テーブル名>

 

10.導入

(1)SQL Serverのエディッション

①Standard Edition

小規模なワークグループ、企業部門で使用するのに適したエディッションであるが、データウェアハウス、Webサイトなどをサポートする機能は用意されていません。

②Enterprise Edition

大規模データベース、データウェアハウス、Webサイト、OLTPサポートに対応できる機能を備えたエディッションです。

③Personal Edition

リモード環境、スタンドアロンでデータベースを使用したいユーザー向けエディッションです。

④Developer Edition

機能的にはEnterprise Editionと同じであるが、開発、試験に限って使用が可能なエディッションです。

⑤Windows CE Edition

Windows CE上で動作するエディッションです。

 

(2)OLTP(ONLine Transaction Processing)

企業の基幹系データベースで行われる処理のことでオンライントランザクション処理とも呼ばれています。具体的にはネットワークに接続された複数の端末からホストコンピュータに何らかの処理要求を行い、ホストコンピュータはその要求の内容にもとづいてデータを処理し、その結果を端末におくる形態の処理です。

 

(3)インストールパス

SQL Serverのプログラムファイルとデータファイルの規定のインストールパスは次の通りです。プログラムファイルはインストール時から大きくなることはないが、データファイルはサイズが大きくなっていく為、データファイルをおくディスクの容量は余裕を持たせる必要があります。

[プログラムファイル(規定)]

C:\Program Files\Microsoft SQL Server\Mssql\Binn

[データファイル(規定)]

C:\Program Files\Microsoft SQL Server\Mssql\Data

 

11.SQL Searverの管理ツール

SQL Serverには管理作業の負担を軽減するための管理ツールが用意されています。主な管理ツールとしてはクエリアナライザ、SQL Server Enterprise Managerがあります。

 

(1)クエリアナライザ

SQLステートメントの作成、実行を支援するツールであり、これによりGUI環境によってSQLステートメントが簡単に作成、実行できます。

(2)SQL Server Enterprise Manager

ローカル、リモートのSQLServerを管理するためのツールです。GUI環境によりSQL言語を使用しなくても管理作業(‘オブジェクト新規作成、オブジェクトのプロパティ確認)が行えます。SQL ServerがインストールされているコンピュータにEnterprise ManagerをインストールするとローカルのSQL ServerはEnterprise Managerに自動的に登録されます。

 

12.まとめ

①DBMSとは?

データベース管理システムのこと。

②RDBMSとは?

リレーショナルデータベース管理システムのこと。

③SQL Serverの主な機能としてのサービスとは?

SQL Serverの主な機能はサービスと呼ばれるプログラムによって提供される。サービスはSQL Servreが起動されると同時に起動し、バックグラウンドで動作しデータベースアプリケーションからの要求の受付、要求の応答を行う。

④データベースエンジンとは?

データベースエンジンとはデータベースのデータの追加、削除、変更といった処理を実際に行うプログラムである。SQL ServerではMSSQLServerサービスがこの機能を持つ。

⑤インスタンスとは?

実際にコンピュータで動作するSQL Serverシステムのことをインスタンスと呼ぶ。

⑥ネットワークライブラリとは?

SQL Serverでサーバーとクライアント間の通信プロトコルの違いを修正するプログラムである。

⑦システムデータベースとは?

SQL Serverがシステムやデータベースの操作と管理をしようするデータベースです。

⑧ユーザーデータベースとは?

ユーザーが作成し、ユーザーが使用するデータベースである。

⑪データベースオブジェクトとは?

テーブル、制約、インデックス、ビュー、ストアドプロシージャ、などデータベースを構成するオブジェクトである。

⑫ストアドプロシージャ

SQL言語で書かれた命令の集合であり、命令パターンをストアドプロシージャとして保存しておくことで同じ命令パターンを繰り返し記述するのを防ぐ。

⑬トリガ

ストアドプロシージャの一種だがユーザーがテーブルのデータを変更すると自動的に起動される特殊な機能を持つ。ユーザーの任意のタイミングで起動することはない。

⑭メタデータ

システムテーブルに保存されるデータ属性、意味、格納場所などデータを定義する情報をメタデータという。

⑮識別子

データベースのオブジェクトにつけられる名前である。

⑯インストールパス

プログラムインストールの場合にインストール先となるフォルダのこと。

⑰クエリアナライザ

SQLステートメントの作成、実行を支援するツールである。

⑱SQL Server Enterprise Manager

ローカル、リモートのSQLServerを管理するツールであり、GUI環境によりSQL言語を使用しなくても管理作業が行える。

データベース データモデリングについて

Categories:  MCA Database

1.データモデリング

データモデルはデータベースがデータがどのような形式で蓄えられるか、データベースの構造がどのようになるかを決める雛形であり、データモデルには概念データモデル、論理データモデルの二種類があります。

 

(1)概念データモデル

概念データモデルはデータベース化の対象となる現実世界のことがらがどのようになっているかを絵や記号を使って表したものです。ERD(Entity Relationship Diagram)とは概念データモデルに使用される記号系の代表例であり概念データモデルはDBMSに依存しません。

(2)論理データモデル

論理データモデルはデータベースをどのDBMSで運用するかを意識して作成し、データベースを具体的にどのように作成すればよいかを示したものです。概念データモデルとは異なり、DBMSに依存しています。
論理データモデルは階層型データモデル、ネットワーク型データモデル、リレーショナルデータモデルの3つのタイプに大別できます。
階層型データモデルは銀行勘定システムに使用され、ネットワーク型データモデルは航空会社の座席予約システムに使用されています。

(3)現実世界からのデータベースフロー

現実世界のものを例にとってデータベースフローを作る場合、現実世界から概念データモデル、そして論理データモデル作成しデータベースの構築していきます。

 

2.正規化

(1)正規化

テーブルをリレーショナルモデルの規則に従った正しい形にすることを正規化と呼びます。段階により第一正規化、第二正規化、第三正規化と三段階に分かれます。

また正規化されていない状態のテーブルを非正規化と呼びます。

①第一正規形

非正規形から繰り返し項目を排除した状態のことであり、繰り返し項目が存在する状態とは一つのテーブルの中に同じ属性の列が複数存在する状態です。

②第二正規形

第一正規形の条件を満たし、更に部分関数従属(部分的関数従属性)が排除されている状態を第二正規形とよびます。関数従属とはテーブル中のある列のデータが決まると他の列のデータも決まるという関係をよび、この部分関数従属の状態を排除するためには複合キーを分割しテーブルを分割します。この操作を第二正規形と呼ばれています。

③第三正規形

第三正規形にするには、第二正規形を満たしその上で推移的関数従属を排除する必要があります。推移的関数従属とはA列のデータとB列のデータが決まればC列のデータも同時に決まるということであり、この状態を排除しテーブルを分割する操作を第三正規化と呼ばれています。

 

(2)正規化をしないことによる弊害

①枠組み変更の問題

繰り返し項目が枠組み以上ある場合にデータ欠落ができてしまい枠組み変更に耐えられない状態となることです。

②挿入異常

データを新たに挿入する際に発生する場合であり、主キー制約に違反が起こってしまう状態です。

③削除異常

データ削除の際に発生する問題であり単一のデータを削除することにより、他のデータの主キー制約に違反してしまう状態です。

④修正異常

データ修正に関する問題であり、単一データを修正する場合に同時に大量のデータ修正が発生してしまう状態です。挿入異常、削除異常、修正異常をまとめて更新異常とよび、この状態は第二正規化、第三正規化を行うことで解決されていきます。

 

3.ERD(Entity Relationship Diagram)

ERDは(Entity Relationship Diagram)の略であり、概念データモデル作成に使用される代表的な記号系の一つです。ERD構成要素は次の通りです。

 

(1)ERD構成要素

①エンティティ(実体)

データベースに反映させる現実世界に存在する人や実体のことです。

②リレーションシップ(関連)

エンティティ間の結びつきです。

③アトリビュート(属性)

エンティティの性質、特性を現すデータのことです。

(2)リレーションシップの関係

データベースを構築する上でデータの関係を理解することが必要です。その関係は 1対1 1対多 多対多があります。連関エンティティでは二つのエンティティの主キーを組み合わせたものを主キーとしています。またERD記法にはその他代表的なバックマン記法の他、鳥の脚記法、IDEF1X記法などがあります。

(3)スーパータイプとサブタイプ

①ISAリレーションシップについて

リレーションシップには1対1、1対多、多対多の3種類の分類以外に上下のリレーションシップがあります。上位のエンティティをスーパータイプエンティティ、下位のエンティティをサブタイプエンティティと呼びこの上下関係をISAリレーションシップと呼ばれています。

②特化と汎化について

上位エンティティを定義する作業を汎化と呼び、下位エンティティを定義することを特化と呼びます。

4.まとめ

■概念データモデルとは?

データベース化の対象となる現実世界のことがらがどのようになっているかを絵や記号を使って表したものです。

■論理データモデルとは?

データベースをDBMSを意識し具体的にどのように作成するかを示したものです。

■記号系とは?

概念データモデルを作成するためにデータの様子を絵や記号で表示したもので主にERDがあります。

■三層スキーマモデルとは?

データモデルを3つに分類する考え方であり、1978年ANSI/SPARKによって提案されたものです。3層スキーマモデルのスキーマは概念スキーマ、外部スキーマ、内部スキーマの3種類あり、概念スキーマは論理データモデルのことで、外部スキーマはコンピュータ上での表示画面などエンドユーザーから見た目を定めるスキーマ、内部スキーマはデータベースの物理的な構造を定めるスキーマのことです。

概念スキーマと外部スキーマ間のデータ独立性を論理的データ独立性といい、概念スキーマと内部スキーマ間の独立性を論理的データ独立性とよばれています。

■ボイスコット正規形とは?

第三正規形までの正規化段階です。

■関数従属とは?

従属列が主キーの一部分ではなく主キー全体にのみ従属することでこの状態を完全関数従属とよばれています。

■更新異常とは?

非正規化による挿入異常、削除異常、修正異常がおこる状態です。

■拡張ERDとは?

長方形と実勢のみでエンティティ、リレーションシップ、アトリビュートを表すERDのことです。

■エンティティタイプとは?

データベースに反映させる現実世界に存在する人や物の実体のことです。

■リレーションタイプとは?

エンティティ間の結びつきや関係のことです。

■インスタンスとは?

個々のエンティティ、リレーションシップのことをよびます。

データベース リレーショナルモデルについて

Categories:  MCA Database

1.リレーショナルモデル構造

(1)データモデル

データベースがどのような形式で蓄えられているかデータベースの構造を決める雛形をデータモデルとよびます。どのデータモデルを使用するかによりデータベース構造が変わっており、リレーショナルデータベースに使用されるモデルについてはリレーショナルモデルと呼ばれています。

(2)リレーショナルモデル

データベースを二次元の表の集まりにし、データの集合から構成されるデータベースのことであり、数学の集合を基礎としたモデルのことを呼びます。

(3)リレーショナルモデル特徴

リレーショナルモデルの特徴としては以下の点があります。

①同じ集合に属するデータには共通の性質がある。
②要素を重複しないこと
③要素の順序には意味がないこと
④列は重複しないこと
⑤列の順序には意味がないこと

 

2.リレーショナルデータベースのキー

(1)要素の識別

リレーショナルデータベースにおいて集合の要素を明確に識別するのに役立つ列のことをキーといい、他集合の要素が重複して支障がでるのを防ぐことができます。

(2)外部キー

外部キーとはある表から他表の情報を算出するために使用される列のことをよびます。他テーブルと結合する場合などに使用されます。

(3)整合性制約

リレーショナルデータベースには利用に際して問題が生じないよう、いくつかのルールの中の一つとして整合性制約があります。主な整合性制約としては以下の点があります。

①主キー制約

 主キーに使用する列ではデータを重複させたりデータを欠落させることはできない。

②参照制約

 外部キーはほかの表と共通する列であり、参照先の列にないデータが外部キーにあってはならないということ。ただし主キーとは異なりデータの欠落、重複はでてきます。

③ドメイン制約

 データベースの個々の列にどのような範囲のデータを格納できるかを定めるルールであり、それ以外のデータは格納できなくするものを呼びます。

(4)データ操作

リレーショナルデータベースのデータに対して行える操作は集合を基礎としている為、演算によってもデータ操作が可能となっています。集合としてベーステーブル、導出テーブルがあります。

①ベーステーブル

 データベースに格納されている表のこと

②導出テーブル

 データベースのデータを検索した結果として一時的に作成されるテーブルのこと。

③ビュー

データベースの中で使用頻度の高い検索の内容をデータベースに記憶させておき、記憶された検索内容のことをビューという。

 

3. リレーショナル演算とは

リレーショナルデータベースは集合を基礎としているため、データ操作も数学の集合に用いるのと同じような演算によって行います。この演算のことをリレーショナル演算と呼びリレーショナル演算は二つの種類に大別できます。

 

(1)集合演算

和集合演算、差集合演算、共通集合演算、直積集合演算を使用します。

①和集合演算と差集合演算

二つの集合の和集合を求める演算でありA U Bです。リレーショナルデータベースに行う和集合とは、二つのテーブルのデータを集めて新たなテーブルを作成します。二つのテーブルにまったくのデータが存在する場合、和集合演算を行うと一方は削除されます。

②差集合演算

差集合演算とは二つの集合の差集合を求める演算のことです。

③共通集合演算

共通集合演算は二つの集合の共通部分を求める演算(A∩B)のことです

④直積集合演算

二つの集合の要素のすべての組み合わせを集めた集合を求める演算です。

(2)リレーショナル代数固有演算

リレーショナル数固有演算は射影演算、選択演算、結合演算、商演算の4つがあります。

①選択演算

 選択演算とはリレーショナルデータベースのテーブルから特定の条件を満たす行だけを抽出する演算のことです。

②射影演算

 リレーショナルデータベースのテーブルから条件を満たす列だけを抽出する演算です。

③結合演算

 リレーショナルデータベースの二つのテーブルを結合する演算であり、共通する列のデータが二つのテーブルの間で一致している行だけをのこす演算と一致していない行も残す演算の二つの種類に分けられます。前者を自然結合、後者を外部結合と呼ばれています。

④商演算

 二つのテーブル間でデータが完全に一致している部分を含む行を抽出する演算です。

4.まとめ

■データベースでのモデルとは?

 設計図、雛形、原型の意味であり、データベースで言われるモデルとはデータベース構造、雛形のことである。

■リレーションとは?

 関連するデータを集合させ関連付けること。

■ドメインとは?

 別名定義域とよばれ、個々の集合にどのような要素がぞくすることができるかはあらかじめ決まっており、属することのできる要素の範囲を定義域、ドメインと呼ぶ。(例:日付の集合であれば、ドメインは1/1~12/31になる)

■キーとは?

集合の要素を明確に識別するのに役立つ列のことをキーという。

■整合性制約とは?

主に主キー制約、参照制約、ドメイン制約からなるリレーショナルモデルに格納するデータのルール。

■ベーステーブルとは?

データベース用語では動物名や所属科名のような集合をベースリレーションといい、ベースリレーションにより構成されるテーブルをベーステーブルと呼ぶ。

■導出テーブルとは?

データベースのデータを検索した結果として一時的に作成されるテーブルのこと。検索結果のテーブルである。

■ビューとは?

あらかじめ使用頻度の高い検索の内容をビューという。

■リレーショナル演算とは?

主に集合演算、リレーショナル代数固有演算からなり、集合演算には和集合、差集合、共通集合、直積集合、リレーショナル代数固有演算には選択演算、射影演算、結合演算、商演算とある。

■自然結合とは?

直積演算、選択演算、射影演算を組み合わせて行う演算であり、二つのテーブルの間で一致した行だけを残す演算

■外部結合とは?

直積演算と射影演算の組み合わせであり、二つのテーブル間で一致していない行も残す演算である。

データベース データベースとは

Categories:  MCA Database

1. データベースの役割

1.データベース

DBMS(Database Management System)

データベースのデータを操作し利用するためのプログラムであり、日常の業務を効率よくこなすためにデータを管理するプログラムのことです。蓄えたデータを操作し、利用するまでのプログラムまでを含めてデータベースアプリケーションと呼びます。

データベース普及以前に使用されていたのはファイルシステムがあり、COBOLなどの言語で作成したプログラムでデータを扱っていました。特徴としてはプログラムとデータが独立していない為、プログラムとデータが密接に結びついていました。

 

(1)データベース特徴

データベースの特徴はデータがあらゆるプログラムから独立して作動するためデータベースを様々なプログラムで利用できることを意味します。

主な特徴は次の二点があります。

①データ独立性

 あらゆるプログラムから独立していること。

②データ統合化

 あらゆる種類のデータをひとつにまとめ一元管理できるようにすること。

 

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

データを縦(カラム)と横(ロー)の列からなる二次元の表の形で保管するデータべースのことで特徴としてはディスク上での保管形式とユーザーが見る保管形式にはまったく関係性がなくユーザーからはあくまで表として取扱うことができます。

 

(3)データベース種類

データベースの種類にはリレーショナルデータベースの他、階層型データベース、ネットワーク型データベースがあります。

①階層型データベース

 下位データが一つの上位データに属する構造になっているデータベースでありたとえば企業でいえば、部署とその下にある課のような構造です。

②ネットワーク型データベース

 下位データが複数の上位データに属する構造になっているデータベースです。

 

(4)基幹系データベースと情報系データベース

データベースは使用用途により大きく二種類のデータベースに分かれ、基幹系データベースと情報系データベースです。

 ①基幹系データベース

 商品在庫や銀行口座等のの日常業務データで使用されるデータベースです。

②情報系データベース

 日常の業務がどのように行われてきたかという実績や履歴のデータを蓄積するために使用されるデータベースであり、主に情報系から基幹系へのフィードバックループを行うことで基幹系データベースに修正が加えられています。特徴としては情報系データベースは大量のデータを処理して一つの答えを得るという使い方をする為、一般的に基幹系データベースに比べて一回の使用に非常に長い時間を要します。

2.データウェアハウス

情報系データベースの別称であり基幹系システムの日常業務処理の大量のデータが保管されています。

 

3.まとめ

■データベースアリケーションとは?

SQL,Oracleなどのデータを利用するアプリケーション。

■ファイルシステムとは?

データベース普及以前に使用されているシステムでありCOBOLなどの言語で作成したプログラムでデータを扱います。特徴としてはプログラムとデータが独立していない為、密接に結びついています。

■データ一元管理とは?

顧客名簿、売上データ、受注データなど異なったデータを一つにまとめ一元管理できること、ファイルシステムとデータベースの違いとなっています。

■テーブルとは?

データベースを表示する為にデータを縦(カラム)と行(ロー)と呼ばれる二次元の表の形でユーザーに表示されるものです。

■データウェアハウスとは?

情報系データベースのことで、基幹系データベースの日々の業務処理の実績、履歴を保管しておき、最終的に基幹系データベースにフィードバックループを行うためのシステムです。