チュートリアル : データベース オブジェクトの変更
このチュートリアルでは、Transact-SQL (T-SQL) エディタを使用して、データベース プロジェクトに含まれる一部のデータベース オブジェクトの定義を変更します。 このプロセスは、次のステップで構成されます。
データベース プロジェクトが含まれているソリューションを開きます。
テーブルに列を追加します。 ここでは、顧客が製品が導入された年を追跡できるようにします。 このステップを実行するために、Products テーブルに [DateAdded] 列を追加します。
注文品を扱う出荷業者のサービス品質に対する顧客の評価を追跡する、ShipperRating テーブルを追加します。 外部キー リレーションシップとインデックスも追加します。
前提条件
このチュートリアルは、「チュートリアル : 既存のデータベース スキーマのバージョン管理」が既に実行済みであることを前提としています。 上記のチュートリアルによって、MyNorthwind という名前のデータベース プロジェクトを含むソリューションが作成されています。
MyNorthwind ソリューションを開くには
[ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。
[プロジェクトを開く] ダイアログ ボックスが表示されます。
MyNorthwind フォルダを開き、[MyNorthwind.sln] をダブルクリックします。
MyNorthwind ソリューションが開き、ソリューション エクスプローラに表示されます。
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューがまだ表示されていない場合は、表示されます。 データベース プロジェクトに定義されているすべてのオブジェクトが表示されます。
スキーマ ビューでデータベース プロジェクト ノードが展開されていない場合は、展開します。
次に、テーブル定義を変更して、テーブルに列を追加します。
Products テーブルに [DateAdded] 列を追加するには
スキーマ ビューで Products テーブルを右クリックし、[開く] をクリックします。 Products テーブルをダブルクリックする方法もあります。
T-SQL エディタが開き、Products テーブルの定義が表示されます。
T-SQL エディタで、次の例に示すように定義を変更して、[DateAdded] 列を追加します。
CREATE TABLE [dbo].[Products] ( [ProductID] INT IDENTITY (1, 1) NOT NULL, [ProductName] NVARCHAR (40) NOT NULL, [SupplierID] INT NULL, [CategoryID] INT NULL, [QuantityPerUnit] NVARCHAR (20) NULL, [UnitPrice] MONEY NULL, [UnitsInStock] SMALLINT NULL, [UnitsOnOrder] SMALLINT NULL, [ReorderLevel] SMALLINT NULL, [Discontinued] BIT NOT NULL, [DateAdded] [datetime] NULL );
オブジェクト定義を変更するときは、その定義を含むファイルをバージョン管理からチェックアウトします。
[ファイル] メニューの [dbo.Products の保存] をクリックして、変更を保存します。
既定では、ファイルがソース管理から自動的にチェックアウトされます。 ソース管理の設定を変更した場合は、ファイルのチェックアウトを求めるメッセージが表示されます。
次に、ShipperRating テーブルをデータベース プロジェクトに追加します。
ShipperRating テーブルを追加するには
スキーマ ビューでテーブル フォルダをクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。 テーブル フォルダを右クリックし、[追加] をポイントして、[テーブル] をクリックする方法もあります。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに、「ShipperRating」と入力し、[追加] をクリックします。
ShipperRating テーブルがデータベース プロジェクトとソース管理に追加されます。 T-SQL エディタが表示され、このテーブルの定義を編集できるようになります。
T-SQL エディタで、次の例に示すようにテーブルの定義を変更します。
-- ============================================= -- Create table definition for ShipperRating --Contains a rating of a shipper by --a customer, on a particular date. --Ratings are from 1-100. -- ============================================= CREATE TABLE [dbo].[ShipperRating] ( [ShipperID] [int] NOT NULL, [CustomerID] [nchar] (5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, [RatingDate] [datetime] NULL, [Rating] [int] NOT NULL ) ON [PRIMARY]
[ファイル] メニューの [dbo.ShipperRating の保存] をクリックして、変更を保存します。
次に、ShipperRating テーブルに外部キーを追加します。
ShipperRating テーブルに外部キーを追加するには
スキーマ ビューで ShipperRating テーブルを右クリックし、[追加] をポイントして、[外部キー] をクリックします。
[外部キー] テンプレートが既に強調表示された状態で、[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] ボックスに、「FK_ShipperRating_Shippers」と入力し、[追加] をクリックします。
プロジェクトの ShipperRating テーブルに FK_ShipperRating_Shippers 外部キーが追加されます。 T-SQL エディタが表示され、外部キーの定義を編集できるようになります。
メモ : 外部キーの既定の定義は、実際のテーブルや列ではなく tablename の column_1 を参照します。 したがって、スキーマ ビューの FK_ShipperRating_Shippers のアイコンには、エラー アイコン (赤の円で囲まれた白い "x") が表示されます。 また、[エラー一覧] ウィンドウにエラーが表示され、データベース オブジェクトの定義が無効であることが示されます。 これは予測どおりの動作です。 ソリューション エクスプローラの、オブジェクト定義が含まれているファイルには、エラー アイコンは表示されません。
T-SQL エディタで、次の例に示すように外部キーの定義を変更します。
ALTER TABLE [dbo].[ShipperRating] ADD CONSTRAINT [FK_ShipperRating_Shippers] FOREIGN KEY ([ShipperID]) REFERENCES [dbo].[Shippers] ([ShipperID])
[ファイル] メニューの [FK_ShipperRating_Shippers の保存] をクリックして、変更を保存します。 定義が有効になったため、エラー アイコンが通常の外部キー制約のアイコンに置き換えられます。
最後のステップでは、ShipperRating テーブルにインデックスを追加します。
ShipperRating テーブルにインデックスを追加するには
スキーマ ビューでインデックス フォルダをクリックします。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。 インデックス フォルダを右クリックし、[追加] をポイントして、[インデックス] をクリックする方法もあります。
[テンプレート] の一覧で、[インデックス] がまだ強調表示されていない場合は、クリックします。
[名前] ボックスに、「ShipperRatingDate」と入力し、[追加] をクリックします。
プロジェクトの ShipperRating テーブルに ShipperRatingDate インデックスが追加されます。 T-SQL エディタが表示され、インデックスの定義を編集できるようになります。
メモ : インデックスの既定の定義は、実際の列名ではなく column_1 を参照します。 したがって、ソリューション エクスプローラの ShipperRatingDate のアイコンには、エラー アイコン (赤色の円に白抜きで "x" と表示される) が表示されます。 また、[エラー一覧] ウィンドウにエラーが表示され、データベース オブジェクトの定義が無効であることが示されます。 これは予測どおりの動作です。
T-SQL エディタで、次の例に示すようにインデックスの定義を変更します。
-- ============================================= -- Create index on RatingDate column in --the ShipperRating table. -- ============================================= CREATE INDEX [ShipperRatingDate] ON [dbo].[ShipperRating] (RatingDate)
[ファイル] メニューの [ShipperRatingDate の保存] をクリックして、変更を保存します。 定義が有効になったため、エラー アイコンが通常のインデックスのアイコンに置き換えられます。
変更をバージョン管理にチェックインするには
ソリューション エクスプローラで MyNorthwind データベースをクリックします。
[表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。
[保留中の変更] ウィンドウが表示され、追加または変更したすべてのファイルを確認できます。
(省略可能) チェックイン コメントを指定します。
[チェックイン] をクリックします。
データベース プロジェクトの変更がチェックインされ、他のチーム メンバが使用できるようになります。
メモ : ここでは、Team Foundation バージョン管理 を使用している場合の手順について説明しています。 Team Foundation バージョン管理 を使用していない場合は、使用するバージョン管理システムに合った手順に従う必要があります。
次の手順
このデータベースのオフライン形式を変更したら、変更をビルドし、データベース サーバーに配置する必要があります。変更をビルドして配置する方法については、「チュートリアル: 既存のバージョン管理されたデータベースへの変更の配置」を参照してください。
参照
処理手順
チュートリアル : 既存のデータベース スキーマのバージョン管理
チュートリアル : バージョン管理されたデータベースの新規作成と配置
概念
シナリオ : データベースおよびサーバー オブジェクトの作成および変更