sqlserver增加外键(「父子关系」数据库SqlServer主从表相关问题的简明讲义)

首页常识更新时间:2023-07-09 11:34:55

主从关系(又叫父子关系)是数据库中两表之间的常见关系,初学者在这里的理解,往往出现反复。我们的宗旨是,只学习一次,就彻底解决所有问题,以后不需要再去复习。

第一步:创建数据库及表

首先启动SqlServer前台工具Microsoft Management Studio,连接服务器,登陆后,创建一个数据库,名称为:gCodeTop。

然后,再创建两张表。

学生表 :Student

班主任表: Formteacher

结构如下:

设置好两个表的主键。

第二步:往表中添加数据

分别打开上面设计好的表,输入测试数据,如下图所示:

第三步:新建一个相等内连接查询代码

查询代码及运行结果如下:

第四步:修改表中班主任编号数据为错误信息,并再次查询

打开上述的两张表,把班主任表中刘老师的编号改成错误的,假设为:22,把学生表中杨婷同学对应的班主任编号也改成错误的,假设为:33,如下图所示:

然后,再一次运行下方代码,如图所示:

最终查询结果,少两个学生,少一个老师。

查询结果只显示正确的符合条件的数据,不符合条件的数据不显示。如何使哪些不符合条件的数据也显示出来?这样的做的目的便于人们找到错误数据,便于纠错。

第五步:新建查询,通过外连接查询显示所有信息,包括上述的部分错误信息。

新建下方的查询代码,其中的核心代码有三段:左外连接,右外链接,全外连接。

运行完毕后,显示分为三个部分:

上面部分 左外连接,左表 Student 显示详尽的信息,右表Formteacher显示部分老师。

中间部分 右外连接,右表 Formteacher显示详尽的信息,左表Student显示部分学生。

下面部分 全外连接,两个表都显示详尽的信息。

NUll代表空,表示无效的对应的数据。

第六步:通过外键约束来有效保证两表之间的外键关系。

首先,重新修改上述的两张表,把错误信息再改成正确信息。这一步,切记不要忘了

然后,右击Student设计界面,在弹出的菜单中,选择关系,如下图:

然后,弹出一个对话框,点击左下方 添加关系,然后,再点击蓝色十字所示的空白位置,又弹出一个对话框:

主键表 Formteacher 中选主键 FormteacherID,

外键表 Student中选外键 FormteacherID。

最后,确定退出,并且切记:保存

然后,刷新学生表列,FormteacherID列名前面出现了一把[黑钥匙]。同时,键目录下下面,除了主键外,又多一个刚才添加的外键(或者称:外键约束),说明外键约束实施完毕。

第七步:再一次修改表中数据,测试这个外键约束的作用。

打开Student表,重新修改杨婷同学对应的班主任编号信息为错误信息时,会弹出下方的错误提示框,禁止数据被修改。同样,当我们再一次修改班主任标的编号为错误信息时,也会弹出类似的提示。

到此为止,任务结束了。

小结

两个表为主从关系时,主表的数据往往要先维护,从表的数据往往要后维护,从表数据依赖于主表。主表也叫父表、主键表,从表也叫子表、外键表。外键表 Student的外键 FormteacherID要依赖于主键表Formteacher的主键FormteacherID。也就是说,外键表 Student的外键 FormteacherID是主键表Formteacher的主键FormteacherID集合的子集。

从生活经验得知,父要先出生,子后出生,子依赖父,子要花父的钱。儿子花的钱再多,都不能超过父亲挣的钱(即:儿子花的钱是父的子集)。有些父,自己收养了一个儿子,通过办理某种法律手续,达成双方的父子关系,这种父子关系通过某种文书来保证,就好比数据库中的外键约束。通过这些引喻,便于初学者更好地理解记忆。

没有这种外键约束,数据维护比较灵活,但是又可能出现数据不一致的问题。有了这种约束,数据维护缺乏灵活性,但有效地保证了数据的一致性。一般情况下,对于外键,最好采用外键约束来保证数据的一致性。

但采用的外键约束后,又会出现两个技术问题:级联更新,级联删除。这两个问题以后通过其他专题来讲。

,
展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.