演练:修改数据库对象

更新:2007 年 11 月

在本演练中,您将使用 Transact-SQL (T-SQL) 编辑器修改数据库项目中的若干个数据库对象的定义。此过程由以下步骤组成:

  • 打开包含数据库项目的解决方案。

  • 向表中添加列。您的客户希望跟踪推出产品的年份。若要执行此步骤,请向“Products”表中添加一个“DateAdded”列。

  • 添加表“ShipperRating”以跟踪客户如何评价处理其订单的发货人所提供的服务质量。另外,还要添加外键关系和索引。

先决条件

本演练假定您已完成 演练:将现有数据库架构置于版本控制之下。完成该演练后,您获得了一个包含名为“MyNorthwind”的数据库项目的解决方案。

打开 MyNorthwind 解决方案

  1. 在“文件”菜单上指向“打开”,然后单击“项目/解决方案”。

    将出现“打开项目”对话框。

  2. 打开 MyNorthwind 文件夹,然后双击 MyNorthwind.sln。

    MyNorthwind 解决方案将打开并显示在“解决方案资源管理器”中。

  3. 在“视图”菜单上单击“架构视图”。

    如果“架构视图”尚未显示,此时将显示该视图。它显示了数据库项目中定义的所有对象。

  4. 如果尚未在“架构视图”中展开数据库项目节点,请将其展开。

    接下来将修改表定义,以向表中添加列。

向“Products”表中添加“DateAdded”列

  1. 在“架构视图”中,右击“Products”表,然后单击“打开”。也可以双击“Products”表。

    T-SQL 编辑器将打开并显示“Products”表的定义。

  2. 在 T-SQL 编辑器中,修改该定义以添加“DateAdded”列,如下面的示例所示:

    CREATE TABLE [dbo].[Products]
    (
    [ProductID] [int] NOT NULL IDENTITY(1, 1),
    [ProductName] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL,
    [SupplierID] [int] NULL,
    [CategoryID] [int] NULL,
    [QuantityPerUnit] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CS_AS NULL,
    [UnitPrice] [money] NULL CONSTRAINT [DF_Products_UnitPrice] DEFAULT (0),
    [UnitsInStock] [smallint] NULL CONSTRAINT [DF_Products_UnitsInStock] DEFAULT (0),
    [UnitsOnOrder] [smallint] NULL CONSTRAINT [DF_Products_UnitsOnOrder] DEFAULT (0),
    [ReorderLevel] [smallint] NULL CONSTRAINT [DF_Products_ReorderLevel] DEFAULT (0),
    [Discontinued] [bit] NOT NULL CONSTRAINT [DF_Products_Discontinued] DEFAULT (0),
    [DateAdded] [datetime] NULL
    ) ON [PRIMARY]
    
  3. 在“文件”菜单上单击“保存 dbo.Products”,保存所做的更改。

    默认情况下,将自动从源代码管理中签出该文件。如果修改了源代码管理的设置,系统将提示您签出该文件。

    接下来将向数据库项目中添加一个名为“ShipperRating”的表。

添加“ShipperRating”表

  1. 在“架构视图”中单击“表”文件夹。

  2. 在“项目”菜单上,单击“添加新项”。也可以右击“表”文件夹,指向“添加”,再单击“表”。

    即会出现“添加新项”对话框。

  3. 在“模板”列表中单击“表”。

  4. 在“名称”中键入 ShipperRating,然后单击“添加”。

    “ShipperRating”表将添加到数据库项目和源代码管理中。此外,还将出现 T-SQL 编辑器,以便您可以编辑此表的定义。

  5. 在 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]
    
  6. 在“文件”菜单上单击“保存 dbo.ShipperRating”,保存所做的更改。

    接下来将向“ShipperRating”表中添加一个外键。

向“ShipperRating”表中添加外键

  1. 在“架构视图”中右击“ShipperRating”表,指向“添加”,再单击“外键”。

    将出现“添加新项”对话框,其中“外键”模板已突出显示。

  2. 在“名称”中键入 FK_ShipperRating_Shippers,然后单击“添加”。

    外键 FK_ShipperRating_Shippers 将添加到项目中的“ShipperRating”表中。此外,还将出现 T-SQL 编辑器,以便您可以编辑该外键的定义。

    说明:

    该外键的默认定义引用表名称中的第 1 列,而不是实际的表和列。因此,在“架构视图”中,FK_ShipperRating_Shippers 的图标将显示为错误图标(一个包含白色“x”的红色圆圈)。另外,在“错误列表”窗口中还会显示一个错误,指示您有一个无效的数据库对象定义。此行为是预期行为。“解决方案资源管理器”中包含该对象定义的文件不显示错误图标。

  3. 在 T-SQL 编辑器中,修改该外键定义以匹配以下示例:

    ALTER TABLE [dbo].[ShipperRating]
    ADD CONSTRAINT [FK_ShipperRating_Shippers] 
    FOREIGN KEY ([ShipperID])
    REFERENCES [dbo].[Shippers] ([ShipperID])
    
  4. 在“文件”菜单上单击“保存 dbo.FK_ShipperRating_Shippers”,保存所做的更改。现在,该定义已经有效,因此错误图标将被替换为外键约束的常规图标。

    在最后一步中,将向“ShipperRating”表中添加索引。

向“ShipperRating”表中添加索引

  1. 在“架构视图”中单击“索引”文件夹。

  2. 在“项目”菜单上,单击“添加新项”。也可以右击“索引”文件夹,指向“添加”,然后单击“索引”。

  3. 在“模板”列表中,如果尚未突出显示“索引”,请单击它。

  4. 在“名称”中键入 ShipperRatingDate,然后单击“添加”。

    “ShipperRatingDate”索引将添加到项目中的“ShipperRating”表中。此外,还将出现 T-SQL 编辑器,以便您可以编辑该索引的定义。

    说明:

    该索引的默认定义引用第 1 列而不是实际列名。因此,“解决方案资源管理器”中的 ShipperRatingDate 图标将显示为错误图标(一个包含白色“x”的红色圆圈)。另外,在“错误列表”窗口中还将显示一个错误,指示您有一个无效的数据库对象定义。此行为是预期行为。

  5. 在 T-SQL 编辑器中修改索引定义,使其与下面的示例匹配:

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

    在“文件”菜单上单击“保存 ShipperRatingDate”,保存所做的更改。现在,该定义已经有效,因此错误图标被替换为索引的常规图标。

将更改签入到版本控制中

  1. 在“解决方案资源管理器”中单击“MyNorthwind”数据库。

  2. 在“文件”菜单上指向“源代码管理”,然后单击“签入”。

  3. 按照针对源代码管理插件的步骤签入文件。有关更多信息,请参见使用 Team Foundation 版本控制

    现在,数据库项目更改已被签入并可供其他团队成员使用。

后续步骤

在修改了此数据库的脱机表示形式后,必须生成这些更改并将其部署到数据库服务器。若要生成并部署更改,请参见演练:将更改部署到受版本控制的现有数据库

请参见

任务

演练:将现有数据库架构置于版本控制之下

演练:创建和部署受版本控制的新数据库

概念

数据库对象使用概述

Database Edition 术语概述

其他资源

生成和部署数据库架构