🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
学习目标
- 认识数据库的基本概念和理论
- 了解当今常用的数据库
- 了解数据库的发展历史
- 理解数据库发展过程中的经典数据模型
- 掌握关系数据库的基本概念
为什么要使用数据库和必要性
我们先来看一张图:
信息爆炸是对互联网中的信息量快速发展的一种描述,形容其发展的速度就像原子弹爆炸一样席卷整个世界!
每天在我们所生活的这个世界出现了大量的信息,信息的增长速度绝对是一件近乎恐怖的事情, 所以称之为信息爆炸
。
而这些信息的表现形式也是在各个领域多种多样, 比如: 新闻信息、娱乐信息、广告信息、视频信息、等等, 这些信息早已严重超载! 如何处理这些信息,也就是存储、调用访问、共享、和这些信息的安全性
也已经成为了一大问题!
所以就产生了数据库管理系统
来对这些数据信息进行处理!
而且有了数据库我们就可以对大量的数据信息进行高效存储、高效访问、数据共享、数据安全
等处理了!
数据库的基本概念
数据和信息
数据是信息的载体, 数据也是信息的一种表现方式
信息是从数据而来的知识!
如图
所以通常你看到的信息都是通过数据加工处理得到的用户信息!
数据库和数据库表的关系又是什么?
简单一点的说数据库
是数据
的集合
数据库中的表
也是是同类实体
的集合
而数据库
包括数据库表
和其他的数据对象
如图
数据库管理系统又是什么?
通常情况下数据库管理系统
是可运行、可维护的一种数据管理软件系统
而这个数据管理软件
一般也运行在操作系统之上, 用户通过应用程序直接进行操作和访问!
如图
数据冗余
关于数据冗余
这个词汇,我们在以后的实际项目开发中会经常遇到,也会经常提起这个词汇!
这里我们简单的提及一下,也就是数据库里面发生的数据重复
的情况就叫数据冗余
比如说一般情况下一个字段在多个表里重复出现,就会出现冗余数据
举个栗子
当用户购买的商品信息里面每一条都记录了用户的信息,那么时间长了久会产生一些数据不一致的情况, 因为用户信息可能会被用户自身修改而导致不一致的情况,从而导致后期开发和维护的成本! 当数据体量足够庞大之后,就可能导致数据异常或者其他问题!
所以我们在最初的数据库与表的设计上就要遵循一些设计规范
,从而避免这种数据冗余
的情况
这个我们在后面会慢慢讲到!
当今常用的数据库有哪些?
目前依旧常用的数据库大致有以下几种:
- Microsoft公司的SQL Server
- Mysql
- Oracle公司的ORACLE
- IBM公司的DB2
- PostgreSQL
当然还有其他的数据库,不只是这些,这里就不展开讨论了,我个人用得最多的就是SQL Server
和MySQL
我在后期的教程中也会重点讲解着两种数据库管理工具!
比如SQL Server
它是微软(Microsoft)推出的关系数据库产品, 内涵单进程、多线程核心
客户机/服务器(C/S)结构
易用、易管理、易学习上手!
你们经常听说的SQL到底是什么?
SQL
是我们用于访问
和处理数据库
的标准的计算机语言
通常情况下: SQL
被称为结构化查询语言
, 这种语言让我们有能力访问数据库
SQL具体能够做什么?
通常情况下,我们在实际开发中SQL能够帮助我们完成以下工作:
- 面向数据库执行查询 (查询数据)
- 可从数据库取回数据 (获取数据)
- 可在数据库中插入新的纪录 (插入数据)
- 可更新数据库中的数据 (更新数据)
- 可从数据库删除记录 (删除数据)
- 可创建新数据库
- 可在数据库中创建新表
- 可在数据库中创建存储过程
- 可在数据库中创建视图
- 可以设置表、存储过程和视图的权限
以上大概就是我们在做web
开发中基本上最常见的SQL
操作!
SQL中的 DML 和 DDL
简单的说通常我们都把SQL
分为两个部分:数据操作语言 (DML)
和 数据定义语言 (DDL)
数据操作语言 (DML)
DML
包含了查询、更新、删除、添加
操作的语法, 这样就构成了 SQL
的 DML
部分
例如
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT - 向数据库表中插入数据
数据定义语言 (DDL)
DDL
的SQL
可以让我们有能力创建或删除表格, 也就是定义数据物理结构层面的能力!
我们也可以定义索引(键)
,规定表之间的链接,以及施加表间的约束。
SQL
中最常见的DDL
语句如下:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
以上这些DML
和DDL
语句我们会在后面挨个讲解!
数据库的发展历史 (了解)
了解了以上概念以后,我们在谈谈数据库的发展史!
其实最早我们使用的是文件数据库管理, 也就是通过文件系统
和操作系统
来对数据
进行管理
和分类
!
如图
这种数据管理的方式虽然简单、方便、但是低效率
也容易出错, 查询、修改、更新
都不方便!
这也算是数据库的萌芽阶段, 文件系统数据库
虽然信息的发展数据库也经历了大致三个阶段:
初级阶段:第一代数据库
中级阶段:第二代数据库
高级阶段:新一代数据库
数据库模型
简单的说数据库模型也就是有效的组织数据的方式!
它定义了数据在数据库中的存储结构、数据之间的关系以及数据的操作方式!
差不多60、70年代的时候,也就是第一代数据库的模型基本上都是网状数据模型
和层次数据模型
的组织结构!
网状数据模型
网状数据模型
简单的说就是多对多
类型的数据组织方式!
举个栗子
例如教师
与课程
两个记录类型,可以有任课
和辅导
两种联系,称之为复合链
。
两个记录类型之间的值可以是多对多
的联系!
例如一门课程被多个学生修读,一个学生选修多门课程
如图
图中实体结点
代表数据记录,连线描述不同结点数据间的关系, 它反映着现实世界中实体间更为复杂的联系, 其基本特征是,结点数据间没有明确的从属关系,一个结点可与其它多个结点建立联系!
网状数据模型
的优点就是可以描述现实生活中极为常见的多对多关系
这种组织关系的数据模型适合复杂的数据信息, 并且这种组织结构也不会存在很多的数据冗余, 但缺点也是显而易见的,算法复杂并且增加了用户查询和定位的难度, 求用户熟悉数据的逻辑结构以及自身所处的位置!
层次数据模型
这种数据组织结构是按树形结构
组织的,这个树中的每个节点表示一个记录类型,节点之间的连线表示它们之间的父子关系。
层次数据模型
由于结构简单,实现容易,但在表示复杂的数据关系时不够灵活!
并且这种组织结构适合一对多
的关系, 算法相对较简单, 有一定的通用性!
如图
图中每个结点
代表数据记录
,连线
描述了位于不同结点数据间的从属关系, 通常都是限定为一对多
的关系!
层次模型
也是最能反映了现实世界中实体
之间的层次关系
, 并在一定程度上支持数据的重构!
但缺点也是必然的: 层次模型
对低层次对象的处理效率低、数据更新、添加插入和删除操作也相对复杂,难以进行反向查询!
同时也要求开发者了解数据
的物理结构,并在SQL
操纵命令中显式地给出存取途径 ,如果要用这种模型来模拟多对多
联系的时候, 可能会导致物理存储上的冗余!
关系数据模型
这种数据组织模型的方式也是我们现目前最常用的一种方式, 也是我们重点要讲到的一种数据模型!
关系数据模型
中的数据是以二维表的形式组织,表之间通过关系, 比如主键
和外键
来建立联系, 易于理解和使用
关系数据模型
组织的数据用户接口简洁、方便、直观, 并且底层数据结构简单清晰!
这种模型的查询和处理效率比较低, 当然任何一种模式的数据模型,都有优缺点!
当然数据模型
还有其他的, 比如对象数据模型
、文档数据模型
等等也都在实际开发中使用着!
在项目中选择数据模型
时,我们也是根据需要和具体的应用场景和需求来决定。
不同的数据库模型
适用于不同的数据结构
和查询需求, 这里就不展开讨论了,我们在后面具体的SQL操作中会挨个说到!
总之我们在学习数据库之前也有必要先了解一下这些基本概念,这样也有助于后期的SQL
学习和操作!
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇