> 技术文档 > 被大数据杀熟也要看的——数据库基础概念入门

被大数据杀熟也要看的——数据库基础概念入门

数据库是我们在学习后端开发相关内容时不得不品的重要环节,今天我们就来梳理一下学习数据库操作前需要掌握的基本概念:

目录

数据库

基本概念

分类

关系型数据库基础

基本构成

表(table)/ 关系(Relation)

行(row)/ 元组(tuple)/ 记录(record)

列(column)/ 字段(field)/ 属性(attribute)

关键约束

主键(Primary Key,PK)

外键(Foreign Key,FK)

候选键(Candidate Key)

关系运算(数据操作的基础)

选择(Selection)= 行过滤

投影(Projection)= 列过滤

连接(Join)=表关联

          并(Union)

          交(Intersect)

          差(Except)

范式(Normal Form,NF)

第一范式(1NF)

第二范式(2NF)

第三范式(3NF)


数据库

基本概念

数据库(DB)的简单定义:一个虚拟的文件仓库

数据库管理系统(DBMS)的简单定义:用来管理这个仓库的软件系统

结构化查询语言(SQL)的简单定义:一种专为管理和操作关系型数据库设计的标准化编程语言

而后端开发时与数据库有关的场景一般为:用 SQL语言 通过 数据库管理的软件系统 来操作 相关的 数据库 及其中的数据

分类

数据库管理系统大致可以分为两种类型:关系型和非关系型

关系型DBMS:核心是将数据存储在结构化的表当中,表见提供主键-外键建立联系,有着很强的一致性,相比非关系型DBMS而言扩展性较差(代表:MySQL,PostgreSQL,Oracle,SQL Server)

非关系型DBMS:不使用固定的表结构(NoSQL = Not Only SQL),模式灵活,扩展性强,但事务支持比如关系型DBMS完善(代表:Redis,MongoDB)

一般新手在学习数据库相关知识时都先从关系型数据库开始,所以这里我们详细介绍一下关系型数据库中的概念:

关系型数据库基础

基本构成

表(table)/ 关系(Relation)

数据库下的最大存储单位,类似于一个表格

行(row)/ 元组(tuple)/ 记录(record)

表中的一行记录,记录了一个表下对象的相关信息

列(column)/ 字段(field)/ 属性(attribute)

表中的每一列,代表实体的一个特征

关键约束

主键(Primary Key,PK)

能唯一识别表中某一行的属性(或组合)

特性:唯一性(不能存在相同的两个主键值),非空性(主键值不能为NULL)

外键(Foreign Key,FK)

表中用于关联另一张表的属性,其值要匹配另一张表的主键值

特性:可以为NULL(此时表示暂未关联其他表),但非NULL时必须关联其他表的主键

候选键(Candidate Key)

能唯一标识元组的属性(或组合),但未被选为主键的属性

主键与外键的关系:

外键所在的表称为\"从表\",被关联的表称为\"主表\"

关系运算(数据操作的基础)

选择(Selection)= 行过滤

从表中筛出满足条件的元组(行)

SELECT * FROM 学生表 WHERE 年龄 > 18
投影(Projection)= 列过滤

从表中选择部分属性(列)

SELECT 姓名,年龄 FROM 学生表
连接(Join)=表关联

根据两个表的共同语句,将它们的元组合并为一个新表

          并(Union)

        保留两个表的元组(需结构相同,自动去重)

          交(Intersect)

        保留两个表中共同的元组

          差(Except)

        保留表A有但表B没有的元组

范式(Normal Form,NF)

范式是关系模型中设计表结构的准则,目的是减少数据冗余,避免更新异常

第一范式(1NF)

所有属性值具有原子性(不可再分)

反例:“地址” 字段存储 “北京市海淀区 XX 路”(可拆分为 “省”“市”“区” 等,违反 1NF)

第二范式(2NF)

在满足1NF的前提下,非主键属性完全依赖于主键(不能只依赖主键的一部分)

反例:若 “学生选课表” 主键为(学号,课程号),但 “课程名” 只依赖 “课程号”(不依赖 “学号”),则违反 2NF

第三范式(3NF)

在满足2NF的前提下,非主键之间不能存在依赖关系

反例:“学生表” 中若有 “学院编号” 和 “学院名称”,且 “学院名称” 依赖 “学院编号”,则 “学院名称” 传递依赖于主键 “学号”,违反 3NF(需拆分出 “学院表”)