- 数据库系统概述
- 两类数据模型
第一类是概念模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。第二类是逻辑模型和物理模型,逻辑模型是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现;物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,是面向计算机系统的。
- 数据库系统的三级模式结构
数据库的三级模式结构是指:数据库系统是由外模式、模式和内模式三级构成。模式也称为逻辑模式,它是DB中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式也称为子模式(subschema)/用户模式,它是数据库用户(应用程序员、最终用户)能够看到的使用的局部数据的逻辑结构和特征的描述,是数据库的数据视图,是与某一个应用有关的数据的逻辑表示。 内模式也称为存储模式(Storage schema),一个数据库只有一个内模式。它是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。
- 数据库的分类
- 关系型数据库:oralce,SQLServer,MySQL
- 非关系型数据库:mongoDB,Redis,Hadoop
- 数据库设计范式
第一范式:列不能再分。
第二范式:第二范式建立在第一范式的基础上,非主属性完全依赖于码。
第三范式:满足第二范式的条件下不存在传递函数依赖。
BCNF是3NF的改进形式,一个满足BCNF的关系模式的条件:
- 所有非主属性对每一个码都是完全函数依赖。
- 所有的主属性对每一个不包含它的码,也是完全函数依赖。
- 没有任何属性完全函数依赖于非码的任何一组属性。
四种范式之间存在如下关系:
满足范式要求的数据库设计是结构清晰的,同时可避免数据冗余和操作异常。这并意味着不符合范式要求的设计一定是错误的,在数据库表中存在1:1或1:N关系这种较特殊的情况下,合并导致的不符合范式要求也可能是合理的。
- 数据库设计
- 数据库设计的基本步骤
- 需求分析:需求收集和分析,得到用数据字典描述的数据需求,用数据流图描述的处理需求。
- 概念结构设计:对需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型(用E-R图表示)。
- 逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。
- 物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
- 数据库实施:运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
- 数据库运行和维护:数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
- 数据库设计的各阶段的数据设计描述
- E-R模型
E-R模型的基本元素是:实体、联系和属性。
- 实体:现实生活中任何可以被认知,区分的事物。
- 联系:实体之间的关系,可以一点一,一对多哟,多对多。
- 属性:实体的某一特性称为属性。
关系也是一种数据,需要通过一个字段存储在表中。
- 一对一:一对一关系是最好理解的一种关系,主键可以设置为在两个表中的任意一个表。在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面。
- 一对多:主键应存放在多的表中。1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键。
- 多对多:新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值。对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系。
- E-R图集成
E-R图的集成一般需要分两步走:
1.解决各分E-R图之间的冲突,合并E-R图,生成初步E-R图。
各子系统的E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。属性冲突主要包含以下两类:属性域冲突,即属性值的类型、取值范围或取值集合不同;属性取值单位冲突。
命名冲突主要包含以下两类:
- 同名异义,即不同意义的对象在不同的局部应用中具有相同的名字。
- 义名同义,即同一意义的对象在不同的局部应用中具有不同的名字。
结构冲突主要包含以下三类:
- 同一对象在不同的应用中具有不同的抽象。例如职工在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。解决方法通常是结合两个准则将属性变换成实体或将实体变换成属性,使同一对象具有相同的抽象。
- 同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同。解决方法是使该实体的属性取各子系统的E-R图中属性的并集,再适当调整属性的次序。
- 实体间的联系在不同的E-R图中为不同的类型。解决方法是根据应用的语义对实体联系的类型进行综合或调整。例如:零件和产品之间存在多对多的联系“构成”,产品、零件与供应商三者之间还存在多对多的联系“供应”(一个供应商可以给多个产品供应多种零件,一个产品可以使用多个供应商供应的零件,一个零件可以由多个供应商供给),这两个联系互相不能包含,则在合并两个E-R图时就应该把它们综合起来。
2.消除不必要的冗余,设计基本E-R图。
在初步E-R图中可能存在一些冗余的数据和实体间冗余的联系。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由其他联系导出的联系。