【你也能从零基础学会网站开发】认识数据库和数据库中的基本概念

🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注

学习目标

  1. 认识数据库的基本概念和理论
  2. 了解当今常用的数据库
  3. 了解数据库的发展历史
  4. 理解数据库发展过程中的经典数据模型
  5. 掌握关系数据库的基本概念

为什么要使用数据库和必要性

我们先来看一张图:


信息爆炸是对互联网中的信息量快速发展的一种描述,形容其发展的速度就像原子弹爆炸一样席卷整个世界!

每天在我们所生活的这个世界出现了大量的信息,信息的增长速度绝对是一件近乎恐怖的事情, 所以称之为信息爆炸

而这些信息的表现形式也是在各个领域多种多样, 比如: 新闻信息、娱乐信息、广告信息、视频信息、等等, 这些信息早已严重超载! 如何处理这些信息,也就是存储、调用访问、共享、和这些信息的安全性也已经成为了一大问题!

所以就产生了数据库管理系统 来对这些数据信息进行处理!

而且有了数据库我们就可以对大量的数据信息进行高效存储、高效访问、数据共享、数据安全等处理了!

数据库的基本概念

数据和信息

数据是信息的载体, 数据也是信息的一种表现方式
信息是从数据而来的知识!

如图

所以通常你看到的信息都是通过数据加工处理得到的用户信息!

数据库和数据库表的关系又是什么?

简单一点的说数据库数据集合
数据库中的也是是同类实体集合
数据库包括数据库表和其他的数据对象

如图

数据库管理系统又是什么?

通常情况下数据库管理系统是可运行、可维护的一种数据管理软件系统
而这个数据管理软件 一般也运行在操作系统之上, 用户通过应用程序直接进行操作和访问!

如图

数据冗余

关于数据冗余这个词汇,我们在以后的实际项目开发中会经常遇到,也会经常提起这个词汇!

这里我们简单的提及一下,也就是数据库里面发生的数据重复的情况就叫数据冗余

比如说一般情况下一个字段在多个表里重复出现,就会出现冗余数据

举个栗子

当用户购买的商品信息里面每一条都记录了用户的信息,那么时间长了久会产生一些数据不一致的情况, 因为用户信息可能会被用户自身修改而导致不一致的情况,从而导致后期开发和维护的成本! 当数据体量足够庞大之后,就可能导致数据异常或者其他问题!

所以我们在最初的数据库与表的设计上就要遵循一些设计规范,从而避免这种数据冗余的情况
这个我们在后面会慢慢讲到!

当今常用的数据库有哪些?

目前依旧常用的数据库大致有以下几种:

  1. Microsoft公司的SQL Server
  2. Mysql
  3. Oracle公司的ORACLE
  4. IBM公司的DB2
  5. PostgreSQL

当然还有其他的数据库,不只是这些,这里就不展开讨论了,我个人用得最多的就是SQL ServerMySQL 我在后期的教程中也会重点讲解着两种数据库管理工具!

比如SQL Server 它是微软(Microsoft)推出的关系数据库产品, 内涵单进程、多线程核心
客户机/服务器(C/S)结构 易用、易管理、易学习上手!

你们经常听说的SQL到底是什么?

SQL 是我们用于访问处理数据库的标准的计算机语言
通常情况下: SQL被称为结构化查询语言 , 这种语言让我们有能力访问数据库

SQL具体能够做什么?

通常情况下,我们在实际开发中SQL能够帮助我们完成以下工作:

  1. 面向数据库执行查询 (查询数据)
  2. 可从数据库取回数据 (获取数据)
  3. 可在数据库中插入新的纪录 (插入数据)
  4. 可更新数据库中的数据 (更新数据)
  5. 可从数据库删除记录 (删除数据)
  6. 可创建新数据库
  7. 可在数据库中创建新表
  8. 可在数据库中创建存储过程
  9. 可在数据库中创建视图
  10. 可以设置表、存储过程和视图的权限

以上大概就是我们在做web开发中基本上最常见的SQL操作!

SQL中的 DML 和 DDL

简单的说通常我们都把SQL分为两个部分:数据操作语言 (DML) 数据定义语言 (DDL)

数据操作语言 (DML)

DML包含了查询、更新、删除、添加操作的语法, 这样就构成了 SQLDML 部分

例如

SELECT - 从数据库表中获取数据 
UPDATE - 更新数据库表中的数据 
DELETE - 从数据库表中删除数据 
INSERT - 向数据库表中插入数据
数据定义语言 (DDL)

DDLSQL可以让我们有能力创建或删除表格, 也就是定义数据物理结构层面的能力!
我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL中最常见的DDL 语句如下:

CREATE DATABASE - 创建新数据库 
ALTER DATABASE - 修改数据库 
CREATE TABLE - 创建新表 
ALTER TABLE - 变更(改变)数据库表 
DROP TABLE - 删除表 
CREATE INDEX - 创建索引(搜索键) 
DROP INDEX - 删除索引

以上这些DMLDDL语句我们会在后面挨个讲解!

数据库的发展历史 (了解)

了解了以上概念以后,我们在谈谈数据库的发展史!

其实最早我们使用的是文件数据库管理, 也就是通过文件系统操作系统来对数据进行管理分类!

如图

这种数据管理的方式虽然简单、方便、但是低效率 也容易出错, 查询、修改、更新都不方便!

这也算是数据库的萌芽阶段, 文件系统数据库

虽然信息的发展数据库也经历了大致三个阶段:

初级阶段:第一代数据库
中级阶段:第二代数据库
高级阶段:新一代数据库
数据库模型

简单的说数据库模型也就是有效的组织数据的方式!

它定义了数据在数据库中的存储结构、数据之间的关系以及数据的操作方式!

差不多60、70年代的时候,也就是第一代数据库的模型基本上都是网状数据模型层次数据模型的组织结构!

网状数据模型

网状数据模型简单的说就是多对多类型的数据组织方式!

举个栗子

例如教师课程两个记录类型,可以有任课辅导两种联系,称之为复合链

两个记录类型之间的值可以是多对多的联系!

例如一门课程被多个学生修读,一个学生选修多门课程

如图

图中实体结点代表数据记录,连线描述不同结点数据间的关系, 它反映着现实世界中实体间更为复杂的联系, 其基本特征是,结点数据间没有明确的从属关系,一个结点可与其它多个结点建立联系!

网状数据模型的优点就是可以描述现实生活中极为常见的多对多关系

这种组织关系的数据模型适合复杂的数据信息, 并且这种组织结构也不会存在很多的数据冗余, 但缺点也是显而易见的,算法复杂并且增加了用户查询和定位的难度, 求用户熟悉数据的逻辑结构以及自身所处的位置!

层次数据模型

这种数据组织结构是按树形结构组织的,这个树中的每个节点表示一个记录类型,节点之间的连线表示它们之间的父子关系。

层次数据模型由于结构简单,实现容易,但在表示复杂的数据关系时不够灵活!

并且这种组织结构适合一对多的关系, 算法相对较简单, 有一定的通用性!

如图

图中每个结点代表数据记录连线描述了位于不同结点数据间的从属关系, 通常都是限定为一对多的关系!

层次模型也是最能反映了现实世界中实体之间的层次关系, 并在一定程度上支持数据的重构!

但缺点也是必然的: 层次模型对低层次对象的处理效率低、数据更新、添加插入和删除操作也相对复杂,难以进行反向查询!

同时也要求开发者了解数据的物理结构,并在SQL操纵命令中显式地给出存取途径 ,如果要用这种模型来模拟多对多联系的时候, 可能会导致物理存储上的冗余!

关系数据模型

这种数据组织模型的方式也是我们现目前最常用的一种方式, 也是我们重点要讲到的一种数据模型!

关系数据模型中的数据是以二维表的形式组织,表之间通过关系, 比如主键外键来建立联系, 易于理解和使用

关系数据模型组织的数据用户接口简洁、方便、直观, 并且底层数据结构简单清晰!

这种模型的查询和处理效率比较低, 当然任何一种模式的数据模型,都有优缺点!

当然数据模型还有其他的, 比如对象数据模型文档数据模型 等等也都在实际开发中使用着!

在项目中选择数据模型时,我们也是根据需要和具体的应用场景和需求来决定。

不同的数据库模型适用于不同的数据结构和查询需求, 这里就不展开讨论了,我们在后面具体的SQL操作中会挨个说到!

总之我们在学习数据库之前也有必要先了解一下这些基本概念,这样也有助于后期的SQL学习和操作!

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/756587.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动 VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版,在个人电脑上运行企业级工作负载 请访…

【51单片机入门】速通定时器

文章目录 前言定时器是什么初始化定时器初始化的大概步骤TMOD寄存器C/T寄存器 触发定时器中断是什么中断函数定时器点亮led 总结 前言 在嵌入式系统的开发中,定时器是一个非常重要的组成部分。它们可以用于产生精确的时间延迟,或者在特定的时间间隔内触…

Solr安装IK中文分词器

Solr安装IK中文分词器 如何安装Solr与导入数据?为什么要安装中文分词器下载与安装IK分词器1.1、下载IK分词器1.2、安装IK  第一步:非常简单,我们直接将在下的Ik分词器的jar包移动到以下文件夹中  第二步:修改Core文件夹名下\c…

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a :显示所有用户的进程 -u :显示用户名和启动时间 -x :显示 没有控制终端的进程 -e :显示所有进程,包括没有控制终端的进程 -l :长格式显示 -w :宽…

什么是机器学习,机器学习与人工智能的区别是什么(一)?

人工智能和计算机游戏领域的先驱阿瑟塞缪尔(Arthur Samuel)创造了 "机器学习"一词。他将机器学习定义为 “一个让计算机无需明确编程即可学习的研究领域” 。通俗地说,机器学习(ML)可以解释为根据计算机的经…

从零开始搭建spring boot多模块项目

一、搭建父级模块 1、打开idea,选择file–new–project 2、选择Spring Initializr,选择相关java版本,点击“Next” 3、填写父级模块信息 选择/填写group、artifact、type、language、packaging(后面需要修改)、java version(后面需要修改成和第2步中版本一致)。点击“…

llamafactory-llama3微调中文数据集

一、定义 https://github.com/SmartFlowAI/Llama3-Tutorial/tree/main 基准模型测试opencompass 离线测评数据准备微调训练合并测试人工审核对比 二、实现 基准模型测试 基准模型 llama3-8b https://zhuanlan.zhihu.com/p/694818596? https://github.com/SmartFlowAI/Llam…

计算机网络知识整理笔记

目录 1.对网络协议的分层? 2.TCP/IP和UDP之间的区别? 3.建立TCP连接的三次握手? 4.断开TCP连接的四次挥手? 5.TCP协议如何保证可靠性传输? 6.什么是TCP的拥塞控制? 7.什么是HTTP协议? 8…

QGroundControl@Jetson Orin Nano - 从代码编译安装

QGroundControlJetson Orin Nano - Build from Source 1. 源由2. 步骤2.1 QT 编译2.1.1 下载2.1.2 版本2.1.3 初始化2.1.4 配置2.1.5 编译2.1.6 安装 2.2 QGC 编译2.2.1 下载2.2.2 版本2.2.3 初始化2.2.4 配置2.2.5 编译2.2.6 安装2.2.7 QT5命令备注 3. 可行方案4. 总结5. 补充…

CICD之Git版本管理及基本应用

CICD:持续集成,持续交付--让对应的资料,对应的项目流程更加规范--提高效率 CICD 有很多的工具 GIT就是其中之一 1.版本控制概念与环境搭建 GIT的概念: Git是一款分布式源代码管理工具(版本控制工具) ,一个协同的工具。 Git得其数据更像是一系列微型文件系统的快照。使用Git&am…

D : 合适的顺序

Description 给定 8 个数,如果将它们排成一列,每个数的权值是它与相邻的数之积,求一个排列方式,所有数的权值之和最大,输出该权值和. 例如 13242315 的权值和为 1∗33∗1∗22∗3∗44∗2∗22∗4∗33∗2∗11∗3∗55∗1…

libctk shared library的设计及编码实践记录

一、引言 1.1 <libctk>的由来 1.2 <libctk>的设计理论依据 1.3 <libctk>的设计理念 二、<libctk>的依赖库 三、<libctk>的目录说明 四、<libctk>的功能模块及使用实例说明 4.1 日志模块 4.2 mysql client模块 4.3 ftp client模块 4…

AVL树模拟

1.概念 虽然二叉搜索树可以缩短查找的效率&#xff0c;但如果数据有序或者接近有序时二叉搜索树树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。AVL 树是具有一下性质的二叉搜索树&#xff1a; 1.它的左右子树都是AVL树 2.左右子…

C++特殊类设计单例模式...

文章目录 请设计一个类&#xff0c;不能被拷贝请设计一个类&#xff0c;只能在堆上创建对象请设计一个类&#xff0c;只能在栈上创建对象请设计一个类&#xff0c;不能被继承请设计一个类&#xff0c;只能创建一个对象(单例模式)单例模式&#xff1a;饿汉模式&#xff1a;懒汉模…

steam社区载入失败、加载不出来、打不开?

随着steam夏季大促的到来&#xff0c;最近steam在线用户越来越多了&#xff0c;很多玩家在自己喜欢的游戏社区里看最新的玩法、攻略和玩家的游戏心得。不过有不少玩家表示有时候会打不开游戏社区或是社区加载失败等问题。根据大家遇到的问题&#xff0c;这里总结了几种解决方法…

Mongodb安装与配置

Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网&#xff1a;https://www.mongodb.com/ 点击完上面两步后&#xff0c;加载来到该页面&#xff0c;选择自己的版本、系统&#xff0c;是压缩包(zip)还是安装包(msi)。 下载好之后能&#xff0c;来到安装包哪里&a…

程序员福利-一种高效的治疗颈椎病的方法

我从18年开始出现颈椎病&#xff0c;只要在电脑前低头工作两个小时&#xff0c;颈部就会不舒服&#xff0c;脖子的肌肉酸痛无力、僵硬麻木&#xff0c;影响血液循环系统&#xff0c;大脑供血不足&#xff0c;导致心烦意乱&#xff0c;注意力无法集中&#xff0c;还会影响消化系…

在HBuilder X中ElementUI框架的搭建

前言 本文将详解基于Vue-cli脚手架搭建的项目如何使用ElementUI &#xff1f;所以在学习本篇文章内容之前建议先学习vue-cli脚手架项目的搭建和学习 使用HbuilderX快速搭建vue-cil项目https://mp.csdn.net/mp_blog/creation/editor/140043776 ElementUI框架: Element&#xff…

【C++】类、静态、枚举、重载、多态、继承、重写、虚函数

五、类 面向对象编程是一个巨大的编程范式。C中的类class就是基于对象的程序设计。 我们可以用类来定义一个新的类型&#xff0c;这些新类型就可以像内置类型一样使用。 内置类型颗粒度太太小&#xff0c;现实需求又非常复杂&#xff0c;这就需要我们把内置类型适度的进行拼搭…

微软推出集成GPT-4o的文本转语音虚拟数字人服务

微软近日宣布&#xff0c;其全新的文本转语音虚拟数字人服务正式上线&#xff0c;并集成了GPT-4o技术。这一服务为用户提供了创建实时互动数字人的可能。通过先进的自然语言处理技术&#xff0c;数字人能够将文本转化为自然流畅的语音&#xff0c;并配以生动的虚拟形象&#xf…