数据库概论

目录

  • 什么是数据库
  • 数据库的概念模型
    • 层次模型
    • 网状模型
    • 关系模型
  • 为什么要使用关系型数据库
  • 完整性约束
  • 结构化查询语言SQL
    • 基本语句

什么是数据库

考虑这些问题:当用户使用软件计算时,如果想要保存计算结果或者想选择不同的题目,是否要保存、读取多个不同的文件呢?这样的效率高吗?这种数据管理策略合适吗?假设有上万套练习题时,是否需要保存上万个文件呢?
很明显,我们需要数据库的帮助。在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。
数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。
数据库时长期存储在计算机内、有组织、可共享的大量数据的集合。它的目的是提供一种可以方便、高效管理数据库信息的途径。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样“仓库”,并根据管理的需要进行相应的处理。

例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。

有了这个"数据仓库"就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那的人事管理就可以达到极高的水平。

此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种“数据库”,使其可以利用计算机实现财务、仓库、生产的自动化管理。

J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。

当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。

数据库的概念模型

aws数据库服务一览图

层次模型

优点:

数据结构简单清晰。
因为记录之间的联系用有向边表示,这种联系在DBMS中通常使用指针实现,查询效率高。层次模型数据库性能优于关系数据库,不低于网状数据库。
提供了良好的完整性支持。进行插入操作时,如果没有对应的双亲结点就不能插入它的子女结点值。进行删除操作时,如果删除双亲结点,则相应的子女结点值也将被同时删除。
缺点:

现实世界中的很多联系是非层次性的。如果结点之间具有多对多联系,不再适合使用层次模型表示。如果一个子女结点确实具有多个双亲结点,使用层次结构模型表示的时候就会出现大量的冗余,且操作复杂。
查询子女结点必须通过双亲结点。
由于结构严密,层次命令趋于程序化。

网状模型

优点:

能够更为直接地表示现实世界。
具有良好的性能,存取效率高。
缺点:

结构复杂,伴随应用环境的扩大,数据结构变得越来越复杂,不利于最终用户掌握。
网状模型的数据定义语言和数据管理语言复杂。
由于记录之间的联系通过存取路径实现,应用程序在访问数据的时候必须选择恰当的存取路径,因此用户必须了解系统结构的细节,导致加重了编写应用程序的负担。

关系模型

优点:

关系模型建立在严格的数学概念的基础之上。
关系模型概念单一。无论是实体还是实体之间的联系都用关系来表示。对数据的检索和更新结果也是基于关系(表)的。所以,数据结构简单清晰,用户易懂易用。
关系模型的存取路径对用户透明,从而具有较高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
缺点:

由于存取路径对用户是透明的,查询效率往往不如格式化数据模型。
为了提高系统性能,数据库管理系统必须对用户的查询请求进行优化。

为什么要使用关系型数据库

关系型数据库的优势:

便于理解:二维表构造非常贴近逻辑;
应用方便:支持通用的SQL(结构化查询语言)语句;
易于维护:全部由表结构组成,文件格式一致;
复杂操作:可以用SQL句子多个表之间做非常繁杂的查询;
事务管理:促使针对安全性性能很高的数据信息浏览规定得到完成。
关系型数据库存在的不足

读写性能差,尤其是海量信息的效率高读写能力;
固定不动的表构造,灵便度稍欠;
高并发读写时,硬盘I/O存在瓶颈;
可扩展性不足,不像web server和app server那样简单的添加硬件和服务节点来拓展性能和负荷工作能力。
非关系型数据库概念介绍
非关系型数据库:指非关系型的,分布式系统的,且一般不确保遵照ACID标准的数据储存系统。

非关系型数据库算是一种数据结构化储存的集合,可以是文档或键值对等。

非关系型数据库的本质是传统关系型数据库的功能阉割版本,通过去掉不需要的功能来提高性能。

非关系型数据库的类型:

键值储存数据库
列储存数据库
文档型数据库
图数据库
非关系型数据库的优点

格式灵活:数据存储格式非常多样,应用领域广泛,而关系型数据库则只适用基础的关系模型。
性能优越:NOSQL是根据键值对的,不用历经SQL层的分析,因此 性能非常高。
可扩展性:基于键值对,数据之间耦合度极低,因此容易水平扩展。
低成本:非关系型数据库部署简易,且大部分可以开源使用。
非关系型数据库的不足:

不支持sql,学习和运用成本比较高;
无事务处理机制;
数据结构导致复杂查询不容易实现。
关系型与非关系型数据库的区别:
成本:Nosql数据库易部署,不用像Oracle那般花费较高成本选购。
查询速率:Nosql数据库将数据储存于缓存当中,不用历经SQL层的分析;关系型数据库将数据储存在电脑硬盘中,查询速率远不如Nosql数据库。
储存格式:Nosql的储存文件格式是key,value方式、文本文档方式、照片方式这些,能储存的对象种类灵活;关系数据库则只适用基础类型。
可扩展性:关系型数据库有join那样的多表查询机制限定造成拓展性较差。Nosql依据键值对,数据中间沒有耦合度,因此容易水平拓展。
数据一致性:非关系型数据库注重最终一致性;关系型数据库注重数据整个生命周期的强一致性。
事务处理:SQL数据库支持事务原子性粒度控制,且方便进行事务回滚;NoSQL也支持事务处理,但可靠性不足,其价值在于可扩展性和大数据量处理。

其实说白了,人总是在为了方便自己而做一些事情的,在大多数使用场景中,关系型数据库更方便更好理解

完整性约束

数据完整性
要想了解这三类完整性约束首先要了解什么是数据完整性。
数据完整性是指数据库中存储的数据是有意义的或正确的,和现实世界相符。关系模型中三类完整性约束:
– 实体完整性(Entity Integrity)
– 参照完整性(Referential Integrity)
– 用户定义的完整性(User-defined Integrity) •
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持

实体完整性
• 保证关系中的每个元组都是可识别的和惟一的 • 指关系数据库中所有的表都必须有主键,而且表中不允
许存在如下记录:
– 无主键值的记录
– 主键值相同的记录
• 原因:实体必须可区分
例如:
在这里插入图片描述

上图就出现了主键值(学号是主键)重复的情况。当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。

参照完整性
也称为引用完整性
• 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用
• 参照完整性就是描述实体之间的联系的
• 参照完整性一般是指多个实体或关系之间的关联关系
在这里插入图片描述

此完整性涉及到了外键:
• 参照完整性规则就是定义外键与被参照的主键之间的引用规则
• 外键一般应符合如下要求:
– 或者值为空
– 或者等于其所参照的关系中的某个元组的主键值

用户定义完整性
• 也称为域完整性或语义完整性
• 是针对某一具体应用领域定义的数据约束条件
• 反映某一具体应用所涉及的数据必须满足应用语义的要求
• 实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾
• 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能

结构化查询语言SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

基本语句

结构化查询语言包含6个部分:
1、数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
2、数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。
6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

大概就是以上内容,简单阐述了一下关于关系型数据库的内容,如果想了解更多可以阅读这篇文章
tink

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

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

相关文章

利用云计算和微服务架构开发可扩展的同城外卖APP

如今,同城外卖APP已经成为了人们点餐的主要方式之一。然而,要构建一款成功的同城外卖APP,不仅需要满足用户的需求,还需要具备可扩展性,以适应快速增长的用户和订单量。 一、了解同城外卖APP的需求 在着手开发同城外卖…

设计模式(23)解释器模式

一、介绍: 1、定义:解释器(Interpreter)模式是一种对象的行为模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 2、组成结构: (1&…

vue项目打包时按一定的名称规范生成对应的压缩包

在项目部署中经常需要将打包的dist按一定的名称压缩成压缩包,今天记录一下打包时生成压缩包的过程。其中有用到的npm包需要自己安装一下。 js文件放置的目录如下 compress.js内容如下: // compress.jsimport fs from "fs"; import shell fro…

外网远程登录之 NAT server

案例: 外网远程登录内网SW: 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1, 用户名和密码是:HCIE/hehe 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1, 用户名和密码是:HCI…

OpenCV 笔记(4):图像的算术运算、逻辑运算

Part11. 图像的算术运算 图像的本质是一个矩阵,所以可以对它进行一些常见的算术运算,例如加、减、乘、除、平方根、对数、绝对值等等。除此之外,还可以对图像进行逻辑运算和几何变换。 我们先从简单的图像加、减、逻辑运算开始介绍。后续会有…

文件fd.

共识原理: 1.文件 内容 属性 2.文件分为打开的文件 和 没打开的文件 3.打开的文件: 谁打开? 进程! ----本质是研究进程和文件的关系! 根据冯诺依曼原理,文件被打开,必须先被加载到内存!不然CPU怎么访问它 那么是文件内容被加载&#xff…

系列七、Mybatis的二级缓存

一、概述 Mybatis的二级缓存是多个sqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession执行两次相同的查询,mybatis会将第一次执行完的数据放到二级缓存中(坑:需要执行close操作,要不然不…

通过Python脚本支持OC代码重构实践(二):数据项提供模块接入数据通路的代码生成

作者 | 刘俊启 导读 在软件开发中,经常会遇到一些代码问题,例如逻辑结构复杂、依赖关系混乱、代码冗余、不易读懂的命名等。这些问题可能导致代码的可维护性下降,增加维护成本,同时也会影响到开发效率。这时通常通过重构的方式对已…

创建ABAP数据库表和ABAP字典对象-使用基本类型增加账号字段03

新增字段 现在你将增加字段:account_number,基于基本类型 1.输入以下内容(包括句点),然后选择“代码补全”(Ctrl空格): key account_number : abap.2.从下拉列表中选择numc(len)并指定len为8。另外,指定这个关键字段为not null: key accoun…

频频让“智造大佬”们追加投资,长沙凭啥?

文 | 智能相对论 作者 | 范柔丝 自2021年长沙将每年11月1日确定为长沙“企业家日”后,今年已到了第三个长沙“企业家日”。 在完美闭幕的2023年第三届长沙“企业家日”活动中,长沙发布了民企研发投入增量10强、湘商回归标志性项目10强、湘商回归突出贡…

sql server数据库跟踪——SQL Server Profiler解析

工具: SQL Server Profiler这个工具是SQL Server数据库自带的语句执行跟踪工具,常使用于分析软件修改数据库时所执行的语句,适合用来研究软件运行数据库的原理。 打开方式: 本机安装了SQL server的话,都是自带的。直接…

c++设计模式二:原型模式

使用场景:当需要构建多个相同的类对象时,而且该类对象结构较为复杂,如果每个都重新组织构建会很麻烦。 其实,就是写一个拷贝构造函数,或者写一个拷贝每个成员变量的clone()方法。 举例说明:比如一个相亲网站…

R语言如何写一个爬虫代码模版

R语言爬虫是利用R语言中的网络爬虫包,如XML、RCurl、rvest等,批量自动将网页的内容抓取下来。在进行R语言爬虫之前,需要了解HTML、XML、JSON等网页语言,因为正是通过这些语言我们才能在网页中提取数据。 在爬虫过程中,…

阿里云无影升级2.0 云电脑解决方案时代到来

10月31日,杭州云栖大会上,阿里云宣布无影全新升级2.0:从云电脑到云上解决方案,帮助中小企业更便捷地构建云上办公,并开放无影产品及解决方案能力,为生态合作伙伴提供企业云平台,帮助其打造定制化…

无需服务器内网穿透Windows下快速搭建个人WEB项目

📑前言 本文主要是windows下内网穿透文章,如果有什么需要改进的地方还请大佬指出⛺️ 参考自:Windows搭建web站点:免费内网穿透发布至公网 🎬作者简介:大家好,我是青衿🥇 ☁️博客首…

[C++ ]:5.类和对象中(运算符重载补充)+ 类和对象下(初始化列表)

类和对象中(运算符重载补充) 类和对象下(初始化列表) 一.运算符重载补充:1.流插入运算符:1.考虑到隐含的参数指针:2.进行优化!2-1:解决办法:友元2-2&#xff…

Websocket传递JWT令牌

在访问带有[Authorize]的方法的时候,需要前端通过自定义报文头的形式将JWT令牌传递给后端进行验证,否则是不能访问带有[Authorize]的方法。 [Authorize]是用于限制对web应用程序中某些操作或控制器的访问。当[授权]属性应用于操作或控制器时,…

妙手ERP本期功能更新:TikTok支持自定义SKU规格、Temu支持创建尺码表、仓库库存可同步至Shopee全球产品 ......

为了给卖家朋友带来更好的使用体验,更高效地运营跨境店铺,妙手ERP在上周优化了以下多项功能。 01、产品模块优化 全平台 - 插件采集支持批量采集速卖通产品 - 店铺互踩、店铺产品增加销量筛选项 - 公用采集箱支持编辑产品父SKU、AI生成、SKU规格、尺码…

批量压缩图片大小的绝妙技巧,让你的图片更轻盈

在制作幻灯片演示时,经常需要插入图片作为视觉辅助,通过批量缩小图片大小,可以减小演示文件的大小,方便共享和传输。 那么怎么将图片缩小成了问题的关键,市面上不少方法都是需要通过下载软件来处理图片的,…

Chatgpt网页版根据关键词自动批量写原创文章软件【可多开自动登录切换gpt账号】

Chatgpt网页版根据关键词自动批量写原创文章软件介绍: 1、需要放入GPT账号和密码放入在账号库.txt里,可以放入多组账号密码,账号切换轮流使用。 2、可以自定义回答指令,也可多个回答指令随机切换。 3、可以给关键词加双标题&…