CodeZine(コードジン)

特集ページ一覧

Visual Studio Team System 2008で
データベースのスキーマ開発を効率化しよう

Visual Studio Team System 2008 Database Editionを使ってみよう(1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
目次

スキーマの編集をしよう

 データベースプロジェクトでファイル群を確認するために利用するビューはソリューションエクスプローラとスキーマビューでした。スキーマの編集を行うときにもこの2つのビューを起点として作業を行うことになります。しかし、基本的にはスキーマビューを利用して作業するのが最も効率よく作業をすることにつながります。

新しい項目の追加

 例えば、新しいテーブルを一つ追加してみましょう。スキーマビューでテーブルフォルダを右クリックして、[追加]‐[テーブル]と選択します。

図18:新しいテーブルの追加の選択
図18:新しいテーブルの追加の選択

 新しい項目の追加でファイル名(テーブル名)を指定して追加を選択します。

図19:新しいテーブルの追加
図19:新しいテーブルの追加

 スキーマビューのテーブルの中に新しいテーブル(この例では「ATable」)が追加されます。

図20:スキーマビューで確認
図20:スキーマビューで確認

 試しにソリューションエクスプローラで確認してみると、きちんと他のテーブル生成スクリプトと同じ位置に作成されています。

図21:ソリューションエクスプローラで確認
図21:ソリューションエクスプローラで確認

項目の編集

 次は項目の編集を行ってみましょう。VSTS-DBには残念ながらSSMSなどに用意されているテーブルデザイナやデータベースダイアグラムなどの機能は用意されていません。そのため、編集作業はすべてSQLファイルを直接編集するような形になります。テーブルにキー(主キーや外部キー)を追加するときや制約を追加する場合には、新しい項目の追加の部分で説明したような方法でファイルを追加することになりますが、既存のテーブルの列を増やしたり、減らしたりする場合には、ファイルをダブルクリックして、SQL編集画面を開き、直接SQL文を編集します。このような方法では、わざわざVSTS-DBを利用するよりもSSMSで編集した方が良さそうです。しかし、VSTS-DBにはリファクタ機能があり、既存の列名を変更する場合にはこれがかなり有効に働きます。試しにスキーマビューで[テーブル]‐[dbo.Categories]‐[列]‐[CategoryID]を右クリックして[リファクタ]‐[名前の変更]を選択します。次の図22のようなウィンドウが立ち上がります。

図22:列名の変更
図22:列名の変更

 ここで、[CategoryID]となっている部分を[CategoryID2]と変更してみます。変更のプレビューにチェックが入っている状態でOKを選択すると、この変更の影響を受ける項目とその内容が表示されます。

図23:変更の影響を受ける一覧
図23:変更の影響を受ける一覧

 ここでさらに適用を選択すると変更の影響を受ける全項目がまとめて変更されます。ここで、全項目とは、同一プロジェクトに含まれるビューやストアドプロシージャなどで、同じソリューション内にある別プロジェクトにはこの機能は適用されません。このため、もしVSTS-DBが利用可能な場合には、アプリケーションから発行するSQLをすべてストアドプロシージャにし、さらにVSTS-DBでそのストアドプロシージャを管理するようにしておけば、データベーススキーマの変更の影響を小さくすることに貢献できるようになります(アプリケーションの中の型付きDataSetなどは相変わらず影響を受け続けますが、そちらはそちらで名前の変更リファクタリング機能を使って、修正を適用するという選択肢もあります)。

項目の削除

 項目の削除を行うときもスキーマビューから行うと便利です。例えば、新しい項目の追加のところで追加した「ATable」に主キーも設定されている状況を仮定してみます。ソリューションエクスプローラでこの状態を確認すると図24のように2つのファイルがあります。

図24:ATableとその主キーを生成するSQLスクリプト
図24:ATableとその主キーを生成するSQLスクリプト

 次にスキーマビューに移動します。「ATable」を展開するとキーのところに主キーにあたるものが定義されている状態です。

図25:スキーマビューでATableを確認
図25:スキーマビューでATableを確認

 「ATable」を右クリックして[削除]を選択するとATableが削除され、同時に「PrimaryKey1」も削除されます。この状態でもう一度ソリューションエクスプローラを確認すると図24で確認できた2つのファイルが2つとも削除されています。

図26:ATable削除後のソリューションエクスプローラの状態
図26:ATable削除後のソリューションエクスプローラの状態

 このように依存関係を考慮したうえで削除処理を行ってくれるため、ファイルが別々に分かれていても比較的容易にまとまった単位で削除を行うことができます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Visual Studio Team System 2008 Database Editionを使ってみよう

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト りばてぃ/FUJIKO/ナオキ(リバティ, フジコ, ナオキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5