您好,欢迎访问三七文档
第一章:引言什么是数据库管理系统(DBMS)?数据库管理系统由一个互相关联的数据的集合和一组用来访问这些数据的程序组成。文件管理系统的弊端:1.数据的冗余和不一致:冗余即相同的信息在多个地方重复存储,不一致即同一数据的不同副本不一致。2.数据访问困难:访问原有程序不能直接得到的数据时,要手动提取所需信息或者编写新的程序。3.数据孤立:数据分散在不同的文件,文件有不同的格式,编写新程序来访问适当数据困难。4.完整性问题:数据完整性由一系列约束来保证,而文件系统需要添加适当代码来实现这些约束,当涉及多个文件的多个数据项时,代码难以实现约束。5.并发访问异常。6.安全性问题:并非所有数据库系统的用户都可以访问所有数据,文件系统难以保证这一点。什么是数据抽象?数据抽象对用户屏障复杂性。数据抽象分为:1.物理层:描述数据实际上怎样存储(即数据结构)。2.逻辑层:描述存储什么数据以及数据之间有什么关系。3.视图层:只描述整个数据库的一部分。什么是模式和实例?模式是数据库的总体设计。实例是特定时刻在数据库中的信息的集合。模式和实例的区别:实例是模式在某一时刻的值。什么是数据模型?数据模型是一个描述数据,数据联系,数据语义和完整性约束的概念工具的集合。数据模型分为4类:1.关系模型。2.实体-联系模型。3.基于对象数据模型。4.半结构化数据模型。结构化查询语言SQL分为:数据定义语言DDL。数据操作语言DML。DML分为:过程化DML:指定需要什么数据和怎样获得这些数据。声明化DML:只指定需要什么数据,不指定怎样获得这些数据。数据库设计过程:1.全面刻画数据库用户的需求,制作用户需求说明。2.概念设计阶段:选择一个数据模型,并采用数据模型的概念将需求转换成一个概念模式。3.逻辑设计阶段:将概念模式映射到将要使用的数据模型上。4.物理设计阶段:指定数据库模式在数据库中的物理特征。概念设计阶段和逻辑设计阶段的区别:概念设计阶段一般选择的是实体-联系模型,逻辑设计阶段一般使用的是关系模型。概念设计阶段得到的是概念模式,逻辑设计阶段得到的是关系模式。什么是规范化?规范化是用来设计一个关系模式集合,使这些集合无冗余且容易检索数据。什么是不好的数据库设计?1.冗余:即信息重复。2.不完整:即不能表达某些信息。数据库系统的体系结构包括:1.集中式。2.客户/服务器式。3.并行式。4.分布式。第二章:关系模型关系模式中对所有关系r的要求:r的每个属性的域都是原子的。(即每个属性的域的元素被看作不可再分。)超码,候选码,主码的区别:超码唯一的确定一个元组。候选码是最小的超码。主码是不经常改变的候选码。关系代数基本运算:一元运算:选择,投影,更名。二元运算:集合并,集合差,笛卡尔积。选择:选择出一个关系中满足条件的元组。投影:返回一个关系中的某些属性。更名:对一个关系表达式更改关系名和属性名。集合并:将2个关系的元组并在一起。集合差:将2个关系的元组做差。笛卡尔积:将任意2个关系的信息组合在一起。笛卡尔积怎样组合2个关系?新关系的模式等于2个关系模式串接。新关系的元组等于关系1中每一个元组和关系2中每一个元组匹配。做集合并和集合差运算的2个关系要满足的特点:1.同元:即属性数目相等。2.同域:r的第i个属性的域和s的第i个属性的域相等。(这里不要求属性名字相等。)关系代数附加运算:集合交,自然连接。集合交:将2个关系的元组做交。自然连接:新关系的模式等于2个关系模式的并。自然连接的元组是选择同属性且同值的元组对合并。自然连接和笛卡尔积的区别:自然连接的模式相当于在笛卡尔积的模式上将相同属性合并。自然连接的元组相当于在笛卡尔积的元组上选择2个关系中同属性且同值的元组。扩展的关系代数运算:广义投影:允许用算术表达式对关系代数表达式进行投影。聚集函数:输入值的一个集合,输出单一值。左外连接:在自然连接的元组上加上左边关系中不匹配的元组。外连接的优点:可以避免连接时造成信息的丢失。关系代数和SQL的区别:关系代数默认去重,SQL默认不去重。第三章:SQLSQL包括:数据定义语言:即定义关系模式,删除关系,修改关系模式的命令。数据操纵语言:即插入,删除,修改元组的命令和基于关系代数和元组关系盐酸的查询语言。SQL和关系代数的联系:select对应投影。from对应笛卡尔积。where对应选择。union,intersect,except分别对应并,交,差。(SQL默认不去除重复,但union,intersect,except会自动去除重复。)SQL用from加where里面的=号实现的连接和自然连接的区别:用from加where里面的=号实现的连接:关系模式是串接得到的,元组是在笛卡尔积的元组上选择自己想要的2个关系中属性值相等的元组。自然连接:关系模式是并得到的,元组是在笛卡尔积的元组上选择所有同属性同值的元组。null值的使用带来了什么麻烦?如果算术运算的输入有一个为空,则算术运算(+-*/)结果为空。如果空值参与了比较运算,则比较运算结果为unknown。如果空值参与了聚集函数,则除了count(*)以外的聚集函数都忽略空值。(如果聚集函数所有输入都为空值,则count运算结果为0,其他为空值。)unknown在布尔运算中的运算规则:falseunknowntrueoooand看成取圈圈的交集,or取并集,not取差集。选择元组时只选择布尔运算结果为true的元组,不会选择false和unknown的元组。测试元组是否为集合中成员:in测试查询结果中是否有元组:exists表示关系A包含关系B:notexists(BexceptA)测试查询结果中是否有重复元组:unique什么是视图?视图是任何不是逻辑模型的一部分但作为虚关系对用户可见的关系。视图和关系的区别:当根据一个表达式创建视图或者关系时,视图会根据表达式中的关系变化而变化。关系不会根据表达式中的关系变化。怎样避免在update关系时语句执行次序不同造成更新结果错误的问题?使用case子句。视图更新会产生的问题:如果要对视图更新,要对表达式中的关系更新,但是视图的属性和表达式关系的属性不匹配。SQL中每一种连接操作都包括:一个连接类型和一个连接条件。连接类型:innerjoin,(left,right,full)outerjoin连接条件:natual,on+谓词,using(属性)(on+谓词相当于在where中+谓词。)连接类型和连接条件的区别:连接类型决定怎样处理不匹配的元组。连接条件决定哪些元组匹配和连接结果中出现哪些属性。(外连接一定要选择连接条件,内连接可以省略连接条件,因为省略后变为笛卡尔积。)第四章:高级SQL用户定义数据类型包括:1.独特类型。2.结构化数据类型。创建新类型,删除类型,修改类型:createtypeDollarsasnumeric(12,2)finaldroptypealtertype创建域类型:createdomainDDollarsasnumeric(12,2)类型和域的区别:域可以指定约束,类型不能指定约束。域不是强类型,类型相容时一个域类型的值可以赋给另一个域类型,类型是强类型,不能相互赋值。什么是完整性约束?完整性约束可以保证用户对数据库修改时不会改变数据的一致性。完整性约束包括:primarykey约束。notnull约束。unique约束:指定一组属性形成候选码。check约束:在关系或域声明时使用,指定一个关系中所有元组都要满足的谓词或该域类型的变量的所有赋值都要满足的谓词。参照完整性约束(外码约束):在建立参照完整性约束后,参照关系的值必须是被参照关系的值的子集。(无论是修改哪个关系,只要不满足子集,就违反了参照完整性约束。)违反了参照完整性约束后的处理方法:1.拒绝执行。2.在参照完整性约束后加上级联删除或者级联更新,允许执行。怎样使一个约束在事务完成时才检查会否满足约束?将约束设置为可延迟的:setconstraintsconstraint-listdeferredSQL权限包括:Select,insertt,delete,update。默认情况下,授予了一个权限的用户/角色不能将该权限授予给其他用户/角色,除非通过“授予权限”权限来实现。数据库内的存储过程和应用进程的关系:1.应用进程可以调用存储过程。2.存储过程发生变化时,不需要改变应用进程。第六章:数据库设计和E-R模型E-R模型包括:实体集:即具有相同属性的实体的集合。联系集:即实体集中的实体之间的同类联系的集合。属性。怎样表示一个实体?实体通过一组(属性,数据值)对来表示。怎样表示一个联系实例?联系实例通过参与它的实体来表示。E-R模型中的属性分为:1.简单属性和复合属性。2.单值属性和多值属性。3.派生属性:即可以由其他属性或实体派生得到的属性。什么是角色?角色是实体在联系中的作用。角色的作用:当同一个实体集参与一个联系集的次数大于1时,则需要用角色名来区分一个实体参与联系实例的方式。联系集的描述性属性的作用:当2个实体有多个联系实例时,不能用实体对来区分这些联系实例,需要通过描述性属性来区分这些联系实例。E-R模型的约束:映射基数:表示1个实体通过1个联系最多与多少个实体关联。码约束:实体集的主码用来区分实体集中不同的实体,联系集的主码用来区分联系集中不同的联系实例。参与约束:即实体集中的实体全部或者部分参与到联系集中。映射基数出现的情况:1对1,1对多,多对1,多对多。怎样判断是几对几?如果1个A可以有多个B,则从A到B是1对多。如果1个B可以有多个A,则从B到A是1对多。要综合A到B和B到A的2种情况来判断几对几。怎样求联系集的主码?联系集的主码由联系集的映射基数的多方的主码组成。怎样表示映射基数:1.用箭头表示,指向的一方为一。(联系集外最多只允许有一个箭头,否则会产生歧义。)2.用l..h表示。(其中l表示最小映射基数,h表示最大映射基数。)怎样将1个三元联系转换成2元联系?1.将三元联系R分解为3个二元联系RA,RB,RC,并新建实体集E。2.将R的属性赋值给E,并为E建立标识属性。3.对于R中每一个联系集,都在E中建立相应的实体,在RA,RB,RC中建立相应的联系。什么时候可以将联系集的属性放到实体集中?联系集属性的布局和映射基数有关。1对1的映射基数,联系属性可以放到任一方的实体集中。1对多或多对1的映射基数,联系属性只可以放到多方的实体集中。多对多的映射基数,联系属性不能放到实体集中。什么是弱实体集?弱实体集是没有足够的属性形成主码的实体集。弱实体集参与联系的特点:1.弱实体集必须关联一个标识实体集。2.弱实体集和标识实体集之间的联系称为标识性联系。3.弱实体集到标识实体集是多对1,且全部参与的联系。4.标识性联系集中没有描述性的属性。(因为弱实体集总是多方,可以把联系属性放到弱实体集中。)怎样区分弱实体集中不同的实体?使用弱实体集中的分辨符。怎样求弱实体集的主码?弱实体集的主码由标识实体集的主码+弱实体集的分辨符组成。扩展E-R特性包括:特殊化和一般化。高层实体集和低层实体集。属性继承。聚集。特殊化:即对实体集内部进行分组的过程。一般化:即特殊化的逆过程。什么是属性继承?由特殊化和一般化产生的高层实体和低层实体属性之间的关系。(即高层实体集相关联的所有属性和联系都适用于它的所有低层实体集,低层实体集特有的性质仅适用于特定的低层实体集。)什么是聚集?聚集是一种抽象,将联系当作高层实体,这个联系就是聚集。聚集的作用:用来表示联系间的联系。弱实体集怎样转换为关系模式?关系模式的属性=标识实体集的主码+弱实体集所有属性。关系模式的主码=标识实体集的主码+弱实体集的分辨符。关系模式上建立外码约束:即弱实体集主码中标识实体集的部分参照标识实体集的主码。联系集怎样转换为关系模式?联系集的属性=参与联系的实体集的主码求并+联系集的描述性属性。联系集的主码=联系集的映射基数的多方的主码。关系模式上建立外码约束:即联系集主码中实体集的部分参照相应实体集的主码。(标识联
本文标题:数据库思路理清
链接地址:https://www.777doc.com/doc-2332910 .html