mysql数据库(1) – 数据库的相关知识

mysql数据库(1) - 数据库的相关知识

数据库的基本概念

基础概念

数据处理(Data Processing):对数据进行加工整理的过程,即将数据转换成信息的过程。

数据(Data):描述事物的符号记录,客观世界活动的描述(例如:数字、文字、图片)。

数据处理(Data Processing):对数据进行加工整理的过程,即将数据转换成信息的过程。

信息:信息是数据经过加工后的产物。

数据库的特点

  1. 结构化方式存储,便于查询和分析(结构化存储);
  2. 支持多用户同时访问和使用(共享性);
  3. 数据修改不会(也不需要)影响和修改程序逻辑(独立性);
  4. 保护数据安全(安全性);

数据库管理系统DBMS:用于创建、管理、操作和维护数据库的大型软件系统(比如常见的mysql,mssql等)。

数据库系统:数据库系统是由:1. 数据库(DB);2. 数据库管理系统(DBMS);3. 应用程序;4. 数据库管理员 共同组成的整体。

数据库(DB):是一个以某种组织方式存储在磁盘上的数据的集合。

数据库的用户

  • 数据库管理员:DBA;
  • 数据库分析师:DBD;
  • 应用程序员:PG;
  • 终端用户:End User。

数据管理技术的发展

人工管理阶段

人工管理阶段主要的特征是数据存储于逻辑代码中,难以修改、维护。

  1. 数据与程序深度绑定:数据存储于程序代码中,数据不独立于程序(例如变量定义,地址手动分配)等;
  2. 缺乏共享性:单一程序访问特定数据,数据难以重复使用(多个程序难以访问同一项数据);
  3. 维护成本高:程序改动数据结构的定义,需要大规模重写数据结构或重写数据部分,维护效率低下。

文件系统阶段(20世纪50-60年代)

数据从逻辑代码中分离,借助操作系统或磁盘系统提供的文件系统,将数据切分为文件,按照文件系统的存储结构存储数据。在这个阶段的优势:1. 由于数据和代码分离,使得数据的存储和管理更加灵活;2. 通过分层级的目录结构,使得对多类型的存储分层管理。

  1. 数据冗余:相同信息存储于多个文件之中,重复存储,浪费存储空间。
  2. 不一致性质:多处数据难以同步更新,容易产生冲突;
  3. 关联性较差:文件与文件之间缺乏联系,复杂查询难以实现。

数据库系统阶段(20世纪60年代-今天)

标志着数据的管理进入结构化和高效化的阶段。

特点:

  1. 数据可以共享:多个应用可以同时访问同一数据,提高了数据的利用率,减少冗余且扩展性高;
  2. 数据独立性:数据的物理存储和逻辑结构分离,修改数据结构不会对应用程序造成影响;
  3. 数据完整性:通过约束条件,可以确保数据的正确和一致;
  4. 数据安全性:提供用户权限管理和数据加密机制,保证数据安全。

按照数据库模型和数据的组织方式,常见的数据库类型有:

  1. 关系型数据库:例如Mysql、sqlserver等,类似于二维表,通过主键和外键对数据进行关联;
  2. 非关系型(NoSQL)数据库:高灵活性质,例如键值数据库redis、文档性数据库。
  3. 分布式数据库:作为数据库技术和分布式技术融合产生的类型,核心是将数据存储分散到存储节点等,但不是学习的重点。

回顾

Q:简述什么是数据库?数据库有哪些主要特征?

A:数据库是将定用途数据的集合。主要特征有:1. 结构化存储;2. 共享性;3. 独立性;4. 安全性。

By AI

数据库是长期存储在计算机内、有组织的、可共享的、统一管理的相关数据的集合。

数据库系统(或说数据库)的主要特征包括:

  1. 数据结构化:数据按照特定模型组织,并描述数据间的联系。
  2. 数据的共享性高、冗余度低、易扩充:可为多个应用服务,减少重复数据,易于适应变化。
  3. 数据独立性高:包括物理独立性和逻辑独立性,程序与数据分离。
  4. 数据由数据库管理系统(DBMS)统一管理和控制,从而提供了:
    • 数据的安全性保护
    • 数据的完整性检查
    • 并发控制
    • 数据库恢复

By Teacher

数据库是与特定主题或用途相关的数据和对象的集合,简单地说,就是存放数据的仓库。
其主要特征:
1.实现了数据共享,减少了数据冗余;
2.数据储存结构化;
3.增强了数据的独立性;
4.加强了对数据的保护。

易错

下面列出的数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是( )
I.人工管理阶段
II.文件系统阶段
III.数据库阶段
A.I和II
B.只有II
C.II和III
D.只有I

答案应该是D,这里需要说明专门的软件是广义上专门的软件,II阶段的文件系统也算一种管理数据的软件(计算机科学和数据库发展的标准定义来看,文件系统阶段被视为出现了专门的数据管理软件,这个软件就是操作系统提供的文件系统。),所以答案应该是D。

常见的数据库

关系型数据库

都可以使用统一的SQL语言管理。一个关系就是一个二维表,关系就是二维表的集合(所以称之为关系型数据库)。

  1. mysql:开源的数据库,但是已被甲骨文公司收购,为了对抗甲骨文的收购行为,原始维护者开发了MariaDB分支,完全兼容mysql。
  2. Oracle:甲骨文公司的数据库,是第一个商业化的关系型数据库(2.5kw行屎山代码的数据库),数据库非常稳定、可靠;
  3. SQLServer:微软公司出品的数据库,主要用于Windows环境下,.NET技术栈的首选数据库。
  4. Sqlite:轻量级的数据库,不需要数据库的服务端,一个.db文件就是它的全部。常见于嵌入式系统,或者C端软件配置(比如微信客户端就是用sqlite存储聊天数据),多用户写入数据会锁库,并发差,大数据量的情况下性能较差。
  5. ACCESS:微软office套件里的数据库,常见于windows IOT设备的数据库,大数据量的情况下性能较差。
  6. PostgreSQL:现如今最受欢迎的数据库,开源,对SQL语言标准做了高度兼容,通过扩展插件实现更多功能。

非关系型数据库(NoSQL)

不采用传统的二维表的数据结构,而是根据特点使用场景对键值(KV)、文档、列族或者图数据。特点是高性能、灵活性强、支持大规模数据处理和分布式存储。NoSQL牺牲了严格的ACID事务特性,转而追求高性能、高可用性和可扩展性。

  1. MongoDB:文档型数据库,具有高度的动态性和可扩展性;
  2. Redis:内存型的键值数据库(键值数据库只适合做缓存,不要用键值数据库做主力数据存储的数据库类型)

数据模型

数据模型的分类

数据模型是一种抽象的概念工具。用于描述数据的结构、数据之间的联系和数据的约束条件。

  • 数据模型(Data Model):是数据特征的抽象。数据模型是数据库系统的核心与基础,从抽象描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供了一个抽象的框架。数据模型描述了三个部分:数据结构、数据操作和数据的约束条件。
  • 数据结构:主要描述数据的类型、内容、性质与数据间的联系。是对系统静态特征的描述。(比如在mysql中,定义表头、列的名称和数据类型(比如int、float等),表与表之间通过主键和外键建立联系);
  • 数据操作:主要描述在相应数据结构上的操作类型和操作方式,是对系统动态特征的描述。(比如在mysql中,通过INSERT(插入)、DELETE(删除)、UPDATE(更新)、SELECT(查询)等进行数据操作);
  • 数据的约束条件:主要描述数据结构内,数据间的语法、词义联系。他们之间的制约和依存关系,以及数据动态的变化规则,以确保数据的正确、有效和相容。(比如在mysql中,主键不可为空值,或者其他数据专属的逻辑:比如用户ID不能重复(主键约束),年龄不能小于0(检查约束),订单必须属于一个存在的用户(外键约束))

数据模型的抽象

概念数据模型:比如对数据进行分类:确定用户信息需求,聚焦于对业务需求的理解,不涉及具体DBMS和物理存储的细节;

逻辑数据模型:基于概念数据模型的细化,用于明确数据库的结构:确定数据库表的结构、字段类型和数据直接的关系等;

物理数据类型:最贴近实际数据库存储的模型,由DBMS系统管理:考虑存储在物理设备上的存储结构和访问方式。

在物理世界中,通过概念数据模型描述物理世界的规律,再用逻辑数据模型将其转化为机器可读的数据类型,最后通过物理数据类型将数据落地为物理存储。

概念结构设计,首先需要进行业务需求分析,通过调查分析,了解用户的信息需求和处理需求,然后进行归纳于数据抽象,使用E-R构建实体联系图。

常见的数据模型

关系模型(重要)

关系模型是最为广泛使用的数据组织形式,以二维表的形式组织数据。二维表中,每一行代表一个实例,每一列代表一个属性。

  • 关系(Relation)(联系):关系模型中的表称为关系,由行和列组成的二维数据结构,联系是实体之间的相关关联,在E-R图上用菱形表示。一般来说,可以区分为一对一(1:1)、一对多(1:n)、多对多(m:n)。
  • 元组(Tuple)(行、属性、记录):关系模型中的每一行称为元组,代表一个实例的完整数据记录。
  • 属性(Attribute)(列、字段):关系模型中的每一列称为属性,用于描述数据的特定特征或字段。
  • (Domain):属性所取值的集合成为域,即字段的取值范围。
  • 候选键(Candidate Key):能够唯一标识关系中每个元组的属性或属性组合称为候选键。
  • 主键(Primary Key)(主码):从候选键中选定的键,用来唯一表示关系中的元组,也称为主码。
  • 外键(Foreign Key)(外码):关系中的某个属性,它引用自另一个关系中的主键,用来建立表与表之间的关系。
  • 实体:客观上可以相互区分的事物称为实体,在E-R图上用矩形表示。
  • 实体集:具有相同类型、相同属性的实体集合称为实体集。
  • 实体型:一类实体所具有的共同特征或者属性的集合称之为实体型。

关系数据库的规范化

关系数据库规范化是数据库中的重要环节,也是数据库设计的重要原则之一。

规范化设计多个范式,从高到低分为:第五范式(5NF)、第四范式(4NF)、BC范式(BCNF)、第三范式(3NF)、第二范式(2NF)、第一范式(1NF)。

只有符合第一范式的数据库才可以被称为关系型数据库。符合高一级范式的同时,必须同时符合低一级范式。

一般来说,数据库需要至少满足第三范式(3NF)。

第一范式(1NF)

要求数据库的表中,每个属性(列)都必须是不可分割的原子值。(属性不可拆分)。

不符合第一范式的例子

**学生ID(主键)** **姓名** **已选课程**
101 张三 数学,物理,化学
102 李四 英语,历史

不符合的原因:在“已选课程”这个属性中,包含了多个值,即非原子属性。

符合第一范式的例子

**学生ID(主键)** **姓名** **已选课程**
101 张三 数学
101 张三 物理
101 张三 化学
102 李四 英语
102 李四 历史

第二范式(2NF)

要求满足第一范式的基础上,所有非主键的属性(列)都必须完全依赖主键,不能只依赖主键的一部分,主要出现于使用了联合主键的情况下(也就是多对多的情况)。

简单来说就是使用多个字段同时作为主键的时候,其他字段必须和全部的主键存在关联。

不符合第二范式的例子

**订单ID(主键)** **产品ID(主键)** **产品名称** **产品价格** **购买数量**
1 A01 笔记本 2.5 10
2 A01 笔记本 2.5 5

假设这里的主键是联合主键,即订单ID产品ID共同作为主键。

那么,属性购买数量依赖于订单ID产品ID;但是属性产品名称和属性产品价格只依赖于产品ID,而不依赖订单ID

如果需要符合第二范式,则需要将该数据表拆分为两个数据表,比如:

符合第二范式的例子

订单表

**订单ID(主键)** **产品ID** **购买数量**
1 A01 10
2 A01 5

产品表

**产品ID(主键)** **产品名称** **产品价格**
A01 笔记本 2.5

第三范式(3NF)

要求满足第二范式的基础上,所有非主键的列都必须主键依赖主键,而不能依赖其他非主键的列。(传递依赖)

简单来说,就是“表中不能有不依赖于主键,而依赖于其他列的列”。如果列 A 依赖列 B,列 B 又依赖主键,那么列 A 就是传递依赖。

消除传递依赖可以减少数据冗余和更新异常。进一步提高数据一致性和可维护性。

不符合第三范式的例子

**订单ID(主键)** **顾客ID** **顾客姓名** **顾客电话** **订单金额**
1001 201 张三 1380000 200
1002 201 张三 1380000 150

在这里面的依赖关系是:

  • 直接依赖顾客ID订单金额直接依赖于订单ID
  • 传递依赖顾客姓名顾客电话依赖于顾客ID,而不是依赖于订单ID

虽然顾客姓名顾客电话最终也由订单ID决定,但这是间接依赖:必须通过顾客ID这个中间环节。

如果需要符合第三范式,则需要对数据表进行拆分:

符合第三范式的例子

订单表:只存放与订单有关的数据:

**订单ID(主键)** **顾客ID** **订单金额**
1001 201 200
1002 201 150

顾客信息表:单独存放顾客信息,将顾客姓名顾客电话直接依赖于顾客ID

**顾客ID(主键)** **顾客姓名** **顾客电话**
201 张三 1380000

数据库设计

概述

数据库设计主要有两个方面,分别是结构特性设计和行为特性设计。

  • 结构特性设计:确定数据库的数据模型,在满足需求要求的前提下尽可能减少冗余,实现数据共享。
  • 行为特性设计:确定数据库应用的行为和的动作,应用的行为由应用程序体现,所以行为特性设计主要是应用程序的设计。
文章「mysql数据库(1) – 数据库的相关知识」,由本站用户「admin」发布。文章仅代表admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/2995」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
本页面暂时没有评论......

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇