首页 > 数据库 >MySQL数据库1——数据库概论

MySQL数据库1——数据库概论

时间:2024-11-16 17:46:56浏览次数:3  
标签:关系 SQL 数据库 实体 模式 MySQL 概论 属性

一.数据库概论

1.数据库

数据库(DataBase,DB):是长期存储在计算机内、有组织的、统一管理的相关数据的集合。简单来说,它就是一个存储各种数据的仓库,且存储过程不是随便而是有组织的。

数据库管理系统(DBMS):位于用户与操作系统制键的一层数据管理软件,为用户提供访问DB的方法。我的理解是把它认为是帮助我们操纵和管理数据库的大型软件。

SQL:我们可以通过DBMS来操作数据库,那我们使用什么来操作DBMS呢?所谓的SQL就是当我们操作关系型数据库时使用的编程语言,它定义了一套操作关系型数据库的统一标准。

2.主流数据库管理系统

主流的关系型数据库管理系统

  • Oracle:收费,且昂贵。
  • MySQL:原来免费,是一个中小型数据库,后来被Oracle公司收购,进行加强,提供免费基础版和收费加强版。
  • SQL Server:微软公司研发的一个中型数据库,收费。
  • SQLite:嵌入式开发用的微型数据库。

即使后来实际开发过程,我们使用的不是MySQL,但他们都是使用SQL语言控制的。

MySQL保姆级安装教程:点击这里

二.MySQL数据库

1.数据模型

MySQL数据库模型:

在这里插入图片描述

2.数据描述

概念设计中的数据描述:

  • 实体:客观存在、可以相互区别的事物。可以是具体对象,比如一名学生;也可以是抽象对象,比如一次学习。
  • 实体集:性质相同的同类实体的集合。比如所有的学生。
  • 属性:实体有很多特性,一个特性就是其一种属性。比如学生有学号、年龄、姓名的属性。
  • 实体标识符:能唯一标识实体的属性或属性集。也称关键码、键

逻辑设计中的数据描述:

  • 字段:标识实体属性的命名单位称为字段或数据项。比如学生有学号、姓名、年龄等字段。
  • 记录:字段的有序集合。一般用一条记录描述一个实体,比如一个学生记录的组成:(学号、姓名、年龄)。
  • 文件:同一类记录的集合。文件往往用来描述实体集,例如所有的学生记录构成了一个文件。
  • 关键码:能唯一标识文件中每条记录的字段或字段集,也叫键。

对应关系:

概念设计逻辑设计
实体记录
属性字段(或数据项)
实体集文件
实体标识符关键码

3.ER图

ER图也叫实体联系图,用来描述实体类型和实体间的关系。

ER图的基本成分:

  • 1.矩形框:用于表示实体。
  • 2.菱形框:用于表示实体间的联系。
  • 3.椭圆形框:用于表示实体的属性。

在某属性下画一条横线,表示该属性是关键码或实体标识符。

比如,现在有一ER图:

在这里插入图片描述

4.关系型数据库

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
特点:

  • 1.使用表存储数据,格式统一,便于维护
  • 2.使用SQL语言操作,标准统一,使用方便

关系模型补充:

  • 实体:客观存在、可以相互区别的事物。可以是具体对象,比如一名学生;也可以是抽象对象,比如一次学习。
  • 实体集:性质相同的同类实体的集合。比如所有的学生。
  • 属性:实体有很多特性,一个特性就是其一种属性。比如学生有学号、年龄、姓名的属性。
  • 实体标识符:能唯一标识实体的属性或属性集。也称关键码、键
  • 关系模型:用二维表格表示实体集,用关键码表示实体之间联系的数据模型叫关系模型。

上面ER图例子的关系模型:
在这里插入图片描述

三.数据库体系结构

1.三层模式和两级映像

我们知道用户是不可能直接操纵数据的,它是通过应用软件来管理底层的数据库,那么应用软件到数据库中间过程是怎么样的呢?

在这里插入图片描述

主要看上面这张图,右半边就是从应用软件到数据库的过程,可以看见有三种模型,依次是外部模型、逻辑模型、内部模型,这三层模型用数据库的语言来说,就是外模式(用户模式)、逻辑模式和内模式(物理模式)。这就是所谓的三层模式。

而三层模式的数据不可能是一样的,那怎么理解不同的数据?我们可以看到上面右半图在三层之间画了两条虚线,即映像,用来说明各层数据的对应性。两级映像分别叫“外模式/逻辑模式映像”和“逻辑模式/内模式”映像。

可以看到左半边主要是对用户需求进行分析总结得出的模型叫概念模型,我们ER图画的就是概念模型。而我们实际开发,比如写一个学生管理系统管理学生数据,我们只开发右边的逻辑模型,所以才要有概念模型到逻辑模型的转换。

2.逻辑模式

  • 数据库中全体数据的逻辑结构和特征的描述
  • 是综合了所有用户的需求的公共数据视图
  • 一个数据库只有一个逻辑模式

逻辑模式的地位:

  • 是数据库系统模式结构的中间层
  • 与数据的物理存储细节和硬件环境无关
  • 与具体的应用程序、开发工具及高级程序设计语言无关

逻辑模式定义的内容:

  • 数据的逻辑结构
  • 数据之间的关系
  • 数据有关的安全性、完整性要求

前面的关系模型就是逻辑模式常见的一种表达方式。

3.外模式

  • 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
  • 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

比如教务处的成绩管理系统,学生可以查成绩有一个外模式,教师可以录入成绩也有一个外模式,教务处管理人员管理系统也有一个外模式,不一定一类用户只对应一种外模式,但一般一个数据库其外模式是一对多的关系。

  • 保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据
  • 保证数据独立性的一个有力措施

4.内模式

  • 是数据物理结构和存储方式的描述
  • 是数据在数据库内部的表示方式

关系:一对一。

面试问题:什么保证了数据库的数据独立性?

答:三层模式两级映像的数据结构。

四.关系数据模型

1.数据模型

在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息

数据模型就是用抽象对现实世界的模拟

数据模型应满足三方面要求:能比较真实地模拟现实世界、容易为人所理解、便于在计算机上实现。

2.关系的表示

一个二维表对应的就是一个关系

表的每行对应一个元组,表的每列对应一个

  • 一个元组其实对应一条记录或一个实体,表中列数也就是属性个数叫元数,含一个属性的元组叫一元组,依次类推。

  • 域其实就是二维表中同一列所有数据的集合,它在定义上是同一数据类型的集合。

3.完整性约束

完整性约束:关系型数据库维护与更新必须遵循的3类完整性规则。

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

其中,实体完整性参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

实体完整性==》1.主键不能为空;2.主属性不能取空值

参照完整性==》外键必须是另一个关系模式的主键或者取空值

五.关系代数

1.关系代数

  • 是一种抽象的数据查询语言
  • 用对关系的运算来表达查询

关系代数通过关系运算符进行查询操作,关系运算符的分类:

  • 传统的集合运算符
  • 专门的关系运算符
  • 比较运算符
  • 逻辑运算符

2.基本操作

前提:R和S是两个关系,具有相同的关系模式==》两个二维表具有相同的属性

并:

  • 符号:R∪S
  • 解释:由属于R或属于S的元组构成的集合

差:

  • 符号:R—S
  • 解释:由属于R但不属于S的元组构成的集合

笛卡尔积:

  • 符号:R × S
  • 解释:新集合每个元组前r个分量来自R,后s个分量来自S

投影:

  • 符号:Π i 1 , … … , i m i_1,……,i_m i1​,……,im​(R)
  • 解释:消除某些列,并重新排序
  • 补充:对一个关系进行垂直切割

选择:

  • 符号:σF®
  • 解释:从R中挑选满足公式F为真的元组构成新的关系

例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.组合操作

交:

  • 符号:R∩S
  • 解释:既属于R又属于S构成的新关系

连接:

  • 符号:R ∞ i θ j ∞_{i{\theta}j} ∞iθj​S
  • 解释:从R中挑选第i个分量,从S中挑选第j个分量,其满足{\theta}$操作的元组进行连接

例如:

image-20240205221017332

自然连接:

  • 符号:R∞S
  • 解释:1.计算R×S;2.RS的公共属性是Ai……Ak,挑选R.Ai=S.Ai的元组进行组合

例如:

image-20240205221646699

除法:

  • 符号:R ÷ \div ÷S
  • 解释:具体计算太复杂,其实就是找满足S的元组去除对应列后的新关系

例如:

image-20240205222157851

看图还不懂?这是一个学生和课程的关系,R ÷ \div ÷COURSE1、R ÷ \div ÷COURSE2、R ÷ \div ÷COURSE3分别表示至少选修COURSE1COURSE2COURSE3的学生名单。

把由5个基本操作经过有限次复合的式子称为关系代数表达式。可以利用关系代数表达式对数据库进行各种数据查询操作,而我们后面的SQL语言其底层原理还是关系代数来操作数据,只是把关系代数封装在了底部,而使用简单的SQL语句来操作。

4.补充操作

改名:

  • 符号: ρ S ( A 1 , … , A n ) R ρ_{S (A_1,…,A_n)}R ρS(A1​,…,An​)​R
  • 解释:把原来的关系R改名为S,把原来的属性依次改名为 A 1 , … , A n A_1,…,A_n A1​,…,An​

除了改名,还有广义投影、赋值、外连接、外部并、半连接、聚集操作共7个扩充操作,关系代数和关系演算是早期的关系型数据库操作方式,现在更多的是使用SQL语言来操作(虽然底层原理还是它),但现在编程人员更多的还是掌握SQL语言即可。

除了改名,还有广义投影、赋值、外连接、外部并、半连接、聚集操作共7个扩充操作,关系代数和关系演算是早期的关系型数据库操作方式,现在更多的是使用SQL语言来操作(虽然底层原理还是它),但现在编程人员更多的还是掌握SQL语言即可。

标签:关系,SQL,数据库,实体,模式,MySQL,概论,属性
From: https://blog.csdn.net/weixin_51496226/article/details/143820652

相关文章

  • SpringBoot云南省大学生支教平台017q3程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景云南省部分偏远地区教育资源匮乏,师资力量薄弱,制约了当地教育事业的发展。随着大学生社会责任感的增强,越来越多的青年选择投身支教事业......
  • SpringBoot游泳馆会员管理系统q26c5(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着健康意识的提升,游泳馆作为重要的健身场所,其会员管理效率直接影响到顾客体验和经营效益。传统的会员管理方式存在信息记录不......
  • JPQL与数据库函数的完美结合实例
    在Java持久化操作中,JPQL(JavaPersistenceQueryLanguage)是一种强大的查询语言,它允许开发者以面向对象的方式执行数据库查询。JPQL不仅支持对实体属性的查询,还支持调用内置和用户自定义的数据库函数。本文将通过一个具体实例,展示如何在JPQL中调用H2数据库的内置函数,以实现更......
  • MySQL简单索引
    前言索引的核心作用是加速数据查询。它通过减少查询所需扫描的数据量、支持快速定位数据、优化排序和分组操作,以及加速复杂的连接查询,显著提升数据库的性能。1.普通索引createindex语法  table_name要加速的表明(column_name表的列表)     这是最基础的索引类......
  • 本地oracle数据库实例启动报错 TNS-12545 TNS-12560 TNS-00515
    oracle实例启动报错TNS-12545TNS-12560TNS-00515具体提示如下:监听该对象时出错:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.docker.internal)(PORT=1521)))TNS-12545:因目标主机或对象不存在,连接失败TNS-12560:TNS:协议适配器错误TNS-00515:因目标主机或对......
  • thinkphp6 使用自定义命令,生成数据库视图
    在ThinkPHP命令行工具中,你可以为选项设置别名,通过为选项指定一个简短的别名来简化命令输入。例如,如果你希望--force-recreate选项有一个简短的别名-f,你可以通过在addOption方法中设置第二个参数来实现这一点。示例:为选项设置别名在addOption方法的第二个参数中设置别......
  • 缓存与数据库不一致的解决方案:深入理解与实践
    目录前言缓存与数据库不一致的原因缓存与数据库交互的基本策略常见的缓存与数据库不一致解决方案方案一:读写穿透模式方案二:Cache-Aside模式方案三:先删除缓存,再更新数据库方案四:先更新数据库,再删除缓存方案五:异步更新缓存数据不一致的经典场景与应对策略总结前言在分......
  • Ubuntu20.04安装Mysql
    Ubuntu20.04安装Mysql 1、方法一:下载安装MySQL(安装其他版本) 1.1在官网下载mysql安装包 1.2解压文件 1.3安装 2、方法二:通过apt安装MySQL服务(推荐,会安装最新版) 2.1初始化配置 2.2检查mysql服务状态 3.1配置远程访问 3.2新建数据库和用户 3.3mysql服务命令......
  • Ubuntu Server 20.04 安装MySQL
    1.通过apt安装MySQL1#命令12sudoapt-getupdate3#命令24sudoapt-getinstallmysql-server2.配置mysql初始化信息1sudomysql_secure_installation配置说明:ubuntu@VM-0-10-ubuntu:~$sudomysql_secure_installationSecuringtheMySQLserverdeployme......
  • 创建一个文章收藏表的mysql
    下面是一个设计合理的文章收藏表(article_favorites)的MySQL表结构,可以用于存储用户收藏文章的记录。表结构设计表名:article_favoritesCREATETABLE`article_favorites`(`id`INTAUTO_INCREMENTPRIMARYKEYCOMMENT'自增ID',`user_id`INTNOTNULL......