数据库系统基础概述

文章目录

  • 前言
  • 一、数据库基础概念
    • 1.数据库系统的组成
    • 2.数据模型
    • 3.数据库的体系结构
  • 二、MySQL数据库
    • 1.了解MySQL
    • 2.MySQL的特性
    • 3.MySQL的应用场景
  • 总结

前言

        MySQL数据库是一款完全免费的产品,用户可以直接从网上下载使用,不用花费任何费用。这点对于初学者来说十分友好。另外,MySQL的跨平台性可以支持该数据库在多个操作系统上运行(但不支持互通)。该文会对数据库的基础概念和MySQL进行介绍,供初学者了解。


一、数据库基础概念

1.数据库系统的组成

        数据库系统(DataBase System,简称 DBS),是由数据库(数据)、数据库管理系统、数据库管理员、支持数据库系统的软件和硬件(应用、应用开发工具等)以及用户 5 部分组成的运行实体。

        其中,数据库管理员对数据库进行规划、设计、维护和监视,在数据库系统中发挥着重要作用。

2.数据模型

(1)数据模型的概念

        数据模型是数据库系统的核心与基础,是关于描述数据与数据之间的联系,数据的语义、数据一致性约束的概念性工具的集合

        数据模型通常是由数据结构、数据操作和完整性约束 3 部分组成的。解释如下:

        1.数据结构:是对系统静态特征的描述,描述对象包括数据的类型、内容、性质和数据之间的相互关系。

        2.数据操作:是对系统动态特征的描述,是对数据库各种对象实例的操作(包括对数据的操作语法)。

        3.完整性约束:是完整性规则的集合,它定义了给定数据模型中数据及其联系所具有的制约和依存规则。

(2)常见的数据模型

        常用的数据库数据模型主要有层次模型、网状模型和关系模型。其中最常用的是关系模型。

        1.层次模型:用树状结构来表示实体类型及实体间的联系的数据模型称为层次模型。它具有以下特点:

        (1)每棵树有且仅有一个无双亲节点,称为根。

        (2)树中除根外所有节点有且仅有一个父节点。

        如下图所示:

        该图中的 数据模式 就是 根。 每个子节点只有一个父节点。

        2.网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。该模型优缺点特别明显。

优点:

(1)可以用来表示复杂的数据关系:网状模型可以表示多对多的关系,适合复杂的应用场景。

(2)数据访问效率高:网状模型的数据访问效率通常比关系模型高,它可以直接通过连接访问相关数据。

(3)数据完整性好:网状模型可以通过定义约束条件来保证数据的完整性。

缺点:

(1)数据模型复杂:网状模型的数据模型比较复杂,需要更多的设计和管理。

(2)数据冗余度高:网状模型的数据冗余度通常比关系模型高,这可能会导致数据的不一致性和存储空间的浪费。

(3)数据维护困难:网状模型的数据维护比较困难,需要开发人员有更多的技术经验。

        如下图所示:

        3.关系模型:以二维表来描述数据。在关系模型中,每个表有多个字段列和记录行,每个字段列有固定的属性(数字、字符、日期等)。关系模型数据库结构简单、清晰、具有很高的数据独立性。关系模型的基本术语如下:

(1)关系:一个二维表就是一个关系。

(2)元组:二维表中的一行,即表中的记录。

(3)属性:二维表中的一列,用类型和值来表示。

(4)域:每个属性取值的变化范围,如性别的域为{男,女}。

关系中的数据约束如下:

(1)实体完整性约束:约束关系的主键的值不能为空值。

(2)参照完整性约束:关系之间的基本约束。

(3)用户定义的完整性约束:反应了具体应用中数据的语义要求。

        如下图所示:

(3)关系数据库的规范化

        关系数据库的规范化理论为:关系数据库中的每一个关系都要满足一定规范。根据满足规范的条件不同,可以分为 5 个等级:第一范式(1NF)、第二范式(2NF)...... 第五范式(5NF)。一般情况下,在我们开发数据库时,起码要吧数据规范到第三范式(3NF)标准,然后根据项目要求做出调整。

        1.第一范式(1NF)

        在一个关系中,消除重复字段,且各字段都是最小的逻辑存储单位。第一范式是所有范式的基础,是最基础的范式。该范式包括一些数据原则:

        (1)数据组的每个属性只可以包含一个值(即具有原子性,属性的含义不可再拆分)。

        (2)关系中的每个行的数据必须有相同数量的列数。

        (3)关系中不能存在完全相同的两行数据。

        在任何一个关系数据库中,第一范式都是对关系模式的最基础的要求。不满足第一范式的数据库就不是关系型数据库。

        数据表中的每一列都是不可再分割的基本数据项,即同一列中不能有多个值,这是对(1)要求的额外解释。并且每行每列只能方法实体的一个属性。可通过下表对比来看出不同:

不符合第一范式的数据表
学号姓名性别班级
113小浩计算机系3班
113小浩计算机系3班

        该上方数据表与第一范式的(1)和(3)相冲突。

符合第一范式的数据表
学号姓名性别系别班级
113小浩计算机系3班
114小王计算机系3班

        2.第二范式(2NF)

        第二范式(2NF)是以第一范式(1NF)为基础而建立的。即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式要求数据库表中的每个实体(即各个记录行)必须可以被唯一地区分出来,可以理解为给每行数据添加了一列指定 id号,使得每列数据具有唯一性,且可查。

        为了实现区分各行记录,通常需要为表设置一个“区分列”,用于存储各行数据的唯一标识,这个唯一标识也被叫做主键。第二范式要求实体的属性完全依赖于主键,不能存在部分属性依赖主键的情况。可通过下表对比来看出不同:

不符合第二范式的数据表
员工编码岗位姓名年龄学历基本工资绩效工资奖金
101销售胡哥30本科200011000
102短视频运营小浩19本科200000

        上方数据表与第二范式相冲突,该表中的属性,员工编码决定了姓名、年龄、学历,而岗位决定了基本工资,绩效工资,奖金。有两个"区分列"来区分每行数据。第二范式不允许存在两个主键,除非这两个主键是复合主键,并且非主键列完全依赖于整个复合主键。

符合第二范式的数据表
员工编码姓名年龄学历
101胡哥30本科
102小浩19本科
岗位工资表
岗位基本工资绩效工资奖金
销售2000
短视频运营2000

        第一个表由员工编码属性来区分出每行数据;第二个表由岗位来区分每行数据。把多个决定属性的表拆分成多个表就都符合第二范式了。 没有决定属性的表,就添加一列“区分列”。

        3.第三范式(3NF)

        第三范式是在第二范式的基础上建立的,即满足第三范式必先满足第二范式。第三范式要求关系表中不存在非主键列对任意候选关键字列的传递函数依赖。举例来说,主键A属性决定了属性B,而属性B又决定了属性C,则称 属性C 传递函数依赖于主键A。数据表产生这种情况,则不满足第三范式(3NF)。可通过下表对比来看出不同:        

不符合第三范式的数据表
员工编码员工姓名年龄部门编码部门经理
101胡哥30101赵总
102小浩19101赵总

         以上数据表与第三范式相冲突,员工编码作为主键,必须决定了部门编码,而部门编码决定了部门经理。也就使得员工编码决定了部门经理这个属性,但这很明显是错误的,部门经理这个属性本不该被员工编码决定,应该是由部门编码这个属性决定。为了解决这个问题,我们可以把部门编码和部门经理两个属性单独拎出来成立一个表。

部门信息表
部门编码部门经理
101赵总
102胡总

        对于关系型数据库的设计,按照“规范化”原则存储数据,可以消除数据冗杂、更新异常、插入异常和删除异常。

(4)关系数据库的设计原则

        数据库设计原则如下:

        1.数据库内数据文件的数据组织应获得最大限度的分享、最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离。

        2.保证输入、修改数据时数据的一致性和正确性。

        3.保证数据与使用数据的应用程序之间的高度独立性。

(5)实体与关系

        实体是指客观存在并且可以相互区分的事物,可以是实际的事物、抽象的概念或者关系。实体之间的关系有 3 种:

        1.一对一关系:是指表 A 中的一条记录在表 B 中有且仅有一条相匹配的记录。在一对一关系中,大部分相关信息都在一个表中。

        2.一对多关系:是指表 A 中的行可以在表 B 中有许多的匹配行,但是表 B的每个记录行只能匹配表 A 中的一个匹配行。

        3.多对多关系:是指关系中每个表的行在相关表中具有多个匹配行。数据库中,多对多关系的建立是依靠第三个表(称为连接表)实现的,连接表包含相关的两个表的主键列,然后从两个相关表的主键列分别创建与连接表中的匹配列的关系。

3.数据库的体系结构

(1)数据库三级模式结构

        数据库的三级模式结构是指模式、外模式和内模式。

        1.模式

        模式也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式处于三级模式结构的中间层。

        定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。

        2.外模式

        外模式也称用户模式,是数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式是模式的子集,一个数据库可以有多个外模式。

        3.内模式

        内模式也称为储存模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表达方式。一个数据库只有一个内模式。

(2)三级模式之间的映射

        为了能在内部实现数据库的 3 个抽象层次的联系和转换,数据库管理系统在三级模式之间提供了两层映射,分别是外模式/模式映射和模式/内模式映射:

        1.外模式/模式映射

        对于同一个模式可以有任意多个外模式。对于一个外模式,数据库系统都有一个外模式/模式映射。当模式改变时,由数据库管理员对各个外模式/模式映射做出相应的改变,可以使外模式保持不变。这样根据数据外模式编写的应用程序就不用修改了,保证了数据与程序的逻辑独立性

        2.模式/内模式映射

        数据库中只有一个模式和内模式,所以模式/内模式映射是唯一的,它定义了数据库的全局逻辑结构和存储结构之间的对应关系。当数据库的存储结构改变时,由数据库管理员对模式/内模式映射做相应改变,可以使模式保持不变,应用程序相应地不做变动。这样就保证了数据与程序的物理独立性。

二、MySQL数据库

1.了解MySQL

        数据库(Database)就是一个存储数据的仓库。为了方便存储和管理数据,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效地组织和管理存储在数据库中的数据。MySQL 就是这样的一个关系型数据库(RDBMS)。

        MySQL 被广泛地应用于 Internet 上的中小型网站中。由于体积小、速度快、总体拥有成本低,并且是开源数据库,MySQL 成为了多数中小型网站为了降低成本而被选择的重要指标。

2.MySQL的特性

        MySQL 是一个多用户、多线程 SQL 数据库服务器。SQL(结构化查询语言)是世界上最流行和标准化的数据库语言。MySQL具有以下特性:

        (1)MySQL 由 C 和 C++语言编写,并使用了多种编译器测试,保证了源代码的可移植性。

        (2)支持 AIX、FreeBSD、Linux、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

        (3)为多种编程语言提供了 API。包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、Tcl等。

        (4)支持多线程,充分利用 CPU资源,改善性能和可拓展性,全面利用各平台现代多核构架的计算能力。

        (5)优化 SQL 查询算法,有效地提高查询速度,改善检测与诊断性能,提高可用性和效率。

        (6)既可以作为一个单独的应用程序应用在客户端服务器网络环境中,也可以作为一个库而嵌入在其他软件中提供多语言支持,常见的编码如中文的 GB2312、BIG5等都可以作为数据表名和数据列名。

        (7)提供TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。

        (8)提供用于管理、检查、优化数据库操作的管理工具。

        (9)可以处理拥有上千万条记录的大型数据库。

3.MySQL的应用场景

        MySQL常见的网站构架方式有 Linux+Apache+MySQL+PHP ,即 Linux 作为操作系统,Apache 作为 Web服务器,MySQL 作为数据库,PHP作为服务器端脚本解释器。由于这四个都是免费或开源内容,因此使用这种方式可以零成本搭建网站系统。(以往中小型网站的常用建立方式)


总结

        以上就是数据库基础概述,本文简单介绍了创建数据库的基本规范和专业术语的解释,供初学者了解,有补充或指正的内容欢迎在评论区中留言。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

proteus仿真学习(1)

一,创建工程 一般选择默认模式,不配置pcb文件 可以选用芯片型号也可以不选 不选则从零开始布局,没有初始最小系统。选用则有初始最小系统以及基础的main函数 本次学习使用从零开始,不配置固件 二,上手软件 1.在元件…

【AcWing】875. 快速幂

#include<iostream> using namespace std; typedef long long LL;LL qmi(int a,int b,int p){LL res1%p;//%p是为了p1的时候&#xff0c;余数是0while(b){if(b&1) resres*a%p;//位数是1的b>>1;aa*(LL)a%p;//a*a再modp是为了防止溢出}return res; }int main(){i…

【动态规划】(三)动态规划——完全背包

动态规划——完全背包 完全背包理论基础零钱兑换Ⅱ组合总和Ⅳ爬楼梯&#xff08;进阶版&#xff09;零钱兑换完全平方数单词拆分背包问题总结 完全背包理论基础 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品…

零食店小程序发展客户转化运营

零食店、折扣店近些年市场中跑出了不少区域性、多地化的品牌&#xff0c;直营及加盟模式&#xff0c;还有各种超市、商场、街边小店等&#xff0c;零食基本没有年龄群体限制&#xff0c;又属于常消费品&#xff0c;线上线下生意都可以进行发展。 线下客户到店&#xff0c;线上…

链表数据结构

链表可以解决顺序表的缺点 我们今天简单引用下链表 这边是代码讲解 头文件 #pragma once #include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> using namespace std; typedef struct student {union {int data;int len;};s…

【计网】从零开始掌握序列化与反序列化 --- 基础知识储备与程序重构

从零开始掌握序列化与反序列化 1 初识序列化与反序列化2 再谈Tcp协议3 程序重构3.1 Socket类3.2 回调函数设计3.3 最终的Tcp服务器类 1 初识序列化与反序列化 在刚学习计算机网络时&#xff0c;我们谈到过网络协议栈&#xff0c;其中最上层的就是应用层&#xff0c;那么这个应…

Rosetta 一:手把手教你用Linux安装Rosetta(全网最简洁)

文章目录 1. Rosetta 介绍2.下载2. Rosetta 安装3. 验证安装 1. Rosetta 介绍 很久很久之前就对Rosetta有所耳闻&#xff0c;有一篇文章叫做denovo protein design&#xff0c;说的就是用rosetta来设计蛋白质。 rosetta是david baker团队设计的软件&#xff0c;早期只是一个蛋…

【Godot4.3】胶囊形的偏移获取法

概述 之前用半圆弧拼接的方式求过胶囊形&#xff0c;在逐渐熟练使用Geometry2D的过程中&#xff0c;发现通过线段求端点是圆角类型的偏移多边形&#xff0c;获得的就是胶囊形。 所以我们有了第二种胶囊形求法。 测试代码 tool extends Node2D## 横向宽度 export var width:…

【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop

总结 Deskpins 功能单一&#xff0c;拖到窗口上窗口就可以置顶并且标记钉子标签&#xff0c;大小 104 KB&#xff0c;开源位置&#xff1a;https://github.com/thewhitegrizzli/DeskPins/releases WindowTop 功能完善全面强大&#xff0c;包括透明度、置顶、选区置顶等一系列功…

SQL server学习01-SQL server环境配置

目录 一&#xff0c;手动下载及安装 microsoft .net framework 3.5 1&#xff0c;下载 2&#xff0c;安装 二&#xff0c;安装SQL server2014 1&#xff0c;下载 2&#xff0c;安装 3&#xff0c;启动SQL server服务 三&#xff0c;下载及安装Microsoft SQL Server…

C Prime Plus 第6章习题

你该逆袭了 红色标注的是&#xff1a;错误的答案 蓝色标注的是&#xff1a;正确的答案 绿色标注的是&#xff1a;做题时有疑问的地方 橙色标注的是&#xff1a;答案中需要着重注意的地方 练习题 一、复习题1、2、3、4、5、我的答案&#xff1a;错误正确答案&#xff1a; 6、7、…

ubuntu 安装minikube,并拉取k8s镜像

不要使用最新版&#xff0c;重要的事情说三遍&#xff0c;刚开始也是最求新一点的版本&#xff0c;但问题很多&#xff0c;主要是版本之间的依赖问题&#xff0c;不是某个依赖的版本不支持某些功能&#xff0c;就是依赖之间的版本不能对应上&#xff0c;所以就降低几个版本&…

行业人工智能研究-Python自监督方式学习图像表示算法

学术界人工智能研究落后于工业界 摘要 行业或工业界在人工智能研究上超出学术界&#xff0c;并占据着大量的计算力&#xff0c;数据集和人才诱人的薪水和明朗的预期吸引大量人才离开学术界&#xff0c;涌入行业或工业界即使&#xff0c;比如Meta开源其人工智能模型&#xff0…

实验:WLAN无线综合实验

无线综合实验的概述&#xff1a; WLAN无线综合实验是一种针对无线网络技术的综合性实验&#xff0c;旨在通过实践操作加深对无线局域网&#xff08;WLAN&#xff09;技术的理解和应用能力。以下是对该实验的详细概述&#xff1a; 实验目的 掌握认证AP上线的配置方法&#xff…

[SAP ABAP] 创建域

我们可以使用事务码SE11创建域 输入要创建的域的名称&#xff0c;然后点击创建 输入简短描述&#xff0c;选择数据类型和输入字符数 激活并保存域&#xff0c;创建的域才能够生效

pg入门18—如何使用pg gis

1. 下载postgre gis镜像 2. 运行镜像 docker run -p 15432:5432 -d -e POSTGRES_PASSWORDAb123456! postgis/postgis:12-3.4-alpine 3. 使用gis # 进入容器&#xff0c;登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用…

Spring Boot 入门:解锁 Spring 全家桶

前言 Spring 全家桶是现代 Java 开发者不可或缺的工具集&#xff0c;它提供了从轻量级的框架到微服务架构的完整支持。本文将带你快速了解 Spring 框架、核心概念如 IoC&#xff08;控制反转&#xff09;和 AOP&#xff08;面向切面编程&#xff09;&#xff0c;并深入介绍 Sp…

YOLOv10多模态 结合Transformer与NMS-Free 融合可见光+红外光(RGB+IR)双输入【附代码】

文章目录 前言视频效果代码获取文章概述必要环境一、模型训练1、 定义数据1.1、数据集结构1.2、定义data.yaml 2、 运行方法运行效果 二、模型验证运行方法运行效果 三、模型推理3.1. 推理图像1. 参数定义2. 运行方法运行效果 3.2. 推理视频1. 参数定义2. 运行方法运行效果 四、…

构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)

引言 在数字化时代&#xff0c;网络安全已成为全球关注的焦点。随着互联网技术的快速发展和应用的广泛深入&#xff0c;网络安全形势日益严峻。特别是分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;以其破坏性强、难以防范的特点&#xff0c;对个人、企业乃至国…

Go-知识-定时器

Go-知识-定时器 1. 介绍2. Timer使用场景2.1 设定超时时间2.2 延迟执行某个方法 3. Timer 对外接口3.1 创建定时器3.2 停止定时器3.3 重置定时器3.4 After3.5 AfterFunc 4. Timer 的实现原理4.1 Timer数据结构4.1.1 Timer4.1.2 runtimeTimer 4.2 Timer 实现原理4.2.1 创建Timer…