数据库技术的出现是为了解决数据维护问题的,使用数据库进行数据的管理要比使用手工方式数据管理更加方便。

  1. 什么是数据库?

    高效的存储和处理数据的介质(介质主要是两类:磁盘和内存)

  2. 数据库的分类?

    数据库基于存储介质的不同:进行了分类,分为两类:关系型数据库(SQL)和非关系型数据库(NoSQL:Not Only SQL)

  3. 不同的数据库阵营的产品有哪些?

    • 关系型数据库
      • 大型:Oracle,DB2
      • 中型:SQL-SERVER,MySQL
      • 小型:access
    • 非关系型数据库:MongoDB,memcached,redis(同步到磁盘)
  4. 两种数据库阵营的区别?

    • 关系型数据库:安全(保存在磁盘,基本不会丢失),容易理解,比较浪费空间
    • 非关系型数据库:效率高,但是不安全(断电,数据会丢失)

模型分类

数据模型是对客观世界中某些事物的特征数据抽象和模拟,分为概念模型和物理数据模型两个方面:(目的不同)

  • 概念模型:信息模型,主要用于数据库的设计
  • 逻辑模型和物理模型:包括层次模型、网状模型、关系模型、面向对象模型、对象关系模型,主要是按照计算机系统的观点对数据建模

其中数据模型通常由数据结构数据操作完整性约束这三部分组成。

  • 数据结构(数据存储的问题,二维表):

    指的是对象和对象之间的联系,可以描述出一个客观事物的类型、内容有关的数据项,包括彼此之间的联系。

  • 数据操作(所有的SQL语句):

    针对于单条记录或者多条记录进行操作,主要就是两类:查询、更新,这些全部由SQL定义了。

  • 完整性约束(表内数据约束,表与表之间的约束(外键)):

    保证表中的数据是有意义的。

##三级模式及二级映射

三级模式、二级映射

注:

考题就是画圈的地方

用户级对应外模式

概念级对应模式,又称为概念模式或逻辑模式

物理级对应内模式

考题

(1)某数据库中有员工关系E、产品关系P、仓库关系W和库存关系I,其中:

员工关系E(employeeID、name和department)中的属性为员工编号、姓名和部门。

产品关系P(productID、name、model、size和color)中的属性为产品编号、产品名称、型号、尺寸和颜色。

仓库关系W(warehouseID、name、address和employeeID)中的属性为仓库编号、仓库名称、地址和员工编号。

库存关系I(warehouseID、productID和quantity)中的属性为仓库编号、产品编号和产品数量。

若要求仓库关系负责人引用员工关系的员工编号,员工关系E的员工编号、仓库关系W的仓库编号和产品关系P的产品编号不能为空且唯一标识一个记录,并且仓库的地址不能为空,则依次要满足的完整性约束是 _____ 。(参照完整性、实体完整性、用户定义完整性

注:

参照完整性:主要是为了区分主键和外键

实体完整性:主要是为了确保主键不能为空

用户定义完整性:主要是为了让不是主键的字段不为空

主键与外键

主键:主键是能确定一条记录的唯一表示,比如ID

外键:主要是用于与另一张表的关联,能确定另一张表记录的字段,用于保持数据的一致性。

例子

学生表(学号,姓名,性别,班级)

其中每个学生的学号是唯一的,学号就是一个主键

课程表(课程编号,课程名,学分)

其中课程编号是唯一的,课程编号就是一个主键

成绩表(学号,课程号,成绩)

成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

数据库语句

成绩单的主键(学号和课程号的属性组):PRIMARY KEY (Sno, Pno);

成绩单中学号这一外键:FOREIGN KEY (Sno) PEFERENCES S (Sno);

实体之间的联系

实体之间有三种联系:

  • 1 : 1
  • 1 : n
  • m : n

如下图:

E-R图的三种联系

考题

(1)设有职工EMP(职工号、姓名、性别、部门号、职务、进单位时间及电话)、职务JOB(职务及月薪)和部门DEPT(部门号、部门名称、部门手机和负责人)实体集。一个职务可以由多个职工担任,但是一个职工只能担任一个职务并属于一个部门,部门负责人是一个职工。下图所示的a和b处的实体名分别为_____ 、_____ ,图中a、b之间为_____ 联系。(EMP、JOB、* :1

1
2
3
4

graph LR;
DEPT -- 1 : * --- a;
a --- b;

注:

这里主要是讲数据库的理论知识点,接下来我就要开始花大量的时间学习SQL、mySQL、Oracle、MongoDB(node.js)的语句学习,加油!