使用 Visual Studio .NET 定义数据库表
在 Visual Studio .NET 中定义数据库表的最简单的方法是创建一个数据库图。这样,您可以在一个类似“所见即所得”的编辑器中定义所有细节。您只需展开 Server Explorer(服务器资源管理器)中相应的树,在 Database Diagrams(数据库图)项上单击鼠标右键,然后从上下文相关菜单中选择 New Database Diagram...(新建数据库图...),即可启动一个新的空白图。第一次启动某个图时,系统将要求您从数据库中选择一个表。因为您尚未创建任何表,所以可以忽略该对话框。现在,可以开始定义您的表了。
在生成的《
ASP.NET应用程序规划与设计》用户方案文档包含定义表所需的信息。学习定义如何在系统中添加新记录的方案,通常是了解需要存储哪些数据的最佳途径。有时,您需要查看诸如记录更新甚至是报告之类的其他方案,以确保没有遗漏其他字段。在本示例中,“添加记录”方案就是一个很好的参考方案。
例如,以下是用于添加问题的方案:
添加新问题
向系统中添加一条新问题记录,其中包括标题、日期/时间、指明该问题所属类别的主题 ID 以及问题正文。有时还需要提供问题提出者姓名及其电子邮件地址。添加新问题之后,将向调用函数返回一个唯一的整数问题 ID。
重要名词以粗体表示。阅读方案说明时,这些名词或表名(例如,“问题记录”就是一个很好的例子)往往能够表明需要存储哪些数据。使用上述信息,您可以在数据库图中添加一个新表并定义所需的列。下面的示例详细介绍了如何在数据库图中添加表。
在图“surface”上单击鼠标右键并从上下文相关菜单中选择 New Table...(新建表...)。输入 Questions(问题)作为表名,然后单击 OK(确定)将其添加到图中。
在 Questions(问题)表对话框中,键入上文所述方案中提供的字段信息。例如,Column Name(列名)= ID、Data Type(数据类型)= int、Length(长度)= 4,并取消选择 Allow Nulls(允许为空)复选框。对该表的其余部分重复上述操作(参见图 3)。
图 3:Questions(问题)表
您将看到,第一列 (ID) 旁边有一个小的金色键。它表示该字段是该表的主键字段。要设置主键字段,可以在列表中的列名上单击鼠标右键,然后从上下文相关菜单中选择 Primary Key(主键)。另外,还应将此 ID 字段设置为以增量方式自动增加的标识列。这样,SQL Server 就可以为添加到表中的每条记录自动生成一个唯一的整数值。要进行此设置,请在该列上单击鼠标右键,从上下文相关菜单中选择 Properties(属性),然后在 Property Pages(属性页)对话框中选择 Columns(列)选项卡。其他的操作就很容易了(参见图 4)。
图 4:Property Pages(属性页)对话框中的 Columns(列)选项卡
使用“添加主题记录”和“添加解答记录”方案中的信息,可以创建其他两个表。请务必为每个表创建 ID 列,并将这些列标记为标识列和主键。下面的图 5 显示了三个已完成的表。
图 5:三个已完成的表
您会发现,这些表都通过连接线与数据库图连接起来。这些连接线表明表之间存在外键关系。例如,Questions(问题)表中的 TopicID 列与 Topics(主题)表中的 ID 列相关联。通过将这种关系存储到数据库中,您可以制定用以防止在数据库中保存非法数据的规则。本示例中的关系规则是,Questions.TopicID 列所允许的有效值只能是 Topics.ID 列中已存在的某条记录的值。
您可以通过将 Questions(问题)表中的 TopicID 列拖放到 Topics(主题)表中的 ID 列上,来定义这些关系。此时将出现一个对话框,显示规则定义的详细信息并要求您按下 OK(确定)按钮进行确认(参见图 6)。
图 6:Create Relationship(创建关系)对话框
您可能会发现,Responses.QuestionID 和 Questions.ID 之间也定义了一个关系。
注意:您可能已经注意到,我们还没有为专家定义任何表。我决定将有关专家的信息存储在一个 XML 文件中,而不是存储在数据库中。这样做的主要原因是我们可以借此讨论一下如何读写 XML 数据,以便在同一个应用中融合 XML 数据和关系数据。我们将在下一部分中讨论有关专家数据的问题。
至此,数据库和表都已定义完毕。以上介绍了解决方案的实际数据存储过程。但是,我们还需要了解如何在表中读写信息。为此,我们将定义 SQL Server 中的存储过程。