[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)

1 创建数据库

(1) 新建数据库

开始 >> 所有程序 >> Microsoft SQL Server 2008 >>  SQL Server Management Studio >> 对象资源管理器>> 数据库右键 >> 新建数据库 >> 在“新建数据库对话框”中将数据库名设置为1012lab。


(2) 创建数据库的脚本

单击“新建数据库对话框”左上角“脚本”下的“将脚本保存到新建查询窗口”,等待左下角显示“已成功完成脚本操作”,点击确定创建数据库。


(3) 脚本作用

在SQL Server Management Studio内保存创建数据库的脚本文件。当以后要创建类似的数据库时,直接执行这个脚本文件即可创建一个新的数据库。


2 添加文件组

(1) 数据库对象和数据文件

创建好数据库1012lab后,其下有许多对象:

[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第1张图片
Figure1. 数据库对象

数据库中的对象保存在数据库中的各数据文件(如数据库主数据文件.mdf,次数据文件.ndf)中。通过操作数据库下的各个对象来完成预定的目标。


(2) 文件和文件组

“文件组”是SQL Server管理数据文件的特殊机制,逻辑的管理单位。将用户设置的数据存放到不同的“文件组”,可以提高访问效率(如当用户数据和索引存放在不同的组时)。创建数据库时,自动生成数据主文件(.mdf)默认属于PRIMARY文件组。


(3) 为文件创建文件组

在对象资源管理器内选择1012lab >> 右键 >> 属性 >> 文件页面 >> 添加(文件类型默认为数据) >> 设置数据文件名称,初始大小 >> 在文件组菜单内选择“新文件组” >> 将文件组名设置为Persons并勾选默认文件组(以后创建的数据文件默认到Persons这个文件组)。


3 定义数据表与关系

表是存放所有数据的对象。


(1) 创表

[1] 创数据关系图

在对象资源管理器中选择1012lab >> 数据库关系图 >> 右键 >> 新建数据库关系图 >> 关闭。


[2] 为表自定义数据类型

因为接下来的两个表的列的属性(列属性的数据类型很重要,要与实际的数据类型相匹配,在定义表列属性的数据类型时查看各SQL 数据类型的含义:搜“SQL DATA TYPE”)大部分都相同,故而可以为它们自定义数据类型。

1012lab>> 可编程性 >> 类型 >> 用户自定义数据类型 >> 右键 >> 新建…(自定义的数据类型源自SQL 数据类型,这些数据类型要与表的列属性相匹配):

Figure2. 自定义SQL 数据类型

[3] 创表列属性

在数据关系图空白处右键 >> 将表名称设置为hex >> 确定。在hex表中设置4个列属性:序号,姓名,性别,并选择刚刚为每个列属性自定义的数据类型。

[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第2张图片

Figure3. 列属性及其数据类型


再用相同的方式新建一个名为teacher的表,其包含序号,性别,性别,门生四个列属性。


(2) 为表添加约束

约束就是限制表中数据存放的方式。如Unique约束可以限制数据列不能出现重复的数据(关于约束具体详情,搜“SQL Server 约束”)。


[1] 为表的“序号”列添加Unique约束

选择创建的表 >> 右键 >> 索引/键 >> 添加 >> 选中添加的项,在常规选项下的“是唯一的”属性更改为“是”,在“列”中选择序号列:

[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第3张图片

Figure4. 设置序号列的Unique约束

点击关闭。

[2] 设置Foreign Key约束

1012lab数据库下的teacher表中的“门生”列项必须是在hex表中“姓名”列中取。


设置hex表中的“姓名”列为主键

在数据关系图中选择hex表中的姓名列 >> 右键 >>主键:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第4张图片
Figure5. 设置hex表姓名列为主键

设置foreign Key属性

选中teacher中的“门生”列,将其拖往hex表上。松开鼠标后,就会打开“表和列”对话框,选择主键表和对应的主键列,选择外键表和对应的列:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第5张图片
Figure6. foreign key约束设置

点击确定。则两个数据库之间的foreign key关系在数据关系图中会显示出来:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第6张图片
Figure7. foreign key 约束在数据关系图中的显示

保存数据关系图和表,此时会在1012lab数据库的数据库关系图和表下生成对应的关系图和表:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第7张图片
Figure8. 生成对应的数据库关系图和表

4 验证约束

如果用SQL直接往teacher中写数据则会报错,因为teacher表的“门生”列的值来源于hex表的“姓名列”。


用SQL在1012lab数据库下为hex表添加内容:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第8张图片
Figure9. hex表内容插入成功

用SQL 在1012lab数据库下为teacher表添加内容:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第9张图片
Figure10. 为teacher添加内容失败

添加失败的原因是teacher表的“门生”列的值必须要在hex表的“姓名”列中存在,“松哥”并不在hex表中。将“松哥”改为“粤哥”再进行一次:
[ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束)_第10张图片
Figure11. teacher表内容插入成功
若在两个表中的序号列再插入’1’或’2’时,SQL Server 会报错,因为“序号”列的值被设置了Unique约束,这一列的值不能重复。

[2014.11.8 - 15:36]
Web Note Over.

你可能感兴趣的:([ASP.NET-IV] SQL Server 08创建数据库 创建表II(使用约束))