次の方法で共有


チュートリアル : データベース オブジェクトの変更

このチュートリアルでは、Transact-SQL エディターを使用して、データベース プロジェクトに含まれる一部のデータベース オブジェクトの定義を変更します。 このプロセスは、次のステップで構成されます。

  • データベース プロジェクトが含まれているソリューションを開きます。

  • テーブルに列を追加します。 ここでは、顧客が製品が導入された年を追跡できるようにします。 このステップを実行するために、Production スキーマの Product テーブルに [DateAdded] 列を追加します。

  • 注文品を扱う出荷業者のサービス品質に対する顧客の評価を追跡する、Purchasing.ShipperRating テーブルを追加します。 外部キー リレーションシップとインデックスも追加します。

必須コンポーネント

このチュートリアルは、「チュートリアル: 既存のデータベース スキーマのバージョン管理」が既に実行済みであることを前提としています。 実行済みのこのチュートリアルによって、MyAdvWorks という名前のデータベース プロジェクトを含むソリューションが作成されています。

MyAdvWorks ソリューションを開くには

  1. [ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。

    [プロジェクトを開く] ダイアログ ボックスが表示されます。

  2. MyAdvWorks フォルダーを開き、[MyAdvWorks.sln] をダブルクリックします。

    MyAdvWorks ソリューションが開き、ソリューション エクスプローラーに表示されます。

  3. [表示] メニューの [スキーマ ビュー] をクリックします。

    スキーマ ビューがまだ表示されていない場合は、表示されます。 データベース プロジェクトに定義されているすべてのオブジェクトが表示されます。

  4. スキーマ ビューでデータベース プロジェクト ノードが展開されていない場合は、展開します。

    次に、テーブル定義を変更して、テーブルに列を追加します。

Product テーブルに [DateAdded] 列を追加するには

  1. スキーマ ビューで Production フォルダーを展開して、Tables フォルダーを展開し、Product テーブルを右クリックして [開く] をクリックします。

    別の方法として、Product テーブルをダブルクリックして開くこともできます。

    Transact-SQL エディターが開き、Product テーブルの定義が表示されます。

  2. Transact-SQL エディターで、次の例に示すように定義を変更して、[DateAdded] 列を追加します。

    CREATE TABLE [Production].[Product] (
        [ProductID]             INT              IDENTITY (1, 1) NOT NULL,
        [Name]                  [dbo].[Name]     NOT NULL,
        [ProductNumber]         NVARCHAR (25)    NOT NULL,
        [MakeFlag]              [dbo].[Flag]     NOT NULL,
        [FinishedGoodsFlag]     [dbo].[Flag]     NOT NULL,
        [Color]                 NVARCHAR (15)    NULL,
        [SafetyStockLevel]      SMALLINT         NOT NULL,
        [ReorderPoint]          SMALLINT         NOT NULL,
        [StandardCost]          MONEY            NOT NULL,
        [ListPrice]             MONEY            NOT NULL,
        [Size]                  NVARCHAR (5)     NULL,
        [SizeUnitMeasureCode]   NCHAR (3)        NULL,
        [WeightUnitMeasureCode] NCHAR (3)        NULL,
        [Weight]                DECIMAL (8, 2)   NULL,
        [DaysToManufacture]     INT              NOT NULL,
        [ProductLine]           NCHAR (2)        NULL,
        [Class]                 NCHAR (2)        NULL,
        [Style]                 NCHAR (2)        NULL,
        [ProductSubcategoryID]  INT              NULL,
        [ProductModelID]        INT              NULL,
        [DateAdded]             DATETIME         NOT NULL,
        [SellStartDate]         DATETIME         NOT NULL,
        [SellEndDate]           DATETIME         NULL,
        [DiscontinuedDate]      DATETIME         NULL,
        [rowguid]               UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL,
        [ModifiedDate]          DATETIME         NOT NULL
    );
    
    
    GO
    EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Products sold or used in the manfacturing of sold products.', @level0type = N'SCHEMA', @level0name = N'Production', @level1type = N'TABLE', @level1name = N'Product';
    

    オブジェクト定義を変更する場合は、対象となる定義を含むファイルをバージョン管理からチェックアウトします。

  3. [ファイル] メニューの [Product.table.sql の保存] をクリックして、変更を保存します。

    既定では、ファイルがソース管理から自動的にチェックアウトされます。 ソース管理設定を変更した場合、バージョン管理設定の構成によっては、ファイルのチェックアウトを求めるメッセージが表示されることがあります。

    次に、ShipperRating テーブルをデータベース プロジェクトに追加します。

ShipperRating テーブルを追加するには

  1. スキーマ ビューPurchasing フォルダーを展開し、Tables フォルダーをクリックします。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。 テーブル フォルダーを右クリックし、[追加] をポイントして、[テーブル] をクリックする方法もあります。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [テンプレート] ボックスの一覧の [テーブル] をクリックします。

  4. [名前] ボックスに、「ShipperRating」と入力し、[追加] をクリックします。

    ShipperRating テーブルがデータベース プロジェクトとソース管理に追加されます。 Transact-SQL エディターが表示され、このテーブルの定義を編集できるようになります。

  5. Transact-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 [Purchasing].[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]
    
  6. [ファイル] メニューの [ShipperRating.table.sql の保存] をクリックして、変更を保存します。

    次に、ShipperRating テーブルに外部キーを追加します。

ShipperRating テーブルに外部キーを追加するには

  1. スキーマ ビューで ShipperRating テーブルを右クリックし、[追加] をポイントして、[外部キー] をクリックします。

    [外部キー] テンプレートが既に強調表示された状態で、[新しい項目の追加] ダイアログ ボックスが表示されます。

  2. [名前] ボックスに、「FK_ShipperRating_Shippers」と入力し、[追加] をクリックします。

    プロジェクトの ShipperRating テーブルに FK_ShipperRating_Shippers 外部キーが追加されます。 Transact-SQL エディターが表示され、外部キーの定義を編集できるようになります。

    注意

    外部キーの既定の定義は、実際のテーブルや列ではなく tablename の column_1 を参照します。 したがって、スキーマ ビューの FK_ShipperRating_Shippers のアイコンには、エラー アイコン (赤の円で囲まれた白い "x") が表示されます。 また、[エラー一覧] ウィンドウにエラーが表示され、データベース オブジェクトの定義が無効であることが示されます。 これは予測どおりの動作です。 ソリューション エクスプローラーの、オブジェクト定義が含まれているファイルには、エラー アイコンは表示されません。

  3. Transact-SQL エディターで、次の例に示すように外部キーの定義を変更します。

    ALTER TABLE [Purchasing].[ShipperRating]
    ADD CONSTRAINT [FK_ShipperRating_Shippers] 
    FOREIGN KEY ([ShipperID])
    REFERENCES [Purchasing].[ShipMethod] ([ShipMethodID])
    
  4. [ファイル] メニューの [ShipperRating.FK_ShipperRating_Shippers.fkey.sql の保存] をクリックして、変更を保存します。 定義が有効になったため、エラー アイコンが通常の外部キー制約のアイコンに置き換えられます。

    最後のステップでは、ShipperRating テーブルにインデックスを追加します。

ShipperRating テーブルにインデックスを追加するには

  1. スキーマ ビューでインデックス フォルダーをクリックします。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。 インデックス フォルダーを右クリックし、[追加] をポイントして、[インデックス] をクリックする方法もあります。

  3. [テンプレート] の一覧で、[インデックス] がまだ強調表示されていない場合は、クリックします。

  4. [名前] ボックスに、「ShipperRatingDate」と入力し、[追加] をクリックします。

    プロジェクトの ShipperRating テーブルに ShipperRatingDate インデックスが追加されます。 Transact-SQL エディターが表示され、インデックスの定義を編集できるようになります。

    注意

    インデックスの既定の定義は、実際の列名ではなく column_1 を参照します。 したがって、ソリューション エクスプローラーの ShipperRatingDate のアイコンには、エラー アイコン (赤色の円に白抜きで "x" と表示される) が表示されます。 また、[エラー一覧] ウィンドウにエラーが表示され、データベース オブジェクトの定義が無効であることが示されます。 これは予測どおりの動作です。

  5. Transact-SQL エディターで、次の例に示すようにインデックスの定義を変更します。

    -- =============================================
    -- Create index on RatingDate column in 
    --the ShipperRating table.
    -- =============================================
    CREATE INDEX [ShipperRatingDate]
    ON [Purchasing].[ShipperRating]
    (RatingDate)
    

    [ファイル] メニューの [ShipperRating.ShipperRatingDate.index.sql の保存] をクリックして、変更を保存します。 定義が有効になったため、エラー アイコンが通常のインデックスのアイコンに置き換えられます。

変更をバージョン管理にチェックインするには

  1. [表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。

    [保留中の変更] ウィンドウが表示され、追加または変更したすべてのファイルを表示できます。

    注意

    この手順では、Team Foundation バージョン管理を使用している場合の手順について説明します。 Team Foundation バージョン管理を使用していない場合は、使用しているバージョン管理システムの手順に従う必要があります。

  2. (省略可能) チェックイン コメントを指定します。

  3. [チェックイン] をクリックします。

    これでデータベース プロジェクトの変更がチェックインされ、他のチーム メンバーが使用できるようになります。

次の手順

このデータベースのオフライン形式を変更したら、変更をビルドし、データベース サーバーに配置する必要があります。 変更をビルドして配置する方法については、「チュートリアル: 既存のバージョン管理されたデータベースへの変更の配置」を参照してください。

参照

処理手順

チュートリアル: 既存のデータベース スキーマのバージョン管理

チュートリアル : バージョン管理されたデータベースの新規作成と配置

概念

データベース コードの記述と変更

データベースのビルドおよび分離開発環境への配置

データベースのコードとデータのリファクタリング