数据库—概念学习

文章目录

  • 总览全局
  • 数据库
  • 数据库管理系统
  • DBA数据库管理员
  • 数据库系统的体系结构
    • 三层模式两级映像
    • 独立性
  • 数据模型
  • 数据库技术的产生与发展
  • 相关定义

总览全局

整个数据库系统所包含为:

  • 数据库(数据的集合叫做一个库)
  • 数据库管理系统
  • 数据库应用系统(经典举例:XX管理系统)
  • DBA管理员等等相关开发人员

数据库

数据库(DataBase)是数据的集合

  • 长期存储的数据
  • 有组织的
    (前辈们已经开发好对应的数据库软件帮我们组织了)
  • 可共享的
    (可以理解为网页访问到的数据全网都可以访问)
    数据库的特征:
    (我觉得不是往DBA方向发展的没必要研究这么深入,比如我)
  • 数据库按一定的数据模型组织进行存储的(表结构,能够描述各种存储关系)
  • 能够为用户共享访问数据
  • 冗余度小(比如:程序员最难以忍受的就是重复的东西,因此在数据库中有时候也可以将一些重复的可以信息单做成一张表)
  • 数据独立性高
  • 具有较高扩展性(数据库扩展我理解有两重意思:一是方面开发数据库管理系统人员的便捷,这是由研究开发人员来完成,二是我这类程序员,用高级语言开发管理员应用)

数据库管理系统

介于用户与操作系统之间的一个数据库软件,比如MySQL和SQLserver…
(!!我不明白为什么其他博文不写这个,搞得我刚学的时候一直不明白这个概念,DBMS不就是SQLserver这类可视化软件吗,能进行增删查改也能转储SQL文件)

DBA数据库管理员

一般来说工资高,技术牛,出手便是一招制敌的水平。这类人就是在每一个项目开发之前要定制一个基本的数据管理结构,然后程序员根据这些数据存储的结构进行开发应用。


了解完数据库整个组成结构后开始了漫长枯燥的理论学习


数据库系统的体系结构

三层模式两级映像

在这里插入图片描述

  • 三层模式

    • 外模式
      我的理解:在DBMS中创建的视图就是外模式,为什么叫外模式,是因为创建的视图是用来保护真实的数据表,安全性更高,用户包括程序都是只能通过视图才能看到数据,这些数据是DBA授权后创建出来给用户和程序看到的。
    • 逻辑模式
      我的理解:一个关系表,Student(id,name,…)这个就是一个逻辑模式,然后假如我有数据 了,然后使用视图来访问这些数据,就是通过视图-模式这个影像映射到真实的数据表中。
    • 内模式
      我的理解:DBMS具体指的是索引与其他数据文件。
  • 二级映像

    • 正如上述所说,就是用一个媒介映射到对方身上。非常抽象的玩意。
      比如:当一个模式发生改变的时候我只需要改变外模式的映射就行,其实这个映射的意思就是改变一下视图的创建即可。

当我理解了上面的大概意思后,也就理解了为什么一个模式对应多个外模式。就好比我开发一个网页,肯定是用的不止一个外模式,比如普通用户用的,管理员用的,但是他们可以使用同一个外模式,只是权限各有不同而已看情况而论,都要分别创建不同的视图提供给他们使用。

独立性

  • 这里讨论三级关系与两级影响之间的独立性。

三级关系都是处于DBMS中,外模式是视图保护数据的,模式就是表结构,内模式就是创建的索引或者数据加密偏底层的,一般DBMS自动完成,不用我们亲自搞(要弄也是直接使用SQL语句),底层其实都是一堆算法。二级映像是通过两个级关系构成的,比如:外模式—模式,模式—内模式,这就是二级映像,非常抽象,这里提这个概念我觉得主要是想要告诉我们当模式改变的时候只需要改变映像就行,不用改变程序是这个意思。
解释:当我的模式发生了改变,就是假如说(一般不会改变)我的表结构发生了改变,这时候我的程序肯定是访问不了数据了的,因为给我的视图已经不适用于现在的表结构了,但是我们并不需要修改程序,只需要在DBMS中将二者的映像修改一下即可,就是将视图修改成能够访问现在的表即可。(这里因情况而定要不要修改视图的属性列,因为程序是操作的视图的属性列,如果改变视图属性列就要改变程序的参数名字),然后如果只是将视图的查询语句改变了一下,视图的其他属性没有改变,这样既完成了映射关系,又不用将发布出去的程序down下来修改程序的参数。

  • 补充:物理独立性就是当我们在DBMS中设置的索引发生改变的时候,我们的应用程序不用变,当然了应用程序离内模式还有很远,即使要改变也轮不到他,也是先把外模式改变,但是很明显索引改变也不影响我们的模式-外模式的映像,因为是DBMS内部自行完成的,所以这里的物理独立性我个人感觉是比逻辑独立性更加的具有独立特性,基本是啥也不用修改。然而逻辑独立性指的是当我们的数据结构发生改变(这里指的是我们设计数据库的关系),当发生变动了,我们的应用程序不用变,只需要在DBMS中修改外模式的视图即可,也就是修改映像即可。
  • 总结
    我认为这个概念确实提不提都无所谓,主要是这个分层做的真是很好,真正的做到独立性了,我对这方面的思考还有待提高,毕竟能够完成每个层次的独立分层且互不干扰这个东西着实也正在困扰着我。

数据模型

模型就是反应现实世界的东西。比如飞机模型,仿的就是真实世界里面的飞机,打造模型的时候总不能随便造的,即使你造出来了也不能叫飞机模型,万一你造出来的是一辆车,然后你管他叫飞机这就不行(当然除非你将全世界洗脑了说这就是飞机)
反观在数据库中也是一样,首先创建的数据库必须是有逻辑的,是反应现实世界的关系的,并且有数据结构(在数据库中使用的是关系模式,也就是用表来描述现实世界的关系)

  • 数据模型的三要素
    • 数据结构
      • 静态特性(一旦定义就不会轻易修改,比如定义一个学生表)
    • 数据操作
      • 动态特性(增删查改,这些是对数据操作,不是对表结构操作)
    • 数据的完整性约束。
      • 实体约束(比如一个表必须要有一个主键或者不能为空这些)
      • 参照完整性(一个表有一个属性是另一个表的主键,不能随便乱取值。)
      • 用户自定义的完整性(用户需求、程序员需求…)

数据库技术的产生与发展

  • 数据库技术的产生动力
    不用多说,就好比刚接触C语言写一个通讯录管理系统的时候我便渴望希望能够将我的数据独立出去而不是我要写一个仅仅能用于我应用程序仅此而已。还是用的是txt文件存的,还要考虑编码格式,头大!?!因此感谢前辈们的努力,能够让我站在巨人的肩膀上。
  • 数据管理技术的发展
    • 人工管理阶段
      没搞懂为啥会出现这个阶段,首先我想到的是用文件存储(也有可能当时还没这么多能存储的文件类型。也有可能内存不够,只能一次性应用程序输出数据然后用笔记下来)
    • 文件管理阶段
      数据存进文件必然是一件明智的选择,好比初学C语言之时就是将数据存进txt文件的,但是很明显只能够用于自己开发的应用程序,到头来还要自己管理这么庞大的文件。
    • 数据库系统阶段
      我认为这个阶段最大的成功不是能够将数据更好的存储,而是能够将数据独立出去,不管是谁都能访问该数据(只要有权限),共享性杠杠的,还有事务处理。

相关定义

  • 不同阶段给出的定义不同
    在这里插入图片描述
  • 我算是整明白了,正是由于这些不同阶段的产物,并且是一样的东西,但是处于不同阶段就不同叫法,前辈们真是谁也不服谁,前期学习这些理论知识真是煎熬,一个记录型就理解了半天都没搞懂,学到这里才整明白,一组数据还能叫记录、实体、元组。(当真是横看成岭侧成峰,远近高低各不同,可奈何只缘身在此山中。)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【azure】office 365邮箱auth2认证之spa的刷新令牌过期后如何处理

参考:https://learn.microsoft.com/zh-cn/azure/active-directory/develop/refresh-tokens 官方对令牌和刷新令牌生命周期的描述 已失效的刷新令牌如何获取新的令牌和刷新令牌 /*** office 365使用失效的刷新令牌和应用程序的相关信息来获取新的访问令牌和刷新令牌…

kafka入门,数据去重(九)

数据传递语义 至少一次:ACK级别设置为-1分区副本大于等于2ISR里应答的最小副本数量大于等于2 最多一次:ACK级别设置为0 总结: At Least Once:可以保证数据不丢失,但是不能保证数据不重复 At Most Once:可以…

软件测试面试-银行篇

今天参加了一场比较正式的面试,汇丰银行的视频面试。在这里把面试的流程记录一下,结果还不确定,但是面试也是自我学习和成长的过程,所以记录下来大家也可以互相探讨一下。 请你做一下自我介绍?(汇丰要求英…

Stable Diffusion 对图像进行风格化

风格化是基于现有图像转换成另一种风格的操作方法,通常应用于img2img中,将文字提示中特定的新风格应用于原图像上进行修改。在这个过程中并非使用随机的潜在状态,而是采用原始图像去编码初始潜在状态。在此基础上通过加入少量的随机性&#x…

自己动手写C语言float浮点数转换字符串的函数

最近在项目中用到了holtek厂商的HT45F24A和BA45F5650两款单片机。 用的开发工具是HT-IDE3000,烧录软件是HOPE3000。 这两款单片机都是8位的单片机,支持寄存器位操作。 HT45F24A单片机不带UART串口,要想实现串口功能,只能自己用定时…

【数据库四】MySQL备份与恢复

MySQL备份与恢复 1.数据库备份的分类1.1 数据备份的重要性1.2 数据库备份的分类1.3 常见的备份方法 2.MySQL完全备份与恢复2.1 MySQL完全备份2.2 数据库完全备份分类2.3 MySQL物理冷备份及恢复2.4 数据迁移DST2.5 mysqldump进行逻辑备份2.5.1 mysqldump备份数据库2.5.2 mysqldu…

leetcode 101. 对称二叉树

2023.7.2 这道题要求我们判断一颗二叉树是否是对称的。我使用的是广度优先搜索的思想&#xff0c;通过队列将需要比较的节点依次入队和出队&#xff0c;进行对称性的判断。下面直接上代码&#xff1a; class Solution { public:bool isSymmetric(TreeNode* root) {queue<Tr…

CRM系统通过哪三步增加销售团队协作?

销售团队的协作是企业成功的重要保障。协调一致的销售团队能够提升销售效率&#xff0c;提高销售转化&#xff0c;获得更多业绩收入。那么企业要如何增加销售团队的协作&#xff1f;可以用CRM销售管理系统。 CRM系统如何增加销售团队协作&#xff1a; 1、建立统一的客户数据库…

2023最新AI创作系统/ChatGPT商业运营版网站程序源码+支持GPT4+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

2023最新AI创作系统/ChatGPT商业运营版网站程序源码支持ai绘画支持GPT4.0实时语音识别输入文章资讯发布功能用户会员套餐免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问&#xff1a;程序已经支持G…

java pdf2html 和html2pdf 两款插件

1 pdf2html docker 启动&#xff0c;java 调用服务即可转化 https://beltxman.com/2567.html docker run -ti --rm -v ~/pdf:/pdf -w /pdf docker.io/pdf2htmlex/pdf2htmlex:0.18.8.rc2-master-20200820-ubuntu-20.04-x86_64 test.pdf 2 html2pdf java .Runtime 类型调用命…

【新星计划·2023】Linux系统的架构和组件讲解

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 前言 本文将讲解Linux系统的架构和组件。 目录 一、Linux系统的架构 1、硬件层 2、内核层 3、进程管理子系统 4、内存管理子系统 5、…

【Neo4j教程之CQL命令基本使用】

&#x1f680; Neo4j &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;C…