目录与学习目标

  1. 1:什么是数据库系统?
  2. 2:什么是元组,码,候选码,主码,外码,主属性,非主属性?
  3. 3:什么是E-R图?
  4. 4: 三大范式
  5. 5: 存储过程
  6. 6dropdeletetruncate区别?
  7. 7:数据库设计通常分为哪几步?

1:什么是关系型数据库

关系型数据库是依据关系模型来创建的数据库。
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

即是:不仅仅是在表中的数据有关联关系,其他表的数据相互之间也可能有关系。

2:关系型数据库与非关系型数据库

那么什么是非关系型数据库,对比于关系型数据库,即是关系非常非常简单,并没有太多的关联关系的数据库。

我们常见的非关系型数据库:
    键值对模型:Redis MemCache
    文档类模型:MongoDB
    列模型:Hbase

 为什么我在对比的时候,不指出其缓存与持久化的区别特性呢?
        因为关系型数据库的数据也有存在缓存区的时候,而非关系数据库的数据也有持久化的时候,
        因此我觉得缓存与持久化是它们的很重要的特性,但并不是其根本特性。
        它们最根本的区别还是其底层的数据结构决定的关系(非关系)特性。

3:什么是数据库系统?

后续的数据库系统讲解都以狭义的指关系型数据库

数据库系统(Data Base System,简称DBS),由以下组成
  1:数据库(DataBase 数据的集合)
  2:数据库管理系统(Database Management System 操作数据库的软件)
  3:数据库管理员(Database Administrator,管理软件)

4:什么是元组,码,候选码,主码,外码,主属性,非主属性?

元组:行  
码:列   能唯一的标识一个元组 
候选码:某一属性(身份证号)或属性组(班级 学号)的值能唯一的标识一个元组 
主码:主码也叫主键,从候选码中选出,仅有一个主码
外码: 一个关系中的一个属性是另外一个关系中的主码  (实际基本不用)
主属性:候选码中出现过的属性称为主属性
非主属性: 不包含在任何一个候选码中的属性称为非主属性

5:什么是E-R图?

E-R图也称实体-联系图(Entity Relationship Diagram)
提供了表示实体类型、属性和联系的方法
然后可以通过E-R图转换为数据库实际的关系模型

每个学生可以选若干门课程,同一门课程也可以被若干人选择,所以它们之间的关系是多对多(M:N)。
还有其他两种关系是:1对1(1:1)、1对多(1:N)。

image.png
image.png

6: 三大范式

依赖:
    函数依赖 :
        在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值;
        X → Y(Y依赖于X)。

    完全函数依赖 :
        班级学生基本信息表R(学号,班级,姓名)
        (学号,班级)->(姓名)

1NF(第一范式):
    所有的关系型数据库都能满足
    属性(对应于表中的字段)不能再被分割 (一个字段只能有一个值)

2NF(第二范式):
    2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
    部分函数依赖:
    学生基本信息表R中(序号,身份证号,姓名)
    (序号,身份证号)->(姓名),
    (序号)->(姓名),
    (身份证号)->(姓名);
    所以姓名部分函数依赖与(序号,身份证号);

3NF(第三范式):
    3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖 。
    传递依赖:(学号 → 系名,系名 → 系主任)

7: 存储过程

使用情景:
    完成一个操作可能需要写一大串SQL语句
介绍:
    存储过程看成是一些 SQL 语句的集合,中间加了逻辑控制语句。
特点:
    1:预编译过的,比单纯SQL语句执行要快;
    2:难以调试和扩展,而且没有移植性,还会消耗数据库资源。

代码处理逻辑写在SQL里面(阿里巴巴Java开发手册里要求禁止使用)

8:drop、delete与truncate区别?

1:delete(删除数据) : delete from 表名 where 列名=值,删除某一行的数据 ,但不删除索引;    
2:truncate (清空数据) : truncate table 表名 ,删除表中的所有数据 以及 索引;   
3:drop(丢弃数据): drop table 表名 ,直接将表都删除掉;

delete 语句是DML (数据库操作语言)语句,这个操作会放到 rollback segement 中,事务提交之后才生效。        
truncate和drop 属于DDL(数据定义语言)语句,操作立即生效,不能回滚,操作不触发 trigger。

9:数据库设计通常分为哪几步?

1:需求分析 : 分析用户的需求,包括数据、功能和性能需求。
2:概念结构设计 : 主要采用E-R模型进行设计,包括画E-R图。
3:逻辑结构设计 : 通过将E-R图转换成表,实现从E-R模型到关系模型的转换。
4:物理结构设计 : 主要是为所设计的数据库选择合适的存储结构和存取路径。
5:数据库实施 : 包括编程、测试和试运行:。
6:数据库的运行和维护 : 系统的运行与数据库的日常维护。