数据库基础知识总结
什么是数据库, 数据库管理系统, 数据库系统, 数据库管理员?
数据库 : 数据库(DataBase 简称 DB)就是信息的集合
数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大型软件
数据库系统 : 数据库系统(Data Base System,简称 DBS)通常由软件、数据库和数据管理员(DBA)组成。
数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统
什么是元组, 码, 候选码, 主码, 外码, 主属性, 非主属性?
元组:表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。 在二维表里,元组也称为行。
码:码就是能唯一标识实体的属性,对应表中的列。
候选码:若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,"学号"是能唯一的区分学生实体的,同时又假设"姓名"、"班级"的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。
主码 : 主码也叫主键
外码 : 外码也叫外键。如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码
主属性:候选码中出现过的属性称为主属性。比如关系 工人(工号,身份证号,姓名,性别,部门). 显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性
非主属性: 不包含在任何一个候选码中的属性称为非主属性。比如在关系------学生(学号,姓名,年龄,性别,班级)中,主码是"学号",那么其他的"姓名"、"年龄"、"性别"、"班级"就都可以称为非主属性
什么是 ER 图?
ER 图 全称是 Entity Relationship Diagram(实体联系图),提供了表示实体类型、属性和联系的方法。
ER 图由下面 3 个要素组成:
- 实体:通常是现实世界的业务对象,当然使用一些逻辑对象也可以。比如对于一个校园管理系统,会涉及学生、教师、课程、班级等等实体。在 ER 图中,实体使用矩形框表示。
- 属性:即某个实体拥有的属性,属性用来描述组成实体的要素,对于产品设计来说可以理解为字段。在 ER 图中,属性使用椭圆形表示。
- 联系:即实体与实体之间的关系,在 ER 图中用菱形表示,这个关系不仅有业务关联关系,还能通过数字表示实体之间的数量对照关系。例如,一个班级会有多个学生就是一种实体间的联系。
数据库范式了解吗?
数据库范式有 3 种:
- 1NF(第一范式):属性不可再分。
- 2NF(第二范式):1NF 的基础之上,消除了非主属性对于码的部分函数依赖。
- 3NF(第三范式):3NF 在 2NF 的基础之上,消除了非主属性对于码的传递函数依赖
主键和外键有什么区别?
-
主键(主码):不能有重复,不允许为空。一个表只能有一个主键。
-
外键(外码):外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键
为什么不推荐使用外键与级联?
增加了复杂性: a. 每次做 DELETE 或者 UPDATE 都必须考虑外键约束
增加了额外工作:数据库需要增加维护外键的工作,比如当我们做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,保证数据的的一致性和正确性
对分库分表不友好:因为分库分表下外键是无法生效的
如果系统不涉及分库分表,并发量不是很高的情况还是可以考虑使用外键的
什么是存储过程?
我们可以把存储过程看成是一些 SQL 语句的集合,中间加了点逻辑控制语句,使用存储过程比单纯 SQL 语句执行要快,因为存储过程是预编译过的。但是存储过程难以调试和扩展,而且没有移植性,还会消耗数据库资源
drop、delete 与 truncate 区别?
用法不同
drop
(丢弃数据): drop table 表名
,直接将表都删除掉,在删除表的时候使用。
truncate
(清空数据) : truncate table 表名
,只删除表中的数据,再插入数据的时候自增长 id 又从 1 开始,在清空表中数据的时候使用。
delete
(删除数据) : delete from 表名 where 列名=值
,删除某一行的数据,如果不加 where
子句和truncate table 表名
作用类似。
属于不同的数据库语言
truncate
和 drop
属于 DDL(数据定义语言)语句,操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。
而 delete
语句是 DML (数据库操作语言)语句,这个操作会放到 rollback segment 中,事务提交之后才生效。
DML 语句和 DDL 语句区别:
DDL和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象
-
DML 是数据库操作语言(Data Manipulation Language)的缩写,主要包括表记录的插入、更新、删除和查询,是开发人员日常使用最频繁的操作。
-
DDL (Data Definition Language)是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。。DDL 语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。
-
另外,由于
select
不会对表进行破坏,所以有的地方也会把select
单独区分开叫做数据库查询语言 DQL(Data Query Language)。
执行速度不同
一般来说:drop
> truncate
> delete
数据库设计通常分为哪几步?
- 需求分析 : 分析用户的需求,包括数据、功能和性能需求。
- 概念结构设计 : 主要采用 E-R 模型进行设计,包括画 E-R 图。
- 逻辑结构设计 : 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。
- 物理结构设计 : 主要是为所设计的数据库选择合适的存储结构和存取路径。
- 数据库实施 : 包括编程、测试和试运行
- 数据库的运行和维护 : 系统的运行与数据库的日常维护