版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论.数据库管理系统是数据库系统的一个重要组成部分,它的功能包括数据定义功虹数据操纵功能、数据库的运行管理、数据库的建立和维护功能。数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。数据库管理技术的发展是与计算机技术及其应用的发展联系在一起的,它经历了三个阶段:人工管理阶段,文件系统阶段和数据库系统阶段。4.数据库具有数据结构化、最小的冗余度、较高的数据独立性等特点。5.DBMS还必须提供数据的安全性保护、数据的完整性检杳、并发控制、数据库恢复等数据控制功能。6.数据库管理系统的主要功能有哪些?(填空题)①数据库定义功能;②数据存取功能;③数据库运行管理;④数据库的建立和维护功能。7.三级模式之间的两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。(问答题)8.试述概念模型的作用。(填空题)概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。9.根据模型应用的不同目的,可以将这些模型划分为两类,它们分别属于两个不同的层次。第一类是概念模型,第二类是数据模型。(问答题)10.定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图E-R图)(填空题)实体:客观存在并可以相互区分的事物叫实体。实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体称为实体型。实体集:同型实体的集合称为实体集。属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。码:唯一标识实体的属性集称为码。实体联系图:E-R图提供了表示实体型、属性和联系的方法:实体型:用矩形表示,矩形框内写明实体名。属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。11.数据模型的三要素是指数据结构,数据操作,完整性约束。实际数据库系统中所支持的主要数据模型是关系模型,层次模型,网状模型。.数据模型中的数据结构是对数据系统的静态特征描述,包括数据结构和数据间联系的描述,透据操作是对数据库系统的动态特征描述,是一组定义在数据上的操作,包括操作的涵义、操作符、运算规则及其语言等。(问答题).定义并解释以下术语:DDL、DML(填空题)DDL:数据定义语言。用来定义数据库模式、外模式、内模式的语言。DML:数据操纵语言。用来对数据库中的数据进行查询、插入、删除和修改的语句。15.关系模型是目前最常用也是最重要的一种数据模型。采用该模型作为数据的组织方式的数据库系统称为关系数据库系统。(问答题)16.关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。(问答题)17.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?(填空题)数据与程序的逻辑独立性:当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。数据库管理系统在三级模式之间提供的两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。关系操作的特点:集合方式,操作对象和结果都是关系一一元组的集合非关系操作的特点:层次/网状,以记录为操作单位.关系数据模型中,二维表的列称为属性,二维表的行称为记录或元组。.用户选作元组标识的一个候选码为主码,其属性不能取空值。(问答题)Chapter1数据一Data:描述事物的符号记录称为数据。信息(information):数据所表示的含义称为信息。数据库:所谓数据库是长期存储在计算机内的、有组织的、可共享的数据集合。数据库(DB)是各种信息系统(InformationSystem)的核心。数据库特点:数据库中的数据具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。即数据及结构相对于应用程序具有独立性数据库管理系统DatabaseManagementSystem(DBMS):DBMS是对数据库建立、操纵、维护的系统软件。主要功能:1、数据定义功能;2、数据操纵功能;3、数据库的运行管理;4、数据库的建立维护。常见的数据库管理系统(DBMS)大型DBMS:ORACLESQL-SERVERDB2SYBASE中型DBMS:MYSQL,INFORMIX,INTERBASE小型(桌面)DBMS:ACCESS,FOXPRO,SQL-ANYWHERE数据库系统一DatabaseSystem(DBS):在计算机系统中引入数据库后的系统,通常由:数据库DB,操作系统OS,数据库管理系统DBMS,开发工具SDK,应用系统APP,管理员DBA,用户USER计算机数据管理经历阶段:1、人工管理阶段;2、文件系统阶段;3、数据库系统阶段数据库系统管理的特点:数据结构化(数据库的文件系统的根本区别)数据独立性高(数据结构变,程序不须变)数据共享性高,冗余度低,易扩充数据由DBMS统一管理和控制,并使数据管理具有:数据的安全性(security)保护(数据不被非法访问)数据完整性(Integrity)检查(数据的正确性有效性相容性)并发控制(Concurrency)控制数据恢复(Recovery)
数据模型是对现实世界数据特征的抽象。数据模型的三要素:1数据结构:对实体类型和实体间联系的表达和实现。2数据操作:允许执行的操作。主要:检索和更新3数据约束条件:完整性规则的集合。完整性规则:数据及其联系所具有的制约和依存规则,以保证数据的正确、有效和相容。数据的完整性:指数据的正确性、有效性和相容性。概念模型:计算机数据处理的第一层抽象,反映人对客观事物的认识。概念模型的表示方法:实体-联系图(E-R图)用矩形表示实体、用椭圆表示属性、用菱形表示联系。属性和实体间、实体和联系间用线段连接联系线标注联系类型(1,n),如果联系有属性,也要标注常见的数据模型有四种(按发展时间为序):层次模型、网状模型、关系模型、对象模型用表格(称为关系)表示实体以及实体间联系的数据模型叫关系模型。关系(Relation):一个二维表格;元组(Tuple):表中的一行即为一个元组;属性(Attribute):表中的一列即为一个属性;码(key):表中某属性组,可唯一确定任一元组;域(Domain):属性的取值范围;分量:元组中的一个属性值;关系模式:对关系的描述,表述为:关系名(属性1,属性2,・・・.,属性n)例:学生数据库的关系模式:学生(学号,姓名,性别,专业,入学时间)数据库模式(Schema):数据库中全体数据的结构和特征的描述称为数据库模式。数据库系统三级模式结构:模式、外模式、存储模式三级模式的概念。三级模式之间有两级映象:外模式/模式映象、模式/内模式映象外模式(Sub-Schema)(用户模式):用户的数据视图、是数据的局部逻辑结构,模式的子集模式(Schema)(概念模式):所有用户的公共数据视图;是数据库中全体数据的全局逻辑结构和特性的描述。内模式(StorageSchema)(存贮模式):又称存储模式,是数据的物理结构及存储方式。数据的逻辑独立性:当模式改变时,修改外模式/模式映象,使外模式保持不变,从而应用程序可以保持不变。物理独立性:存储结构改变时,修改模式/内模式映象,使模式保持不变,从而应用程序可以保持不变。数据库系统外部的体系结构:单用户结构、主从式结构、分布式结构、客户/服务器结构、浏览器/应用服务器/数据库服务器结构。Chapter2关系模式是对关系的描述:关系的结构(属性构成、属性来自的域、属性与域之间的映象关系),完整性约束条件,属性间的数据依赖关系集合关系模式可以形式化地表示为:R(U,D,dom,F)R:关系名;U:组成该关系的属性名集合;D:属性组U中属性所来自的域;dom:属性向域的映象集合;F:属性间的数据依赖关系集合关系模式通常可以简记为R(A1,A2,…,An)。A1,A2,…,An:属性名
数据完整性:数据的正确性、有效性和相容性。关系模型中三类完整性约束:实体完整性、参照完整性、用户定义的完整性实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值参照完整性规则:若属性(或属性组)F是关系R的外码。它与关系S的主码Ks相对应(关系R和S可是一个关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值)或者等于S中某个元组的主码值。用户定义的完整性例:课程(课程号,课程名,学分)“课程号”主属性必须取唯一值;非主属性“课程名”也不能取空值;“学分”属性只能取值{1,2,3,4}关系数据库语言:实现关系操作(查询,插改删)的语言关系代数语言:一种抽象的查询语言,用对关系的运算来表达查询(ISBL)关系演算语言:用谓词来表达查询要求元组关系演算语言:谓词变元的基本对象是元组变量(APLHA)域关系演算语言:谓词变元的基本对象是域变量(QBE)具有关系代数和关系演算双重特点的语言:SQL(StructuredQueryLanguage)关系代数运算的三个要素:运算对象,运算结果,运算符【运算对象和运算结果的操作对象都是:关系(元组的集合)】传统的集合运算:并、差、交、广义笛卡尔积专门的关系运算:选择、投影、连接、除并:RUS={t|teRVteS}差:R-S={t|teRAteS}交:RHS={t|teRAteS}笛卡尔积:RXS={TT11eRAteS}rsrs选择(Selection):在关系R中选择满足给定条件的诸元组。从行的角度进行的运算。。f(R)={t11eR△F(t)='真'}F:选择条件,是一个逻辑表达式[例1]查询信息系(IS系)全体学生°Sdept=,IS,(^dent)投影:从R中选择出若干属性列组成新的关系,从列的角度进行运算兀A(R)={t[A]lteR}A:R中的属性列注意:但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)[例3]查询学生的姓名和所在系。即求Student关系学生姓名和所在系两个属性上的投影兀sname,sdept(如)查询没有选过课的学号:兀海(Student)一兀海(SC)查询没有不及格的学号:兀海(Student)-兀海(气泌<60(SC))连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组R8S=(TT11eR△teS△t[A]91[B]}rsrsrsA和B:分别为A和B:分别为R和S上的属性组;。:比较运算符R1=k,(Student)一兀,(SC)R2=兀,,(StudentsR1)象集(ImageSet),关系R(X,Z),X,Z是属性组,x是X上的取值,定义x在R中的象集为Zx={t[Z]|t6RAt[X]=x}(从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量)SNOCNO950011950012950013950022950023950031950032950041SNO=95001在R中的象集:Z95001={1,2,3},SNO=95002在R中的象集:Z95002={2,3},SNO=95003在R中的象集:Z95003={1,2},除运算:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。R9S={t[X]|tgRA兀(ScY)}Yx:x在R中的象集,x=t[X]rrYXr[例7]查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:兀涵(。涵_1v涵_3(SC))然后求:兀,(SC):K[例8]查询选修了2号课程的学生的学号。71Sno(O(SC))[例9]查询至少选修了一门其直接先行课为5号课程的课程的学生姓名。^5name£c^no=151(CourseMSCJ<Student))[例10]查询选修了全部课程的学生号码和姓名。nsno,eno<SC)-nCno(Course)SflOj细即IX(Student)[例11]查未被选修的课号JTcn0(Course)-ncno(SC)[例12]查询选修了95002所选全部课程的学生号码七皿cMSC)7cM°SNO=95002(SC))图书管理数据库有关系模式:图书(书号,书名,价格,作者)读者(读者号,姓名,性别,年龄)借阅(读者号,书号,借日期,还日期,罚款金额)用关系代数查询:1查询价格大于50的书名和作者名n书名,作者名(°价格>50(图书))2查询(一次)罚款金额>20元的读者名"姓名(°罚款金额>2。(借阅3查询被年龄大于60的读者借过的书名和作者名"作者,书名(°年龄>6。(读者)凶借阅X图书)4查询看了所有书的读者名71姓名(71读者号,书号(借阅)*"书号(图书)X读者)5查询看了’张三‘所看过的所有书的读者名几姓名(几读者号,书号(借阅)+6查询没有借过书的读者姓名n姓名((n读者号(读者)-兀读者号(读者))X读者)元组关系演算语言ALPHA检索语句:GET更新语句:PUT,HOLD,UPDATE,DELETE,DROP格式GET工作空间名(表达式1)[例1]查询所有被选修的课程号码。GETW(SC.Cno)[例2]查询所有学生的数据。GETW(Student)格式GET工作空间名(表达式1):操作条件[例3]查询信息系(IS)年龄小于20岁的学号和年龄。GETW(Student.Sno,Student.Sage):Student.Sdept=,IS'Astudent.Sage<20[例4]查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序。UPGETW(Student.Sno,Student.Sage):Student.Sdept='CS'DOWNStudent.Sage[例6]查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排序。GETW(3)(Student.Sno,Student.Sage):Student.Sdept='IS'DOWNStudent.Sage定义元组变量格式:RANGE关系名变量名[例7]查询选修2号课程的学生名字和成绩。(条件来自工作区的关系,不用存在量词)GETW(Student.Sname,SC.Grade):SC.Sno=Student.SnoASC.Cno='2'[例8]查询选修2号课程的学生名字。RANGESCXGETW(Student.Sname):3X(X.Sno=Student.SnoAX.Cno='2')查询语义:查询这样的学生名,条件是存在选课元组X,X的学号与该生的学号相等并且X的课号为2(表明该生选了2号课)用存在量词的检索(条件来自工作区外的关系)[例9]查询选修了这样课程的学生学号,其直接先行课是6号课程。RANGECourseCXGETW(SC.Sno):3CX(CX.Cno=SC.CnoACX.Pcno='6')[例10]查询至少选修一门先行课为6号课程的学生名字或查询选修过先行课为6号课程的学生名字.RANGECourseCXSCSCX
GETW(Student.Sname):3SCX(SCX.Sno=Student.Sno八3CX(CX.Cno=SCX.CnoACX.Pcno=,6,))GETW(Student.Sname):3SCX3CX(SCX.Sno=Student.SnoACX.Cno=SCX.CnoACX.Pcno='6')[例12]查询不选1号课程的学生名字。查询语义:查询这样的学生,条件是对所有选课元组,都不表明该生选了1号课(或者与该生学号不同,或者课号不是1)RANGESC表S£XSQL语言的动词GETsQl功RANGESC表S£XSQL语言的动词GETsQl功tudent.Sname):词SCX(SCX.Sno己Student.操^!作新SnCmeAWE^D^SCXMSCX.SnouStudent.Sn象AsG17T士了全是部课程的学生姓名。表INSERTUPDATEDELETESCSCX表3.2SQL的数据定义语句SCX.CnoW1操)-作方式getw数据st定dent.[例13臀查询选修A八数据操纵八RANGECourseCxGETW(数tudem制SnameGRANTXREVOKSCX.Sno=Student.SnoASCX解释:对于STUDENT中的一个学生,如果对所有的课程,都存在个学生选修了该课程,则这个学生属于查询范围。RSTERcxCnofCREATE
―TABLECREATEcn°EAhCn上着SC的元组SCEX表明这)删除—一DROP—TABLEDROPVIEWo)DROP修改ALTERTABLE[例14]查询最少选修了95002学生所选课程的学生学号。RANGECouseCXSCSCXSCSCYGETW(Student.Sno):VCX(3SCX(SCX.Sno='95002'ASCX.Cno=CX.Cno)n3SCY(SCY.Sno=Student.SnoASCY.Cno=CX.Cno))查询语义:查询这样的学生,条件是对所有课程,如果95002选了,则该学生也选修了该课PnQ==「PVQGETW(Student.Sno):VCX(-<3SCX(SCX.Sno='95002'ASCX.Cno=CX.Cno)V3SCY(SCY.Sno=Student.SnoASCY.Cno=CX.Cno))CREATETABLEStudent(SnoCHAR(5)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR(^,SageINT,SdeptCHAR(15)Primarykey(Sno,Cno));sexchar(2)default'男’check(sex='男’orsex='女'));DROPTABLEStudent;ALTERTABLE〈表名〉[ADD〈新列名〉〈数据类型〉[完整性约束]]:DROP〈完整性约束名>][MODIFY〈列名>〈数据类型>];〈表名>:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件MODIFY子句:用于修改列名和数据类型[例2]向Student表增加“入学时间”列,其数据类型为日期型。ALTERTABLEStudentADDScomeDATE;删除属性列例:ALTERTABLEStudentDropScome;[例3]将年龄的数据类型改为半字长整数。ALTERTABLEStudentMODIFYSageSMALLINT;[例6]为Student的sname列建立索引。CREATEINDEXStuNameONStudent(Sname);[例6]为Course的Cname列建立唯一值索引。CREATEUNIQUEINDEXCouNameONCourse(Cname);在Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放。CREATECLUSTERINDEXStusnameONStudent(Sname);DROPINDEXStusname;学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)[例5]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。SELECTSname,'YearofBirth:',2012Sage,ISLOWER(Sdept)FROMStudent;SELECTDISTINCTSnoFROMSC;[例17]查询名字中第2个字为〃阳〃字的学生的姓名和学号。SELECTSname,SnoFROMStudentWHERESnameLIKE'—阳%';[例19]查询DB_Design课程的课程号和学分。SELECTCno,CcreditFROMCourseWHERECnameLIKE'DB\_Design'ESCAPE'\'SELECTSno,CnoFROMSCWHEREGradeISNOTNULL;[例32]查询每个学生及其选修课程的情况。用WHERE子句指定连接条件:SELECT*FROMStudent,SCWHEREStudent.Sno=SC.Sno;或,用FROM子句指定连接条件:SELECT*FROMStudentJOINSCONStudent.Sno=SC.Sno;自身连接[例34]查询每一门课的先行课名SELECTFirst.Cname课名,Second.Cname先行课名FROMCourseFirst,courseSecondWHEREFirst.Cpno=Second.Cno;[例36]查询每个学生的学号、姓名、选修的课程名及成绩。SELECTStudent.Sno,Sname,Cname,GradeFROMStudentJOINSCONStudent.Sno=SC.SnoJOINCourseONSC.Cno=Course.Cno;子查询:SELECTSno,Sname,SdeptFROMStudentWHERESdeptIN(SELECTSdeptFROMStudentWHERESname=‘刘晨’);EXISTS子查询方式(类似关系演算方式)[例42]查询没有选修1号课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDCno='1');[例43]查询选修了全部课程的学生姓名。SELECTSnameFROMStudentWHERENOTEXISTS(SELECT*FROMCourseWHERENOTEXISTSSELECT*FROMSCWHERESC.Sno=Student.SnoANDSC.Cno=Course.Cno));[例44]查询至少选修了学生95002选修的全部课程的学生号码。思路:不存在这样的课95002选了这个学生未选用关系演算实现:RANGECouseCXSCSCXSCSCYGETW(Student.Sno):-^CX(3SCX(SCX.Sno='95002'八SCX.Cno=CX.Cno)A-^SCY(SCY.Sno=Student.SnoACY.Cno=CX.Cno))SELECTSNOFROMSTUDENTSWHERENOTEXISTS(SELECT*FROMCOURSECWHEREEXISTS(SELECT*FROMSCWHERESC.SNO='95002'ANDSC.CNO=C.CNO)ANDNOTEXISTS(SELECT*FROMSCWHERESC.SNO=S.SNOANDSC.CNO=C.CNO))2查询被'张三'选修的课名RANGESCSCXRANGESSXGETW(C.CNAME):存在SCX(SCX.CNO=C.CNO并且存在SX(SX.SNO=SCX.SNO并且SX.SNAME='张三'))SELECTCNAMEFROMCWHEREEXISTS(SELECT*FROMSCWHERESC.CNO=C.CNOANDEXISTS(SLEECT*FROMSWHERES.SNO=SC.SNOANDS.SNAME='张三'))4查询被所有同学选修的课名SELECTCNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERESC.SNO=S.SNOANDSC.CNO=C.CNO))5查询选了’张三'选修所有课的学生名SELECTSNAMEFROMSWHERENOTEXISTS(SELECT*FROMCWHEREEXISTS(SELECT*FROMSCWHERESC.CNO=C.CNOANDEXISTS(SELECT*FROMSWHERES.SNO=SC.SNOANDS.SNAME=张三'))ANDNOTEXISTS(SELECT*FROMSCWHERESC.CNO=C.CNOANDSC.SNO=S.SNO))[例45]查询计算机科学系的学生及年龄不大于19岁的学生。SELECT*FROMStudentWHERESdept='CS'UNIONSELECT*FROMStudentWHERESage<=19;SELECTDISTINCT*FROMStudentWHERESdept='CS'ORSage<=19查询未选课的学号(所有学号与选过可得学号的差集)SELECTSnoFROMStudentWHERESnoNOTIN(SELECTSnoFROMSC);INSERTINTOStudentVALUES('95020','陈冬','男','IS',18)INSERTINTODeptage(Sdept,Avgage)SELECTSdept,AVG(Sage)FROMStudentGROUPBYSdept;UPDATEStudentSETSage=22WHERESno='95001';DELETEFROMStudentWHERESno='95019';DELETEFROMSC;CREATEVIEWIS_Student(No,Name,Age)ASSELECTSno,Sname,SageFROMStudentWHERESdept='IS';[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;DROPVIEWIS_S1;指定WITHCHECKOPTION子句后,DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新。Chapter4为用户'ZhangPing'创建了一个密码为'Rose'的SQLServer登录语法格式:EXECsp_addlogin'UserName','Password'EXECsp_addlogin'ZhangPing','Rose'将用户ZhangPing添加到当前数据库语法格式:EXECsp_adduser'UserName'EXECsp_adduser'ZhangPing'将BOOK查询权授予PUBLICgrantselectonBOOKtopublic;将READER的查询权授予ZhangPinggrantselectonREADERtoZhangPing;将BOOK插入权删除权修改权授予ZhangPinggrantinsert,delete,updateonBOOKtoZhangPing;将LOAN的插入权删除权修改权从ZhangPing收回revokeinsert,delete,updateonloanfromZhangPing重新以ZhangPing登录登录后更改密码,将密码'Rose'改为'coffee'格式:EXECsp_password'旧密码','新密码'EXECsp_password'Rose','coffee'10.查询BOOK所有数据,(有权执行)。13.重新以DBA登录将createtable权授予ZhangPinggrantcreatetabletoZhangPing
Chapter52、修改批处理文件CREATE_TABLES.TXT中对表SC的定义,对外关键字加入删除与修改级联,并重新执行建立数据表CREATETABLESC(SNONUMERIC(5)REFERENCESSTUDENTONUPDATECASCADEONDELETECASCADE,CNONUMERIC(2)REFERENCESCOURSE(CNO)ONUPDATECASCADEONDELETECASCADE,GRADENUMERIC(6,2),PRIMARYKEY(SNO,CNO));第六章关系数据理论理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All-key)、多值依赖。定义6.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中对于X的每一个具体值,Y都有唯一的具体值与之对应,则称“X函数决定Y”或“Y函数依赖于X”,记作X-Y。例:在关系SC(Sno,Cno,Grade)中,平凡函数依赖:Sno一Sno(Sno,Cno)一Sno(Sno,Cno)一Cno非平凡函数依赖:(Sno,Cno)一Grade若X-Y,但YX,则称X-Y是平凡的函数依赖,否则称X—Y是非平凡的函数依赖定义6.2在关系模式R(U)中,如果X-Y,并且对于记作X-二Y。X的任何一个真子集X,,记作X-二Y。则称Y部分函数若X-Y,但Y不完全函数依赖于X,例:在关系SC(Sno,CnofCname,Grade)中,Y-乙且Y冲,Y、X,则称Z传递函数依赖于X。由于:Sno\Grade,CnoC定义6.3在关系模式R(U)中,如果X-Y,因此:(SnofCno)LGrade但(SNO,CNO)iCname注:如果Y-X,即X--Y,则Z直接依赖于X。因为CNO-CNAME则称Y部分函数Y-乙且Y冲,Y、X,则称Z传递函数依赖于X。注:如果Y-X,即X--Y,则Z直接依赖于X。1NF的定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则RE1NF。问题正好出现在对码部分依赖的属性上定义6.6若关系模式RE1NF,并且每一个非主属性都完全函数依赖于R的码,则RE2NF。(2NF也就是不允许关系模式存在非主属性对码的部分函数依赖)SCG(Sno,Sname,Sage,Cno,Grade)分解为两个关系模式S(Sno,Sname,Sage)S:Sno—SnameSno一SageSC(Sno,Cno,Grade)SC:(Sno,Cno)一Grade没有非主属性对码部分函数依赖,S,SC分别达到2NF有关系模式SL(Sno,Sname,Sdept,Sloc),并且一个系的学生住处相同函数依赖:Sno—Sdept、Sno—Sname、Sdept—Sloc、Sno—Sloc如果关系的码只有一个属性,一定是2NF,故已达到2NF定义6.8关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z,使得X—Y,Y—Z成立,则称R<U,F>£3NF。(Y—X,ZoY)(即没有非主属性对码的传递函数依赖)采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,Sname,Sdept)DL(Sdept,Sloc)SD的码为Sno,DL的码为Sdept。因为非主属性直接依赖与码,所以是3NF。定义6.9设关系模式R<U,F>£1NF,如果对于R的每个非平凡函数依赖X—Y,X必含有码,那么REBCNF。等价定义:若每一个非平凡决定属性集(因素)都包含码,则REBCNF例如:关系模式学生教师课程STC(S,T,C)S学生,T教师,C课程。(1)每一位教师仅教一门课,每门课有若干个教师教(2)某个学生选定一门课后,就对应一个确定的教师(不能重复选同一门课)(3)某个学生选定一个教师后,就对应一门确定的课程(S,C)—T,(S,T)—C,T—C(S,C)和(S,T)都是码S、T、C都是主属性STCE3NFT—C,T是决定属性集,T不是码,故STC史BCNF将STC分解为二个关系模式:ST(S,T)£BCNFTC(T,C)£BCNF第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)消除决定属性集非码的非平凡函数依赖1NF\消除非主属性对码的部分函数依赖2NF1消除非主属性对码的传递函数依赖3NF\消除主属性对码的部分和传递函数依赖BCNF*消除非平凡且非函数依赖的多值依赖4NF70定义6.10设R(U)是一个属性集U上的一个关系模式,X、Y和Z是U的子集,并且Z=U-X-Y,多值依赖X—Y成立当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关(即不管如何变换Z值,这组Y值不变,只与X值相关,或者说Y的这组多值只依赖于X)。若X—Y,而Z=°,则称X—Y为平凡的多值依赖R(T1,T2)T1—T2(平凡)S(SNO,SNAME,SAGE)(SNO,SNAME)—SAGE(平凡)否则称X—Y为非平凡的多值依赖定义6.10关系模式R<U,F>£1NF,如果对于R的每个非平凡多值依赖X—Y(YX),X都含有码,则RE4NF。说明:4NF不允许有典型的多值依赖(非平凡,非函数依赖);4NF只允许有函数依赖型的多值依赖,且左边含有码课堂作业:试举出三个多值依赖的例子。分别说明更新异常,并分解。(1)(中小学)一个年级有多个学生,一个年级每个学生使用相同的一套教材。R1(年级,学生号,教材名)(2)一个专业多个班级,一个专业每个班级开设相同的一组课程。R2(专业,班级,课程名)(3)一个仓库有多个保管员,一个仓库每个保管员保管员相同的一组货物。R3(仓库,保管员,货物)课堂作业:现在有关于学生成绩管理的关系模式,关系模式有属性:学号,姓名,班号,班名,系号,系名,课号,课名,学期,成绩。ALL(S#,SNAME,CLA#,CLANAME,D#,DNAME,C#,CNAME,TERM,GRADE)写出其存在的合理的函数依赖,说明是何范式,举例说明更新异常,并分解,转化为高式,如仍存在更新异常,则继续分解。函数依赖:S#->SNAME,S#->CLA#,CLA#->CLANAME,CLA#->D#,D#->DNAME,C#->CNAME,(S#,C#,TERM)->GRADE主码是:(S#,C#,TERM)存在非主属性对码部分依赖(SNAME,CNAME),属于1NF存在问题:学生信息冗余,修改学生信息?插入新生?删学生成绩?课程信息冗余,修改课程信息?插入新课程?删学生成绩?消除学生信息冗余和课程信息冗余。分解为:S(S#,SNAME,CLA#,CLASSNAME,D#,DNAME)SC(S#,C#,TERM,GRADE)C(C#,CNAME)其中SC中有(S#,C#,TERM)->GRADEC中有C#->CNAME,没有非主属性对码的部分依赖,达到2NF;没有非主属性对码的部分和传递依赖,达到3NF决定因素包含码,达到BCNF,只有平凡的多值依赖,达到4NF.练习:有供应商和零件的关系模式:SP(SNO,SNAME,PNO,PCOLOR,QTY)请写出:SP的函数依赖?SP的码,主属性,非主属性?SP属于第几范式?SP有什么更新异常?如何分解?练习:职工关系模式:(每种职务有固定的职务工资)职工(职工编号,职工姓名,职务,职务工资,基本工资)练习:入库单关系模式:入库单(入库单号,日期,材料编号,材料名称,材料规格,计量单位,入库数量)第7章数据库设计数据库设计有哪些基本步骤?1、需求分析;2、概念结构设计;3、逻辑结构设计4、物理结构设计;5、数据库实施;6、数据库运行与维护简述数据库设计各个阶段内容:1、需求分析阶段:了解用户的需求,包括数据与处理。(数据流图,数据字典)2、概念结构设计阶段:设计独立于DBMS的概念模型(ER图)3、逻辑结构设计阶段:设计DBMS逻辑模型,并优化4、物理结构设计阶段:选取合适的存储结构与方法5、数据库实施阶段:建立数据库,编制与调试应用程序,组织数据入库6、数据库运行与维护阶段:正式运行,并对数据库评价调整与修改E-R图向关系模型的转换规则:(1)一个实体型转换为一个关系模式。(属性,码)(2)m:n联系转换为一个独立关系模式。(码=各实体型码合,联系的属性))(3)三个或三个以上实体间的多元联系转为一个关系模式;(码=各实体码组合,联系的属性)(4)对于1:n联系,与n端合并,在n端关系中加入1端的码及联系属性;(5)对于1:1联系,与其一合并,加入对方的码;(6)具有相同码的关系可合并将下面E-R图转换为一组关系模式:图1.15工厂物资管理E-R图第八章数据库程序设计EXECsp_databases列出当前系统中的数据库EXECsp_renamedb'Northwin','Northwind1'修改数据库的名称(单用户访问)USEstuDBGOEXECsp_tables当前数据库中查询的对象的列表EXECsp_columnsSC返回某个表列的信息EXECsp_helpSC查看表SC的结构信息
EXECEXECEXECEXECsp_helpconstraintEXECEXECEXECEXECsp_helpconstraintSCsp_helpindexSCsp_helptextviewlsp_stored_procedures查看表SC的索引查看视图的语句文本
查看当前数据库中的存储过程2建立过程PSTU,输出某学生的姓名和总学分dropprocedurepstugousestudbgocreateprocedurepstu@nointasdeclare@namechar(20)declare@totalintselect@name=snamefromstudentswheres.sno=@no;select@total=sum(ccredit)fromcoursewherecnoin(selectcnofromscwheresno=@no);print'name='+@name+'totolcredit='+cast(@totalaschar(5))goexecpstu'95001'3建立过程PSTU2,输出某学生的姓名,选课门数,平均分,最高分,最低分,总学分,如果总学分<9,则显示“此学生学分不足!”,否则显示“此学生学分已足!”,createprocedurepstu2@nointasdeclare@namechar(20)declare@totalmintdeclare@avggintdeclare@maxgintdeclare@mingintdeclare@allcreditintselect@name=snamefromstudentswheres.sno=@no;select@totalm=count(cno),@avgg=avg(grade),@maxg=max(grade),@ming=min(grade)fromscwheresc.sno=@no;select@allcredit=sum(ccredit)fromcoursewherecnoin(selectcnofromscwheresno=@no);if(@allcredit<9)print'此学生学分不足’;elseprint'此学生学分已足!’;print'name='+@name+'totolcredit='+cast(@allcredit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 狗来了课后考试题及答案
- 电大数学试题及详细答案解析
- GMAT中文题目和答案详情
- 2026年电梯使用维护管理培训考试试卷试题及答案
- 2026年畜禽养殖防疫业务培训考试试卷试题及答案
- 理科数学三测试题及详细答案呈现
- 2026年水利工程全生命周期经营管理知识考试题库及答案
- 2026年河南省部编版高三语文一轮复习诗歌鉴赏冲刺试卷
- 2026年陕西公务员考试(法律专业)考前冲刺试题及答案
- 伤寒论考试题目与答案
- 个税优化方案-100万年薪以内
- 2024年全国高中数学联赛试题(及答案)
- 医务科依法执业自查表
- 西安五大名校小升初原卷含详解全套
- 全国医疗服务价格项目规范(2012版)
- 危险化学品重大危险源责任人履职情况评估表
- 上海外国语大学欧洲语言文学专业
- 体育测量与评价主体教案
- JJF 1614-2017抗生素效价测定仪校准规范
- GB/T 6078-2016中心钻
- 发展经济学 马工程课件 4.第四章 经济增长
评论
0/150
提交评论