データベースの作成と編集機能
データベースの作成と編集には、大きく分けて2つの機能が用意されています。データベーススキーマの新規作成と既存データベースからスキーマのインポートを行って編集する機能です。どちらの場合でもC#やVisual Basicの新しいプロジェクトを作成するのと同じ要領で、新しいデータベースプロジェクトを作成します。
新規作成か既存スキーマのインポートかによって、プロジェクトのフォルダ構造に多少の違いはあるものの、おおむね図2のようなプロジェクトが生成されます(図2はSQL Server 2005のサンプルデータベースであるAdventureWorksデータベースをインポートしたものです)。
このデータベースプロジェクトを利用して、データベースそのものやテーブル、ビュー、ストアドプロシージャなどをはじめ、データベースに関するほぼすべてのものを作成、編集することができます。
単純にDDLを記述するだけであれば、Visual Studio 2005 Professional Editionなどに付属のデータベースプロジェクトを利用しても可能です。実際、VSDPにはDDLを定義するためのさまざまな雛型(VSでClassを作成すると生成されるクラスファイルの雛型のようなもの)は用意されているものの、依然としてインテリセンスを利用したSQL文の記述ができないなど一見違いが見当たらないと感じられる点もあります。
しかし、VSDPでは次の図3に示すような定義済みDDLをスキーマビューで確認するという機能があります。VSDPを利用しない場合でも、Visual Studioにはサーバエクスプローラウィンドウが付属しています。このウィンドウで接続文字列を定義して、実在するデータベースに接続することによってテーブルや列名、ストアドプロシージャやそのパラメータなどを確認することができます(図4)。
両者を比較してみると、図3のスキーマビューではそのウィンドウ内で、主キーや制約としてどんなものが設定されているかを確認することができます。一方、図4のサーバエクスプローラでは、列名のみの情報で主キーやインデックスがどうなっているのかを判断することができません(サーバエクスプローラでテーブルを右クリックして[テーブル定義を開く]を選択し、表示された画面では主キーを確認することはできます)。
また、図3、 図4の見た目からは分かりませんが、スキーマビューは現在開発中のデータベースプロジェクトに含まれるDDLを読み込んで表示されているため、スキーマビューを見るためにSQL Serverが必要になることはありません。逆にサーバエクスプローラは実際のデータベースに接続しているため、格納されているデータを確認したり編集したりすることができます。
なお、これは直接VSDPとは関係ありません(ですが、VSDPの説明でスキーマのバージョン管理が可能という場合、このことを指していることがほとんどです)が、作成したプロジェクトファイルはVisual Studio 2005 Team Foundation ServerやVisual SourceSafeなどの構成管理ツールを利用してバージョン管理することも可能です。
データジェネレータによるデータの生成
データジェネレータとは、VSDPに用意されたデータベースのスキーマに合わせてさまざまなデータを自動的に生成できる機能です。主に作成したスキーマのテストを行いたいときに利用することができます。
この機能を利用すると、作成したDDLからテーブルやリレーションの情報を読み取り、標準では列の型に合わせて自動的にランダムなデータを生成します。図5はデータジェネレータを利用したデータ生成計画を新規に作成してデータ生成のプレビューを確認しているところです。
図5を見ると想像がつくかもしれませんが、データジェネレータはテーブルのリレーションを判断し、外部キーをデータとして組み込める便利な機能を持っています。一方で、文字列(char型やnvarchar型)などにはまったく意味のないデータが並んでしまっています。このようにデータジェネレータはデフォルト設定のままではランダムで意味のないデータを生成してしまいます。
そこで、データジェネレータの変更やデータジェネレータのプロパティ設定を行う必要があります。例えばInteger型のデータジェネレータでは、最小値、最大値を設定することができ、String型のジェネレータでは文字列長の最小値、最大値を設定することができます。しかしこれらの設定は、データ出力を行いたいすべての列に、それぞれ設定していく必要があるため、量が多い場合にはそれなりの時間が必要になることは注意してください。
ジェネレータは他にも正規表現ジェネレータやデータバインドジェネレータなど任意の出力を設定可能なものが用意されています。正規表現ジェネレータでは、正規表現式を用いて、出力される内容をある程度制限することができます。データバインドジェネレータでは、SQL ServerやAccess、Excelなどにあらかじめ用意しておいた情報を代入するという形でデータ出力を行うことができます。業務的に整合性をもったデータを利用してスキーマの検証を行いたい、ストアドプロシージャのテストを行いたいといった場合にはデータバインドジェネレータを利用するとよいと思います。