数据库总结之外键再学习

时间:2024.4.20

之所以称之为再学习,是因为此前曾学习过这些知识,只不过当时没有总结。现在再次遇到它,详细再学习一下,加深印象。

什么是外键?

如果公共关键字(表中相同的属性)是一个关系中的主关键字(primary key),那么这个公共关键字被称为另一个关系的外键。

相关概念解析:

公共关键字:多个表中的相同的属性或属性组。

主关键字:即主键。

关系:即一张表。

主表与从表

表A中有a、b两个字段,a字段是主键。表B有a、c两个字段。a字段可以设置外键。此时,表A为主表,表B为从表。

外键的作用:

1、数据完整性的(数据库基础理论书中所说的“参照完整性”的数据库实现方式。)

2、保持数据一致性,

3、控制存储在外键表中的数据

简而言之:当你对一个表的数据进行操作时和他有关联的一个或更多表的数据能够同时发生改变,这就是外键的作用。

外键约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers

表中删除一个出版商,而这个出版商的 ID 在 titles

表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles

表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。

外键约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的外键约束值相关,则该操作不可实现。若要成功更改或删除外键约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

例如:

a b

两个表

a表中存有客户号,客户名称

b表中存有每个客户的订单

有了外键后,你只能在确信b

表中没有客户x的订单后,才可以在a表中删除客户x,否则b表中的数据就变得孤立了,即完整性缺失。

建立外键的原则:

1、为关联字段创建外键。

2、所有的键都必须唯一。

3、避免使用复合键。

4、外键总是关联唯一的键字段。

如何建立外键:

一、使用T-SQL语句:

指定主键关键字:foreign key(列名)

引用外键关键字:references <外键表名>(外键列名)

事件触发限制: ondelete和on update ,

可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no

action

例如:

outTable表主键 id

类型 int

创建含有外键的表:

create table temp(

id int,

name char(20),

foreign key(id) references outTable(id) on delete cascade on updatecascade); 说明:把id列设为外键,参照外表outTable的id列,当外键的值删除,本表中对应的列删除(on

delete的作用),当外键的值改变,本表中对应的列值改变(on update的作用)。

二、使用DBMS关系图建立外键:

1、建表(见图,设置主键。)

2、新建关系图

3、选择添加表:

4、建立外键,将要建立外键关系表中主键字段拖向外键字段。

5、点击确(参考:http://www.gpskld.com)定即可完成外键的建立。

使用外键的注意事项:

1、使两张表形成关联,外键只能引用外表中的列的值。

2、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。

3、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处非常明显

4、相对于触发器或程序完成的这个工作(指参照完整性约束),外键更方便。

5、阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。

6、建立外键的前提:本表的列必须与外键类型相同(外键必须是外表主键)。


第二篇:数据库总结


(一)E-R图

1.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生。每个班有若干学生,每个学生选修若干课程,每门课可有若干学生选修。用E-R图画出此学校的信息模型(概念模型)。

参考答案:

解:

系 1 教研室 拥有 班级 1 1 工作 属于 m 教员 n p 1 教学 学生 m 选修 指导 n 研究生 m n n 课程 学习

(二)简答

1.试述等值连接和自然连接的区别和联系。

答:连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

2.使用数据库系统有什么好处?

答:使用数据库系统的好处是由数据库管理系统的特点或优点决定的。使用数据库系统的好处很多,例如,可以大大提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维护的负担,等等。使用数据库系统可以大大提高应用开发的效率。因为在数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径,这些工作都由 DBMS 来完成。用一个通俗的比喻,使用了 DBMS 就如有了一个好参谋、好助手,许多具体的技术工作都由这个助手来完成。开发人员就可以专注于应用逻辑的设计,而不必为数据管理的许许多多复杂的细节操心。还有,当应用逻辑改变,数据的逻辑结构也需要改变时,由于数据库系统提供了数据与程序之间的独立性,数据逻辑结构的改变是 DBA 的责任,开发人员不必修改应用程序,或者只需要修改很少的应用程序,从而既简化了应用程序的编制,又大大减少了应用程序的维护和修改。使用数据库系统可以减轻数据库系统管理人员维护系统的负担。因为 DBMS 在数据库建立、运用和维护时对数据库进行统一的管理和控制,包括数据的完整性、安全性、多用户并发控制、故障恢复等,都由 DBMS 执行。总之,使用数据库系统的优点是很多的,既便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。读者可以在自己今后的工作中结合具体应用,认真加以体会和总结。

3.试述数据库系统的组成。

答:数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。

4.简述数据库设计的基本步骤。

答:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护。

5.试述数据模型的概念,数据模型的作用和数据模型的3个要素。

答:数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。一般地讲,数据模型是严格定义的概念的集合。这些概念精确描述了系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。

6.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?

答:数据与程序的逻辑独立性:当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

7.简述视图的作用。

答:视图能够简化用户的操作,视图是用户能以多种角度看待同一数据,视图对重构数据库提供了一定程度的逻辑独立性,视图能够对机密数据提供安全保护,适当的利用视图可以更清晰的表达查询。

(三)数据查询

根据给出的测试要求书写相应查询语句完成练习:

Student (学号,姓名,性别,年龄 ,所在系 )

Course(课程号,课程名,学分)

SC(学号,课程号,成绩 )

(注:三个表必须全部先建立起来,数据内容自己确定)

1.建立学生关系表Student,主鍵为学号。

create table Student

(学号 char(9) primary key,

姓名 char(20) unique,

性别 char(2),

年龄 Smallint,

所在系 char(20));

2.查询所有课程的课程号、课程名。

SELECT 课程号,课程名

FROM Course;

3.查询信息系年龄在18岁以上的学生。

SELECT *

FROM Student

WHERE 所在系='IS'AND年龄>18;

4.求各门课程的平均分。

SELECT AVG(成绩)

FROM SC

GROUP BY 课程号;

5.查询所有名字中最后一个汉字为’强’的学生的学号、姓名、性别和所在系。 SELECT 学号,姓名,性别,所在系

FROM Student

WHERE 姓名 LIKE'%强';

6.求各个学生的学号及选课门数。

SELECT 学号,COUNT(课程号)

FROM SC

GROUP BY 学号

7.查询选修8号课程且成绩小于60分的所有学生的学号、姓名、课程名、成绩。

SELECT Student.学号,姓名,课程名,成绩

FROM Student,Course,SC

WHERE Student.学号=SC.学号 AND SC.课程号=Course.课程号 AND SC.课程号='8'AND SC.成绩<60;

8.查询性别与学号为5的学生的相同的学生的学号、姓名、性别和所在系。(用嵌套查询)

SELECT 学号,姓名,性别,所在系

FROM Student

WHERE 性别 IN

(SELECT 性别

FROM Student

WHERE 学号='5');

9.将所有学生的年龄增加1岁。

UPDATE Student

SET年龄=年龄+1;

10.建立女学生的视图,视图名为SEX_S,包括学号、姓名、年龄三个属性。 CREATE VIEW SEX_S

AS

SELECT 学号,姓名,年龄

FROM Student

WHERE 性别='女';

更多相关推荐:
数据库学习总结报告.doc

数据库学习总结报告SQLServer是一个关系数据库管理系统,它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于19xx年推出了第一个OS/2版本。在WindowsNT推出后…

数据库学习总结

电子商务数据库技术----SQLServer篇学习总结------60951P南信院这学期我们学习了数据库的SQLServer篇,具体内容提纲如下:1、数据库系统的基本概念2、SQL语言一、数据库的基本概念1、…

数据库 学习总结

数据库学习总结XX班姓名学号摘要:在当今信息化的社会里,数据库可以说已经融入到我们生活的方方面面中,如交通运输、银行金融、工商企业等等。只要有大量的数据要管理或者需要有大量数据支持的工作,都要使用到数据库,它为…

数据库学习总结

这学期我们学习了数据库应用教程这门课,以前并不知道这门课是干什么的,也不懂得什么是数据库,通过这一学期的学习,虽然了解的不是非常多,但也有了初步的一点认识。我大概的明白数据库技术是处理信息,管理数据最有效的一种…

数据库学习总结

数据库原理及应用学习体会通过一学期的学习,对《数据库原理及应用》基本有利一个整体性的了解和掌握,本书按顺序可以分为4个部分:第一部分为数据库基础部分(第一章至第三章)。第二部分为数据库系统部分(第四章至第八章)…

最基础的db2数据库学习总结

db2数据库1、打开数据库db2connectto数据库名;2、查看数据库中有哪些表db2listtables;3、查看数据库中的表结构db2describetable表名;db2describetable表名…

空间数据库学习总结

常见的名词:1.形成分辨率由粗到细、数据量由小到大的金字塔结构。2.TIN模型:(不规则三角网模型)重叠、结构最佳的三角形。3.数字地形模型:是地形表面形态属性信息的数字表达,是带有空间位置特征和地形属性特征的…

数据库学习心得体会

数据库学习心得体会这学期我们学习了数据库应用教程这门课,以前并不知道这门课是干什么的,也不懂得什么是数据库,通过这一学期的学习,虽然了解的不是非常多,但也有了初步的一点认识。我大概的明白数据库技术是处理信息,管…

数据库入门学习总结

一图胜十言SQLServer数据库总结一个大概的总结经过一段时间的学习也对数据库有了一些认识数据库基本是由表关系操作组成对于初学者首先要学的1数据库是如何存储数据的表约束触发器2数据库是如何操作数据的inser...

分布式数据库学习总结论文

分布式数据库系统姓名张定国学号s20xx0415第一章分布式数据库系统概述第一章包含五个部分内容分别是引言及准备知识分布库系统的基本概分布库系统的作用和特点分布式数据库系统介绍关键技术引言及准备知识分布数据库管...

数据库课程设计总结报告

数据库课程设计总结报告设计题目学生成绩管理系统学生姓名学院信息学院专业班级指导教师20xx年7月日12目录1前言311开发背景312可行性分析313本文概述42需求分析421市场分析422功能描述423业务流程...

数据库课程设计——总结报告

闽南师范大学计算机学院数据库课程设计总结报告

数据库学习总结(36篇)