SQL Server 2005系列教学(7) 数据库关系图-阿里云开发者社区

开发者社区> 数据库> 正文

SQL Server 2005系列教学(7) 数据库关系图

简介:

数据库关系图;      

SQL SERVERSSMS图形界面中有一种很实用的工具。它可以将表和表间关系以及其他对象以图形方式表现出来,并且我们也可以通过它以图形的方式来增加、修改表和表间关系等数据库对象。学习之前我们先来看一下什么是表间关系与外键约束
表间关系及外键约束
外键是用来在两个表之间建立链接关系的一个字段,将一个表的主键增加到另一个表中可以创建两个表之间的链接,这样这个字段就成了另一个表的外键。我们来举例说明。CLASSSTUDENT表之间存在链接。因为在班级和学生之间存在一定的逻辑联系。现在我们在学生表STUDENT中建立一个CLASSID的列,让它和班级表CLASS中的CLASSID相对应。这样,CLASS这个表中的CLASSID列就是STUDENT表中的外键列.
具体操作如下:打开学生表STUDENT表的设计视图。在STUDENTID下面添加一个CLASSID的列,类型和长度与CLASS表中一致,不允许空值存在,点击工具栏上的属性按纽。打开STUDENT表的属性对话栏,并且切换到关系选项上。点击“新建”,系统会出现一个表现表间关系的一个关系。关系名为FK_STUDENT_CLASSCLASS是主键所在的表。STUDENT是外键所在的表。CLASS表的下拉框中选择CLASSID列。STUDENT表的下拉框中也选择CLASSID列。因为我们要让这两个表之间通过CLASSID建立起关系“创建中检查现有数据”是指是否检查已经存在的记录。“级联删除相关的记录”如果一个班级不存在了,则系统会自动删除所有学生记录。“级联更新相关的记录”指现STUDENT中一有个学生属于2班,但现在CLASS中的2班的CLASSID改为4了,则STUDENT中相应记录的值也会改为4。点击关闭,回到设计视图中保存,则提示两个表都要保存,而我们只对一个表进行了更改,这说明我们已经在它们之间建立了一种联系。我们保存。
 
 
下面我们就来创建一个数据库关系图,并且让大家学会使用数据库关系图来做一些常用的事情。打开SSMS图形界面中的DUFEI数据库并且打开它,选中其中的关系图节点,在右侧的区域中点击鼠标右键,在弹出的快捷菜单中选中新建数据库关系图,打开新建数据库关系图向导,通过欢迎向导我们看到,可以新建一个向导并在其中添加表。还能够根据这个表自动添加一些相关的表。并且系统能将这些表自动排列在关系图中。下一步继续,出现要选择的表的窗口中。在这个窗口中有两个列表,左边的是可用的表,右边的显示的是可以添加到关系图中的表。如第一个表人事表,公司表。在左边表的下方,有个“自动添加相关的表的选项”这个复选框有什么作用呢?当我们在人事表和公司表之间建立了一个外键链接之后,这两个表就成为互相关链的表了。对不对?在我们建立关系图的时候,这两个表就自然少不了联系?极有可能,我们把一个表加到关系图中后,另一个表也会被增加到关系图中,在这种情况下我们就可以选个这个复选项。再选中人事表,添加到关系图中,果然公司表也被自动添加进来了。单击下一步,完成。这时候我们看到了系统自动把人事表和公司表加到了关系图中,并进行了排列,使它们看起来更清楚,完成之后,我们还可以用鼠标选中它们,调整它们的位置。在关系图中每个表都被图形化了,我们看到人事表和公司表都是以一个方框的形式显示出来,并且它们之间还通过了一条链进行了链接,它们的每一列的名称也被显示了出来,是不是。我们也可以进行更改,这个更改就是直接改了这个表的列名,而不是仅仅局限于关系图中。进行更改操作,然后到表中验证。
在选中它们之间的一条链,看看链的属性。这个链就是我们刚刚建立的。两端不一样,钥匙
的一端与CLASS接触,说明这是主键,另一端无穷大,说明是外键,右键“属性”又打开了我们曾经用过的关系窗口。
 
上面的内容可以用部门表,员工表,领导表来进行讲解!
在关系数据库中,关系能防止冗余的数据。如多个员工同属于一个部门中。是不是每个员工都要把部门信息描述一次,这就将造成数据的重复吧!设置好表间关系后只需要一个指针就能引用相关的信息。通常用一对多的关系!
 
如果选中对 INSERT  UPDATE 强制关系 当对外键表插入、更新记录时会检查主键值是否正确,如果在主键表中没有相应的主键值则禁止操作。
级联更新相关的字段:无论何时更新主键值,都指示自动更新该关系的外键值
级联删除相关的记录:指从主键表里删除记录时会从外键表中删除相关的记录
 




 本文转自 dufei 51CTO博客,原文链接:http://blog.51cto.com/dufei/80755,如需转载请自行联系原作者

 
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章