データベースの基礎
SQL Server のデータベースは、特定の構造化データを格納するテーブルの集合です。テーブルは一連の行 (レコードまたは組) と列 (属性) から構成されます。テーブル内の各列は、特定の種類の情報 (日付、名前、金額、数字など) を格納するようにデザインされています。
テーブルには何種類もの制御 (制約、トリガ、デフォルト、カスタマイズしたユーザー データ型など) があり、データの妥当性が保証されます。宣言参照整合性 (DRI) 制約をテーブルに追加して、別々のテーブル内にある相互に関係するデータの一貫性を保つことができます。テーブルには、行をすばやく検索できるようにするために、普通の本の場合と同様にインデックス (索引) を作成することができます。また、データベースには、Transact-SQL または .NET Framework プログラミング コードを使用してデータベース内のデータを操作するプロシージャを含めることもできます。これらの操作には、テーブルのデータへのカスタマイズされたアクセスを提供するビューや行のサブセットで複雑な計算を実行するユーザー定義関数の作成も含まれます。
たとえば、会社のデータを管理するために、MyCompanyDB という名前のデータベースを作成するとします。MyCompanyDB データベースに、各従業員に関するデータを格納するための Employees という名前のテーブルを作成します。また、このテーブルには、EmpId、LastName、FirstName、Dept、および Title という名前の列が含まれています。2 人の従業員が同じ EmpId を使用しないようにしたり、Dept 列に社内の部署を表す有効な数字だけが格納されるようにするには、テーブルに適切な制約を追加する必要があります。
従業員の ID または姓に基づいて従業員のデータを迅速に検索する必要があるので、インデックスを定義します。Employees テーブルに各従業員のデータ行を追加する必要があるので、AddEmployee という名前のストアド プロシージャも作成する必要があります。このプロシージャは、新しい従業員のデータ値を受け取り、その行を Employees テーブルに追加する操作を実行するようにカスタマイズされています。部署ごとの従業員データの概要が必要になることがあります。このような場合には、Departments テーブルと Employees テーブルのデータを結合して出力を生成する、DeptEmps というビューを定義します。次の図は、作成した MyCompanyDB の各部を示したものです。
SQL Server のインスタンスでは、多数のデータベースをサポートできます。各データベースには、相互に関係するデータを格納することも、独立したデータを格納することもできます。たとえば、人事に関するデータを格納するデータベースと、製品に関するデータを格納するデータベースを SQL Server の 1 つのインスタンスでサポートできます。また、あるデータベースでは現在の顧客注文データを格納し、別の関連データベースに、年間報告に使用する顧客注文の履歴を格納することもできます。
重要 |
---|
master データベースには、テーブル、ビュー、ストアド プロシージャ、またはトリガなどのユーザー オブジェクトは作成しないでください。master データベースには、ログオン情報や構成オプションの設定など、SQL Server のインスタンスで使用されるシステム レベルの情報が格納されています。 |
OLTP データベース
オンライン トランザクション処理 (OLTP) リレーショナル データベースは、データ変更の管理に最適なデータベースです。これらのデータベースに対しては、リアルタイムのデータを変更するトランザクションを複数のユーザーが同時に実行しているのが普通です。通常、ユーザーからのデータ要求では、数行しか参照されませんが、これらの要求の多くは同時に実行されます。
OLTP データベースは、トランザクション アプリケーションで必要なデータのみを書き込み、1 つのトランザクションをできるだけ短時間で処理できるようにデザインされています。一般的な OLTP データベースの特徴は次のとおりです。
定期的にデータを追加および変更する多数の同時ユーザーをサポートします。
絶えず変化する組織の状態を表しますが、その履歴は保存しません。
トランザクションの確認に使用される広範なデータなど、大量のデータを格納します。
構造が複雑です。
トランザクションの利用状況に合わせてチューニングします。
組織での日常業務を支援する技術基盤を提供します。
個々のトランザクションは、短時間で完了し、アクセスするデータ量は比較的少量です。OLTP システムは、同時に入力される数百あるいは数千のトランザクションを処理するようにデザインおよびチューニングされています。
OLTP システムのデータは、主にトランザクションをサポートするために構成されています。トランザクションの例を次に示します。
POS (point-of-sale) の端末から送られてきた注文または Web サイトで入力された注文の記録
在庫数量が指定したレベルにまで減少したときの仕入れの発注
製造施設で、部品が最終製品に組み込まれるまでの部品の追跡
従業員データの記録
データ ウェアハウス
変更や追加が頻繁に発生するデータをキャプチャすることが目的の OLTP データベースとは対照的に、データ ウェアハウスの目的は、大量の固定データを分析と取得が容易になるように編成することです。データ ウェアハウスは、ビジネス インテリジェンス アプリケーションの基礎として頻繁に使用されます。
データ ウェアハウスで実行できる操作は次のとおりです。
さまざまなデータ ソースのデータを単一の構造に結合できます。
トランザクション処理向けではなく、分析クエリの効率を考慮した単純な構造でデータを編成できます。
有効で一貫性があり、分析用に統合およびフォーマットされた変換データを格納できます。
業務履歴を表す固定データを提供できます。
頻繁にトランザクションを実行することなく、定期的に追加されたデータで更新できます。
セキュリティ要件を簡略化できます。
データベース スナップショット
データベース スナップショットは、ソース データベースの読み取り専用の静的なビューです。各データベース スナップショットは、スナップショット作成時点のソース データベースとトランザクションの一貫性があります。詳細については、「データベース スナップショット」を参照してください。