スキーマの編集をしよう
データベースプロジェクトでファイル群を確認するために利用するビューはソリューションエクスプローラとスキーマビューでした。スキーマの編集を行うときにもこの2つのビューを起点として作業を行うことになります。しかし、基本的にはスキーマビューを利用して作業するのが最も効率よく作業をすることにつながります。
新しい項目の追加
例えば、新しいテーブルを一つ追加してみましょう。スキーマビューでテーブルフォルダを右クリックして、[追加]‐[テーブル]と選択します。
新しい項目の追加でファイル名(テーブル名)を指定して追加を選択します。
スキーマビューのテーブルの中に新しいテーブル(この例では「ATable」)が追加されます。
試しにソリューションエクスプローラで確認してみると、きちんと他のテーブル生成スクリプトと同じ位置に作成されています。
項目の編集
次は項目の編集を行ってみましょう。VSTS-DBには残念ながらSSMSなどに用意されているテーブルデザイナやデータベースダイアグラムなどの機能は用意されていません。そのため、編集作業はすべてSQLファイルを直接編集するような形になります。テーブルにキー(主キーや外部キー)を追加するときや制約を追加する場合には、新しい項目の追加の部分で説明したような方法でファイルを追加することになりますが、既存のテーブルの列を増やしたり、減らしたりする場合には、ファイルをダブルクリックして、SQL編集画面を開き、直接SQL文を編集します。このような方法では、わざわざVSTS-DBを利用するよりもSSMSで編集した方が良さそうです。しかし、VSTS-DBにはリファクタ機能があり、既存の列名を変更する場合にはこれがかなり有効に働きます。試しにスキーマビューで[テーブル]‐[dbo.Categories]‐[列]‐[CategoryID]を右クリックして[リファクタ]‐[名前の変更]を選択します。次の図22のようなウィンドウが立ち上がります。
ここで、[CategoryID]となっている部分を[CategoryID2]と変更してみます。変更のプレビューにチェックが入っている状態でOKを選択すると、この変更の影響を受ける項目とその内容が表示されます。
ここでさらに適用を選択すると変更の影響を受ける全項目がまとめて変更されます。ここで、全項目とは、同一プロジェクトに含まれるビューやストアドプロシージャなどで、同じソリューション内にある別プロジェクトにはこの機能は適用されません。このため、もしVSTS-DBが利用可能な場合には、アプリケーションから発行するSQLをすべてストアドプロシージャにし、さらにVSTS-DBでそのストアドプロシージャを管理するようにしておけば、データベーススキーマの変更の影響を小さくすることに貢献できるようになります(アプリケーションの中の型付きDataSetなどは相変わらず影響を受け続けますが、そちらはそちらで名前の変更リファクタリング機能を使って、修正を適用するという選択肢もあります)。
項目の削除
項目の削除を行うときもスキーマビューから行うと便利です。例えば、新しい項目の追加のところで追加した「ATable」に主キーも設定されている状況を仮定してみます。ソリューションエクスプローラでこの状態を確認すると図24のように2つのファイルがあります。
次にスキーマビューに移動します。「ATable」を展開するとキーのところに主キーにあたるものが定義されている状態です。
「ATable」を右クリックして[削除]を選択するとATableが削除され、同時に「PrimaryKey1」も削除されます。この状態でもう一度ソリューションエクスプローラを確認すると図24で確認できた2つのファイルが2つとも削除されています。
このように依存関係を考慮したうえで削除処理を行ってくれるため、ファイルが別々に分かれていても比較的容易にまとまった単位で削除を行うことができます。