数据库设计学习笔记
一、理解并口述(技术点和面试点)
1.数据库简介
口述1:什么是数据?(理解并掌握)
- 数据(Data)是描述事物的标记符号。例如: 人的身高数据是170cm, 体重数据是60kg,一本书的页数有100页等。
- 计算机在处理数据时,会将与事务特征相关的标记组成一个记录来描述。例如: 学生信息(学号,姓名,出生日期,班级等)用一组记录来表示。学生表里有很多条学生记录。
口述2:什么是数据库(Database)?(理解并掌握)
- 数据库就是用户存放数据、访问数据、操作数据的存储仓库,它是按照数据结构来组织、存储和管理数据的仓库。
- 数据库中存储的基本对象是数据表,数据库中存放的是一堆数据表。
口述3:什么是数据库管理系统(DBMS)?(理解并掌握)
- 数据库管理系统(Database Management System,DBMS),就是管理一个数据库的软件。
口述4:数据存储方式的变迁和数据库的数据存储原理(了解)
-
数据存储的方式的变迁:
1.结绳记事
2.刻石记事
3.文字记事
4.Excel表格
5.数据库
-
数据库的数据存储方式:一条记录–》 --》数据库
口述5:数据库的分类有哪些?(了解)
1.按规模分类:
- 小型数据库:Access
- 中型数据库:SQL Server、MySQL、informix
- 大型数据库:Sybase、Oracle、DB2
2.按数据结构类型分类:
-
网状型数据库(Network Database)
以网状模型来组织、存储和管理数据的数据库。例如:DBTG是网状型数据库。
-
树状型数据库(Hierarchical Database)
树状型数据库就是层次型数据库,它是以层次树状模型来组织、存储和管理数据的仓库。例如:IMS属于层次型数据库。
-
关系型数据库(Relational Database) (面试题!!!)
RDBMS指的是关系型数据库管理系统,全称:Relational Database Management System。例如:MySQL、Oracle.
-
非关系型数据库NOSQL
分类:
(1)键值(Key-Value)存储数据库
(2)列存储数据库
(3)文档型数据库
(4)图形(Graph)数据库
总结NoSQL数据库在以下这几种情况比较适用:
(1)数据模型比较简单;
(2)需要灵活性更强的IT系统;
(3)对数据库性能要求较高;
(4)不需要数据的高度一致性;
(5)对于给定Key,比较容易映射复杂值的环境。
代表:
(1)Membase
(2)MongoDB
(3)Hypertable
(4)CouchDB
Redis也是非关系型数据库
-
面向对象数据库(Object-oriented Database)
口述6:什么是关系型数据库?常见的关系型数据库有哪些?(面试题!!!)
RDBMS指的是关系型数据库管理系统,全称:Relational Database Management System。
1.关系型数据库介绍:
-
关系型数据库当今最为成熟的数据库模型,它是以关系型结构来组织、存储和管理数据的仓库。
-
关系型将现实世界的实体作为独立的个体存储,而各个体之间的关系,则通过属性连接。这样在最大程度上保证了数据的独立性,数据之间的关系通过属性进行连接则提供了极大的灵活性。当然,这也使得程序员设计数据库更加容易。
2.常见的关系型数据库有哪些?
- Microsoft SQL Server(微软公司)
- MySQL (MySQL公司)
- Oracle(甲骨文公司)
- Sybase(Sybase公司)
- IBM DB2(IBM公司)
3.优缺点比较:
- (1)Sybase数据库具有较高的性能和极高的安全性,并具有跨平台的能力,可运行于Unix、Windows及Nove11 Netware环境。
- (2)DB2支持面向对象编程,并有强大的开发和管理工具。
- (3)SQL Server 在性能及安全性能上稍差,但是其占用系统资源较少,微软公司提供的开发和管理工具也比较简单易用。
- (4)MySQL数据库使用简单、操作方便,性能也较高。它是一款开源的免费数据库软件。
- (5)Oracle是目前比较流行的大型关系型数据库,是应用最广泛地客户端/服务器(Client/Sever)体系结构的数据库。
口述7:主流数据库产品有哪些?(掌握)
-
主流数据库产品:
微软公司:SQL Server、Acccess
Oracle公司:Oracle、MySQL
IBM公司:DB2、informix
Sybase公司:Sybase、NOSQL
2.数据库的基本概念(重点)
口述1:什么是实体?(重点掌握)
- 数据库实体就是数据库管理系统中的不同管理对象。
- 实体是一个带有描述特性的可以分辨的对象。
- 实体在数据库里边就是数据表。
口述2:如何寻找实体?(重点掌握)
-
从哪里寻找实体,通过需求分析说明书寻找实体,实体(Entity)是名词,找出与系统相关的实体。
-
例如:
1、学生管理系统中的学生是我们管理的对象,学生就是实体, 班级是我们管理的对象,班级就是实体。
2、员工管理系统中的员工是管理的对象,员工就是实体 部门是管理的对象,部门就是实体。
口述3:什么是实体属性?(重点掌握)
-
实体属性是指实体的特征,所包含的信息,是附加到实体上的数据项。
例如:学生的学号和姓名就是学生实体的属性。
口述4:如何确定实体属性?(重点掌握)
-
从实体的特征和与他相关的信息的中找。
如:一个学生的属性就有学号、姓名、所在班级、成绩等等;
一个员工的属性就有工号、姓名、所在部门、职务、薪水等。
口述5:什么是实体的标识?(重点掌握)
- 标识符是能够唯一标识实体的每条记录的一个实体属性或实体属性的集合,CDM中的标识符等同于PDM中的主键(Primary Key)或候选键(ALternate Key)。每个实体至少有一个标识符,若一个实体中只存在一个标识符,它就自动被默认指派为该实体的主标识符(Primary Identifier)。
口述6:什么是实体之间的关系?(重点掌握)
-
实体之间的关系是实体间的连接。关系数据库中的实体与实体之间的联系实际上就是表与表之间的关系,是通过它们的公共属性连接起来的。
1.一对一关系 1:1
一对一关系:一个实体对应一个实体
举例:班长与班长之间的联系:
一个班级只有一个正班长
一个班长只在一个班中任职
2.一对多关系1:n
一对多关系:一个实体对应多个实体,也就是一个实体与多个实体有联系。
举例:班级与学生之间的联系:一个班中有若干名学生,每个学生只在一个班级中学习。
3.对多对关系m:n
多对多的关系:一个实体对应多个实体,而它所对应的实体也与多个实体有联系。
举例:(1)课程与学生之间的联系:一门课程同时有若干名学生选修,一个学生可以同时选修多门课程;(2)老师与学生之间的联系:一个学生可以有多个老师,一个老师也可以教多名学生。
口述7:E-R图的三大要素?如何表示?(理解并掌握)
- E-R图中有三大主要元素:实体、属性和关系
- 画E-R图时用长方形表示实体,用椭圆表示属性,用菱形表示关系。
3.数据库设计的核心原则
口述1:数据库的三范式如何理解?(重点面试题)
-
三范式是为了规范数据表,要求数据完整的前提下,达到最小冗余,占用资源最少。总结三范式的核心:尽量不要出现冗余数据。
-
三范式:
第一范式(1NF):
原则:原子列 一个列不能再被拆分 一个列中不能有多个信息。如果有的列包含多种信息,可以把它抽取出来成为一个单独的表。例如:学生表中所属班级。
第二范式(2NF):
当且仅当实体E满足第一范式,且每一个非主键属性完全依赖主键时,满足第二范式。每条数据都必须有唯一确定自身的标识–id“主键”Primary Key.
第三范式(3NF):
表中不能包含其他非主键列,任何字段也不能由其他字段派生出来,它要求字段没有冗余。–fk"外键"FOREIGN KEY。
除了三范式,还有第四范式(4NF)、第五范式(5NF)、第六范式(6NF)、BCNF;在满足三范式的基础上:不允许出现有主键的一部分被另一部分或其他部分决定。
口述2:反范式设计的核心思想及常用手段(了解)
-
1.反范式设计的核心思想:通过增加冗余数据,以达到提高查询速度的目的。
-
2.反范式常用手段:横向切割表,纵向切割表,增加冗余列,增加附加列。
a)横向切割表:例如-把一个表按时间段切割成两个表。
b)纵向切割表:例如-把一个表的几个常用列切割出来成为一个表,剩下的列成为一个表。
c)增加冗余列:例如-如果要查经常查看学生信息和班级名称,为了避免多表查询带来查询效率的问题。
d)增加附加列:例如:如果知道一个产品表里有单价,数量,可以增加一列金额,便于查询。
口述3:如何设计数据表?(掌握)
-
1.满足三范式
-
2.主键设计最好采用单一主键,最好不要使用没有业务语义的字段作为主键,(如:Oracle中Sequence来维护一个
主键),主键一般建议使用数值型,会提高检索效率。
-
3.关于冗余字段的问题,应该根据需求的具体情况是否加入
-
4.最好加入外键约束(在开发阶段最好不要加入外键约束,在运行阶段加入外键约束)。
-
5.如果数据量非常大,并且频繁的根据相关字段查询,最好建立索引。
口述4:数据库设计的基本过程有哪些?
- 1.需求收集与分析
- 2.概念结构设计
- 3.选择合适的DBMS
- 4.逻辑结构设计
- 5.物理结构设计
- 6.数据库实施
- 7.数据库运行和维护
4.关系型数据库设计方法及步骤(重点掌握)
(1)需求分析说明书
(2)使用Power Designer工具进行概念数据模型(CDM)设计
- 寻找(确定)系统实体
- 确定实体属性
- 确定实体关系
- 强制关系与非强制关系
(3)物理数据模型(PDM)设计
- 通过概念数据模型CDM转换成物理数据模型PDM
- 针对数据表应用三范式
(4)物理数据模型PDM的生成与分析
- CDM设计好后,点“Tools”选择“Generate Physical Data Model”,点"Generate new Physical Data Model" ,DBMS选择MySQL5.0, 点“确定”即可。
注意: 1)、强制与非强制关系决定以后外键的取值能不能为空。 2)、一个实体会对应一张表。 3)、多对多关系的两个实体中间会产生一个中间表。 多对多关系会变成两个一对多关系。 很可能表的个数会多于实体个数。4)、逻辑模型中的“列”在数据表中称为“字段”。 物理模型中的”数据类型“与数据库类型相关。 逻辑模型中的标识就是PK(PRIMARY KEY),PK 就是主键 ,唯一标识表里的一条记录。主键不可以重复也不可以为空。FK(FOREIGN KEY)是外键,外键可以为空,也可以重复。外键出现在多的那边。 以学生表与课程表的中间表为例,S_ID与C_ID既是主键又是外键,它们一起被称为联合主键或复合主键,联合主键记录不能重复。