上海商学院数据库期末复习.docx
《上海商学院数据库期末复习.docx》由会员分享,可在线阅读,更多相关《上海商学院数据库期末复习.docx(19页珍藏版)》请在冰点文库上搜索。
上海商学院数据库期末复习
<数据库>
·数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合。
·数据库管理系统(DatabaseManagementSystem,简称DBMS)是位于用户与操作系统之间的一层数据库管理软件。
·数据库系统(DatabaseSystem,DBS)是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。
·数据库系统的构成由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(和用户)构成。
·文件系统管理数据的缺点随着数据管理规模的扩大,数据量急剧增加,文件系统显露出三个缺陷:
数据冗余。
数据与应用的独立性差。
数据联系弱
·文件系统阶段的不足之处共享性是有一定局限,当不同的应用程序使用具有部分相同的数据时,仍必须建立各自的文件,而不能共享相同的数据,造成数据的冗余度大,不能确保数据的一致性。
数据库系统特点(对比文件系统)①数据由DBMS统一管理与控制。
②数据的整体性。
③数据的共享性高,冗余少。
④数据的独立性高。
⑤数据的整体结构化。
优点 便于数据的集中管理,减少数据冗余,提高数据的利用率和一致性。
可以大大提高应用开发的效率,减少开发人员的工作量。
维护方便,可以减轻数据库系统管理人员维护系统的负担。
数据库系统的三级模式结构
外模式/模式映象的用途
保证数据的逻辑独立性。
(当模式改变时,数据库管理员修改有关的
外模式,使外模式保持不变。
应用程序是依
据数据的外模式编写的,从而应用程序不必
修改,保证了数据与程序的逻辑独立性,简称
数据的逻辑独立性。
)
模式/内模式映象的用途
保证数据的物理独立性。
(当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变应用程序不受影响。
保证了数据与程序的物理独立性,简称数据的物理独立性。
)
数据结构 描述数据的组成对象以及对象之间的联系。
两类对象 与数据类型、内容、性质有关的对象。
与数据之间联系有关的对象
现实世界中的信息如何能够进入计算机
现实世界系统分析信息世界数据库设计计算机世界
事物及联系信息化概念模型数据化结构模型
数据模型的两个层次
概念模型/信息模型,按用户的观点来对数据和信息建模。
概念模型不依赖计算机及DBMS。
结构模型/逻辑模型,按计算机系统的观点对数据建模,受到计算机平台、DBMS的限制,直接影响数据库的最终实现。
主要包括网状模型、层次模型、关系模型等。
通常人们按结构模型来区分不同的数据库,称之为数据模型。
常用的三种数据模型p6 1关系模型。
非关系:
2层次模型。
3网状模型。
(数据结构:
以基本层次联系为基本单位。
基本层次联系:
两个记录以及它们之间的一对多。
包括一对一的联系)
概念模型中的基本概念
(1)实体(Entity)客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念。
(2)属性(Attribute)实体所具有的某一特性称为属性。
一个实体可以由若干个属性来刻画。
(3)码(Key)唯一标识实体的属性集称为码,其中的属性称主属性。
●关系数据库
关系的性质1)同一属性的数据具有同质性。
2)同一关系中,属性名不能重复性。
因为属性名具有标识作用。
3)关系中的列位置具有顺序无关性。
4)关系具有元组无冗余性。
5)关系中的元组位置具有顺序无关性。
6)关系中每一个分量都必须是不可分的数据项。
关系操作的特点
(1)关系操作语言操作一体化具有数据定义、查询、更新和控制一体化的特点,既可以作为宿主语言嵌入到主语言中,又可以作为独立语言交互使用。
(2)关系操作的方式是一次一集合方式其他系统的操作是一次一记录方式,而关系操作的方式则是一次一集合方式。
关系操作数据结构单一的特点,能够使其利用集合运算和关系规范化等数学理论进行优化和处理操作,但关系操作与其他系统配合时需要解决处理方式的矛盾。
(3)关系操作语言是高度非过程化的语言具有强大的表达能力。
用户使用关系语言时,只需要指出做什么,而不需要指出怎么做,数据存取路径的选择、数据操作方法的选择和优化都由DBMS自动完成。
关系的完整性具体应用
1实体完整性——若属性A是基本关系R的主属性,则属性A的值不能为空值。
如:
学生(学号,姓名,性别,出生日期)中“学号”不能为空。
选修(学号,课程号,成绩)“学号、课程号”为主码,则两个属性都不能取空值。
2参照完整性①关系间的引用实体及实体间联系用关系来描述,存在关系与关系间的引用。
例:
学生实体、专业实体学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)
v学生关系引用了专业关系的主码“专业号”。
学生关系中的“专业号”值必须是确实存在的专业的专业号,即专业关系中有该专业的记录。
②外码例:
选修关系的“学号”与学生关系的主码“学号”相对应。
选修关系的“课程号”与课程关系的主码“课程号”相对应。
“学号”和“课程号”是选修关系的外码。
学生关系和课程关系均为被参照关系。
选修关系为参照关系
③用户定义的完整性。
例:
课程(课程号,课程名,学分)。
非主属性“课程名”也不能取空值。
“学分”属性只能取值在0~6之间
参照完整性规则例:
选修(学号,课程号,成绩)“学号”和“课程号”可能的取值:
(1)选修关系中的主属性,不能取空值
(2)只能取相应的被参照关系中已经存在的主码值
如何来实现上述的关系数据库完整性约束?
1实体完整性:
给每个关系定义主码。
2参照完整性:
建立关联。
3用户自定义的完整性:
定义有效性规则、应用程序控制。
●数据库设计
数据库系统设计包括哪些内容?
p175
数据库系统设计的各个步骤的任务1需求分析的任务:
p1772概念结构设计p186就是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。
3逻辑结构设计的任务:
把概念结构设计阶段产生的系统基本E-R图转换为某种具体的DBMS所支持的数据模型相符合的逻辑结构。
4物理结构设计:
根据具体的DBMS的特点和应用处理的需要,将逻辑结构设计的关系模式进行物理存储安排,建立索引,形成数据库的内模式。
5数据库的实施:
设计人员使用具体的关系数据库管理系统提供的数据定义语言DDL和其他的实用程序将数据库逻辑结构设计和物理结构设计严格地描述出来,在计算机上建立起实际数据库结构,然后装入数据、进行测试和试运行。
6数据库的运行和维护:
由于应用环境在不断的变化,数据库运行过程中物理存储也会不断的变化,因此对数据库设计进行评价、调整、修改等维护工作
概念设计(画E-R图)
逻辑设计(转换为关系模型)
例题:
概念设计
假设工厂中有如下实体:
产品(产品编号,产品名,规格)
工人(工人编号,姓名,性别,年龄,职称)
车间(车间编号,车间名称,负责人)
上述实体中存在如下联系:
一个车间可生产多种产品,一种产品可由多个车间生产;
一个车间可有多个工人,一个工人只能属于一个车间。
画出E-R图,用下划线标明各实体的主码,并标明实体间的联系的类型(1:
n,m:
n,1:
1)。
例题:
逻辑设计
逻辑设计
读者(借书证号,姓名,单位)
图书(书号,书名,位置,出版社名)
出版社(出版社名,地址,电话,邮编)
借阅(借书证号,书号,借书日期,还书日期)
外码:
借书证号引用读者关系中的借书证号,书号引用图书关系中的书号.
关系代数
∪(并运算)-(差运算)∩(交运算)σ(选择)π(投影)∞(连接)
学生选课库的关系模式为:
学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩).
查询选修了课程名为“数据库”的学生的学号和姓名。
SELECTStuInfo.Sname,ScoreInfo.SID,CourseInfo.Cname
FROMStuInfo,ScoreInfo,CourseInfo
WHERECourseInfo.Cname='高等数学'andStuInfo.SID=ScoreInfo.SID
查询“计算机系”的学生所选修的课程的课程号和课程名?
SELECTStuInfo.Dept,ScoreInfo.CID,CourseInfo.Cname
FROMStuInfo,ScoreInfo,CourseInfo
WHEREStuInfo.Dept='计算机系'andStuInfo.SID=ScoreInfo.SID
没有选修课程号为“C2”课程的学生学号。
SELECTSID,CIDFROMScoreInfo
WHERECID!
=‘C2’
既选修“C2”课程,又选修“C3”课程的学生学号和成绩。
SELECTSID,CID,scoreFROMScoreInfo
WHERECID=‘C2’andcid=’C3’
选修课程号为“C2”或“C3”课程的学生学号。
T-SQL语言
创建表、修改表(见表的管理实验)
数据输入、删除和修改
查询(条件,排序,分组统计,联接)
使用T-SQL命令在teachingData数据库中创建表SInfo表,SInfo表的表结构如下:
列名
数据类型
长度
备注
SID
myID
设为主关键字
SName
myName1
不能为空
Sex
char
2
其值只能为“男”或“女”,默认值为“男”,
Birthday
smalldatetime
允许为空
Dept
myDept
major
varchar
30
Class
varchar
18
允许为空
IDCardNo
char
18
不允许为空
创建表
createtableSInfo
(SIDmyIDprimarykey,
SnamemyName1notnull,
Sexchar
(2)default'男'check(Sex='男'orSex='女'),
Birthdaysmalldatetime,
DeptmyDept,
majorvarchar(30),
Classvarchar(18),
IDCardNochar(18)notnull)
修改表
·修改表SInfo表的表结构,设置DCardNo值为唯一的。
altertableSInfo
addunique(IDCardNo)
·修改表SInfo的表结构,设置Major值只能为”信息管理”、“电子商务”和“计算机科学”。
数据输入、删除、修改
将某门课成绩提高3分。
(课程号C0005)
UPDATECourseInfo
SET成绩=成绩+3/score=score+3
WHERECID='C0005'
输入某位学生某门课的成绩。
(学号100026,课程号C0002,成绩86)
INSERTINTOscoreInfo(SID,CID,score)
VALUES(‘100026’,‘C0002’,‘86’)
删除某一门课的选课记录。
(课程号C0005)
DELETEFROMCourseInfo
WHERECID='C0005'
删除某个学生的选课记录。
(学号100026)
DELETEFROMScoreInfoWHERESID='100026'
数据查询
学生选课库的关系模式为:
学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩).
用SQL语句表达下列要求:
1)查询某个学生的选课记录,包括课程号、成绩,并按课程号降序排序。
(学号为0001026或姓名为王萍)
Selectcid,scorefromscoreInfo
Wheresid=‘0001026’
Orderbyciddesc
2)查询某个系的学生的选课情况,显示学号、课程号、成绩,先按课程号升序,再按成绩降序排序。
(计算机系
SELECTSID,CID,ScoreFROMCourseInfo
WHEREDept='计算机系'
Orderbycid,scoredesc
3)查询每门课的平均分、最高分、选修人数并进一步筛选(人数>20,分数>80)。
Selectavg(score)as平均分,max(score)as最高分,count(sid)as人数
FromscoreInfo
groupbycname
HavingScore>80andcount(sid)>=20
4)查询选修课程名为数据分析的学生记录,包括学号、姓名、所在系。
SELECTStuInfo.Sname,dept,CourseInfo.Cname,ScoreInfo.SID
FROMStuInfo,ScoreInfo,CourseInfo
WHERECourseInfo.CName='数据分析'andStuInfo.SID=ScoreInfo.SID
视图
视图与基本表的区别联系P158视图是从一个或多个基本表或视图中导出的虚表。
视图的用途
视图的创建(CREATEVIEW)
视图的修改(修改视图定义:
ALTERVIEW;
修改视图记录INSERT、UPDATE和DELETE)
视图的删除(DropView)
学生选课库的关系模式为:
学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩).
建立视图S1查看管理系所有男同学的信息;
CREATEVIEWS1(SID,Sname,Sex)
AS
SELECT*
FROMstuinfo,courseinfo,scoreinfo
WHEREstuinfo.sid=scoreinfo.sidandcourseinfo.cid=scoreinfo.cidandSex='男'andDept='管理系'
通过视图S1查询年龄在18-20周岁之间的男同学的信息.
select*
fromS1
wherestuinfo.sid=scoreinfo.sidandcourseinfo.cid=scoreinfo.cidandagebetween‘18’and‘20’andSex=’男’
●数据库安全保护
数据库安全性及控制方法(数据库系统安全模型)
1用户标识与鉴定是系统提供的最外层安全保护措施。
只有在DBMS成功注册了的人员才是该数据库的用户,才可以访问数据库。
2用户标识与鉴定解决了检查用户是否合法的问题,但是合法用户的存取权限不尽相同。
数据安全性的核心问题是DBMS的存取控制机制,确保进入系统的用户只能进行合法的操作。
3操作系统一级也有自己的保护措施。
4数据最后还可以以加密的形式存储到数据库中。
SQLServer2005安全体系结构:
1客户机操作系统的安全性2SQLServer的登录安全性3数据库的安全性4数据库对象的安全性
SQLServer登录帐号和用户帐号
登录服务器的帐号称为登录帐号(Login),也称登录名;
登录帐号是指能登录到SQLServer服务器的帐号,属于服务器的层面,本身并不能让用户访问服务器中的数据库。
如果登录服务器的用户要访问数据库时必须拥有数据库用户帐号。
两种登录帐号1标准SQLServer登录帐号2经过映射的WINDOWS帐号
用户账号
数据库的访问权是通过映射数据库的用户和登录帐号之间的关系来实现。
特殊数据库用户:
(1)dbo用户___即数据库拥有者或数据库创建者,dbo在其所拥有的数据库中拥有所有的操作权限。
dbo的身份可被重新分配给另一个用户,系统管理员Sa可以作为他所管理的任何数据库的dbo用户。
(2)guest用户___如果guest用户在数据库被启用,则允许任意一个登录账号作为guest用户访问数据库,其中包括那些不是数据库用户的SQLServer服务器登录帐号。
数据库故障恢复的必要性及技术
查询例题
1查询学号为’06’开头的学生的学号、姓名、专业?
SELECTSID,SNAME,MajorFROMStuInfo
WHERESIDLIKE'06%'
2查询所有没有考试成绩的学生的学号sid和相应的课程号cid
selectsid,cidfromscoreinfo
wherescoreisnull
3通过查询表StuInfo求信息管理专业中共有多少男生?
Selectmajoras专业,count(sid)as专业_男生数
fromStuInfo
Wheresex='男'
groupbymajor
Havingmajor=‘信息管理’
4查询所有学生考试成绩在80分以上的课程的课程号、课程名、学年和学期。
?
SELECTScoreInfo.CID,Cname,schyear,term
FROMCourseInfo,ScoreInfo
WHERECourseInfo.CID=ScoreInfo.CIDANDScore>80
5查询与王晓红老师职称相同教师的工号TID、姓名TName和职称Title。
SELECTTID,TName,titleFROMTchInfo
WHERETitle=(SELECTTitleFROMTchInfo
WHERETName='王晓红')andtname!
='王晓红‘
6建立计算机学院选修了00000001号课程且成绩在60分以上的学生的视图。
CREATEVIEWStu_Pass1
AS
SELECT学号,姓名,成绩
FROMStuCourse1
WHERE成绩>=60
7建立计算机学院选修了00000001号课程的学生视图StuCourse1,显示学号、姓名和成绩。
CREATEVIEWStuCourse1(学号,姓名,成绩)
AS
SELECTStuInfo.SID,Sname,Score
FROMStuInfo,ScoreInfo
WHEREDept='计算机系'AND
StuInfo.SID=ScoreInfo.SIDAND
ScoreInfo.CID='00000001'
8修改视图“Student_1”为查看计算机学院学生的学号、姓名、性别和专业。
ALTERVIEWStudent_1
AS
SELECTSID,sname,sex,Major
FROMStuInfo
WHEREDept='计算机系'
9利用视图StuCourse1为计算机系中每位学生的高等数学成绩减少5分。
UpdateStuCourse1
Set成绩=成绩-5
10从teachingData数据库中删除视图student_2。
DropViewstudent_2
实验七数据库的完整性
1.用T-SQL语句将StuInfo表中的属性SID设置为PRIMARYKEY。
ALTERTABLEStuInfo
ADDCONSTRAINTPK_sidPRIMARYKEY(SID)
2.用T-SQL语句将成绩表ScoreInfo中的SID和CID字段设置复合主键,并将该约束命名为PK_SC。
ALTERTABLEScoreInfo
ADDCONSTRAINTPK_SCPRIMARYKEY(SID,CID)
3.使用T-SQL语句在数据库TeachingData中建立学生信息表StuInfo和成绩表ScoreInfo之间的联系,设置ScoreInfo表中的SID为外键,参照StuInfo表中的SID属性值。
ALTERTABLEScoreInfo
ADDCONSTRAINTFK_sidFOREIGNKEY(SID)REFERENCESStuInfo(SID)
4.在TeachingData数据库中,使用T-SQL命令为课程信息表(CourseInfo)中的课程名CName属性建立UNIQUE约束。
ALTERTABLECourseInfo
ADDUNIQUE(CName)
5.使用T-SQL命令为TeachingData数据库的成绩表ScoreInfo设置约束:
要求成绩(Score)属性的取值在0~100之间。
ALTERTABLEScoreInfo
ADDCONSTRAINTCK_scoreCHECK(Score>=0andScore<=100)
6.在TeachingData数据库中,用T-SQL语句为教师信息表TchInfo中教师职称Title添加约束CK_Title,要求Title的取值只能为“助教”、“讲师”、“副教授”、“教授”。
ALTERTABLETchInfo
ADDCONSTRAINTCK_TitleCHECK(Title='助教'orTitle='讲师'orTitle='副教授'orTitle='教授')
7.在TeachingData数据库中,用T-SQL语句为教师信息表TchInfo中教师职称Title添加一约束DF_Title,要求将Title的默认值设置为“讲师”。
ALTERTABLETchInfo
ADDCONSTRAINTDF_TitleDEFAULT('讲师')FORTitle
8.创建一个规则,用以限制绑定属性中的取值范围在0~150之间。
CREATERULEr1
AS@c>=0and@c<=150
9.创建一个规则,用以限制绑定属性只能取基础课、必修课或选修课。
CREATERULECProperty_rule
AS@cpIN('基础课','必选课','选修课')
10.将规则CProperty_rule与课程信息表CourseInfo中的CProperty字段绑定。
EXECsp_BINDRULE
'CProperty_rule','CourseInfo.CProperty'
GO
11.解除规则CProperty_rule与课程信息表CourseInfo中CProperty属性的绑定。
EXECsp_UNBINDRULE'CourseInfo.CProperty'
GO
12.删除规则r1
DROPRULEr1
数据的查询
(一)基本查询
1、查询TchInfo表中教师的工号TID、姓名TName和职称Title,要求查询结果列将TID、TName和Title字段分别显示为工号、姓名和职称。
答案:
USEteachingData
SELECTTIDas工号,TNAMEas姓名,Titleas职称
FROMTchInfo
2、查询TchInfo表中教师的全部信息。
答案:
USEteachingData
SELECT*
FROMTchInfo
3、查询TchInfo表前6行记录。
答案:
USEteachingData
SELECTtop6*
FROMTchInfo
4、查询TchInf