연습: 데이터베이스 개체 수정

이 연습에서는 Transact-SQL 편집기를 사용하여 데이터베이스 프로젝트에서 여러 데이터베이스 개체의 정의를 수정합니다. 이 프로세스는 다음 단계로 구성됩니다.

  • 데이터베이스 프로젝트가 있는 솔루션을 엽니다.

  • 테이블에 열을 추가합니다. 고객이 제품 출시 연도를 추적하길 원합니다. 이 단계를 수행하기 위해 Production 스키마의 Product 테이블에 DateAdded 열을 추가합니다.

  • 고객 주문을 처리하는 납품자의 서비스 품질 등급을 고객이 평가하는 방법을 추적할 수 있도록 Purchasing.ShipperRating이라는 테이블을 추가합니다. 외래 키 관계 및 인덱스도 추가합니다.

사전 요구 사항

이 연습에서는 연습: 버전 제어에서 기존 데이터베이스 스키마 관리를 완료한 것으로 간주합니다. 이 선행 연습의 결과로 MyAdvWorks라는 데이터베이스 프로젝트가 있는 솔루션을 갖게 됩니다.

MyAdvWorks 솔루션을 열려면

  1. 파일 메뉴에서 열기를 가리킨 다음 프로젝트/솔루션을 클릭합니다.

    프로젝트 열기 대화 상자가 나타납니다.

  2. MyAdvWorks 폴더를 열고 MyAdvWorks.sln을 두 번 클릭합니다.

    MyAdvWorks 솔루션이 열리고 솔루션 탐색기에 나타납니다.

  3. 보기 메뉴에서 데이터베이스 스키마 뷰를 클릭합니다.

    스키마 뷰가 아직 표시되지 않은 경우 표시됩니다. 데이터베이스 프로젝트에 정의되어 있는 모든 개체를 보여 줍니다.

  4. 스키마 뷰의 데이터베이스 프로젝트 노드를 아직 확장하지 않은 경우 확장합니다.

    다음에는 테이블 정의를 수정하여 열을 테이블에 추가합니다.

Product 테이블에 DateAdded 열을 추가하려면

  1. 스키마 뷰에서 Production 폴더와 테이블 폴더를 차례로 확장하고 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 폴더를 확장한 다음 테이블 폴더를 클릭합니다.

  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를 입력한 다음 추가를 클릭합니다.

    FK_ShipperRating_Shippers 외래 키가 프로젝트의 ShipperRating 테이블에 추가됩니다. 외래 키에 대한 정의를 편집할 수 있도록 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를 입력한 다음 추가를 클릭합니다.

    ShipperRatingDate 인덱스가 프로젝트의 ShipperRating 테이블에 추가됩니다. 인덱스에 대한 정의를 편집할 수 있도록 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. 체크 인을 클릭합니다.

    데이터베이스 프로젝트에 대한 변경 내용이 체크 인되었으므로 이제 다른 팀 멤버가 사용할 수 있습니다.

다음 단계

이 데이터베이스에 대한 오프라인 표현을 수정한 후에 데이터베이스 서버에 해당 변경 내용을 빌드하고 배포해야 합니다. 변경 내용을 빌드하고 배포하려면 연습: 기존 버전 제어 데이터베이스로 변경 내용 배포를 참조하십시오.

참고 항목

작업

연습: 버전 제어에서 기존 데이터베이스 스키마 관리

연습: 새 버전 제어 데이터베이스 만들기 및 배포

개념

데이터베이스 코드 작성 및 변경

데이터베이스를 빌드하여 격리된 개발 환경에 배포

데이터베이스 코드 및 데이터 리팩터링