SQL Server数据库理论篇(进行时......)

news2024/11/18 15:34:50

SQL Server数据库理论篇

一. 数据库的关系分类

1.1.0 关系型数据库和非关系数据库区别?

结论:两种数据库的本质在于存储数据的形式不同

1.关系型数据库概念

关系型数据库最大的特征就是,我们将对象的属性映射为表的一个个列名,将数据按照对应关系逐行填充。(如下图)我们对数据进行CRUD的时候,都是基于表中的一行行数据进行操作的。

在这里插入图片描述

假设,我们想要插入一条用户信息的数据(结合上图)的时候,除了添加用户名之外,还得补充上用户性别、出生日期等其他数据才行,除非是表设计的时候对于某些字段做了允许为空的设置,否则我们必须保证表中存储数据的完整性。我们持久化数据的时候就需要保证数据的完整性。好处:数据的完整性,才能·保证了数据的安全性和稳定性

2.非关系型数据库概念

非关系数据库的存储方式则是更为熟悉和常见的结构:键值对,我们通过key : value的形式来保存对应的数据;就拿上图的的用户表作为例子,我们可以用 PeopleId : 202226 ,PeopleName:刘德华, PeopleGendeer:男 …来表示一条数据,这里面并没有用到表结构,但是二者实际的存储数据并没有任何变化。这样的话,就带来一种好处,我可以根据业务需要很方便地修改存储的键,比如要新增多一个用户银行卡字段,只需要多加一个key值即可。不再需要像传统的关系型数据库一样,调整表结构了。非关系型数据库的好处显而易见,拓展性高,约束性小,操作速度快;但同时,劣势也在此。对于需要高度安全的数据,非关系型数据库就无法保证了

1.1.1 常见数据库的分类?

1.关系型数据库

MySQL:免费、开源、适用中小型和个人使用;后面MySQL被sun公司收购,sun公司又被Oracle收购,最新的版本应该不是免费的了。

Oracle:大多数大型商业公司的选择,Oracle支持高并发,大访问量,支持事务,数据库性能好,稳定性高,但是收费.

2.非关系型数据库

MongoDB:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案.

Redis:比较典型的Nosql数据库,其优秀的缓存机制更是开发人员常常使用到的功能之一.

1.1.2 总结

对于业务变动较大和频繁,经常需要修改字段,对安全性要求不高的数据而言,使用非关系型数据库是一个很好的选择。反之,如果业务对于数据有着比较高的安全性要求,那么现阶段使用关系型数据库会是更好的选择

二.数据库管理系统

2.1.1 DBMS的主要功能

  1. 数据定义语言(data definition language,DDL):定义数据库的结构、包括外模式、内模式及相互之间的映像,定义数据的完整性约束、保密限制等。
  2. 数据操纵语言(data manipulation language,DML):实现对数据库的操作,增、删、查、改
  3. 数据库运行控制能力(四方面):数据安全性控制、数据完整性控制、多用户下的高并发控制以及数据库的恢复
  4. 数据库的维护功能:包括数据初始数据的载入、转换、存储等
  5. 数据字典(data dictionary,DD)

2.2.1 DBMS的组成

  1. 数据描述语言(DDL)
  2. 数据操纵语言(DML)
  3. 数据库管理的例行程序

三.数据模型的三个层次

数据模型是对客观事物及其联系的数据的描述。从事物的特征到计算机中的数据表示,对现实世界问题的抽象经历了三个不同层次。即:概念数据模型逻辑数据模型物理数据模型

3.1.0 概念数据模型

又称概念模型,是现实世界到概念世界的抽象。概念模型是整个数据模型的基础。著名的模型是实体—联系模型(简称:E-R图)

3.1.1 逻辑数据模型

又称数据模型,是概念世界的抽象描述到信息世界的转换。概念模型只有在转换成数据模型后才能在数据库中得以表示;常用数据模型有层次模型、网状模型、关系模型。这类模型具有严格的定义(数据结构、数据操作、数据完整性约束)

数据结构:是指实体类型和实体间联系的表达和实现

数据操作:是对数据库的检索和更新(包含插入、删除和修改)两类操作

数据完整性约束:给出数据及其联系应具有的制约和依赖规则

3.1.2 物理数据模型

又称物理模型,是信息世界在机器世界的实现。

在这里插入图片描述

四.信息世界的基本概念和E-R图

4.1.0 数据库常用术语

术语说明
实体(entity)客观存在并可相互区别的事物(一个学生、一个部门、一门课)
属性(attribute)实体具有的某一特征(学生的学号、姓名、性别…)
码(key)唯一标识实体的属性或属性集称为码,且不应有冗余属性(学号是学生实体的码
域(domain)属性的取值范围(例如学号长度为8位)
实体集(entity set)同型实体的集合(全体学生就是一个实体集)
实体型(entity type)具有相同属性的实体必然具有共同的特征和性质,用实体名和属性名集合表示同类实体()
联系具体看下文

4.1.1实体联系的定义和辨别方法

相信很多向我一样刚入门数据库的小伙伴,在这个地方肯定一开始是搞得稀里糊涂的,那么今天就让小编来彻底给你梳理下下。

一对一联系(1:1)

专业表述:如果对于实体集A中的每一个实体,在实体集B中最多只有一个实体与之联系,反之亦然;则称实体集A和实体集B具有一对一联系。

例如:①一所大学只有一个书记,而一个书记只能在一所学校任职。学校和书记就是一对一的关系。

    ②一个人只有一个身份证号,一个身份证号只对应一个人。身份证号和这个人就是一对一关系。

一对多联系(1:n)

专业表述:如果实体集A中的每一个实体,在实体集B中有N个实体(N>=0)与之联系,反之,实体集B中的每一个实体,在实体集A中最多只有一个实体与之联系。则称A-B他们之间存在一对多的联系。

例如:①一个企业聘用多名工人,而一个工人只能在一个企业中工作。则企业和工人之间存在一对多关系

    ②一间教室可以给多个正在上英语课学生使用,而一个正在上英语课的学生只能在一间教室上课。

多对多联系(n:m)

专业表述:如果实体集A中的每一个实体,在实体集B中有N个实体(N>=0)与之联系,反之,实体集B中的每一个实体,在实体集A中有M个实体(M>=0)与之联系。则称A-B他们之间存在多对多的联系。

例如:①一个企业聘用多名工程师,而一个工程师可以在多个企业中兼职。则企业和工程师之间存在多对多关系

    ②一本书可以被多个学生借阅,而一个学生可以借阅多本书。书和学生存在多对多的关系

4.1.2 概念模型的E-R模型表示方法

实体型(集):用矩形表示,矩形框内写明实体集名。

属性:用椭圆表示,并且用无向边将其与相应的实体集体连接起来。

联系:用菱形表示,菱形内写明联系名,并且用无向边将其与相应的实体集体连接起来,并且在无向边旁边标上联系的类型(1:1、1:n、n:m)

题1:

假设每个学生选修若干门课程,且每个学生每选一门课只有一个成绩,每个教师只担任一门课的教学,一门课由若干教师任教。“学生”有属性:学号、姓名、地址、年龄、性别。“教师”有属性:职工号、教师姓名、职称,“课程”有属性:课程号、课程名。

①试画出E-R图,并注明属性和联系类型。(5分)

②将E-R图转换成关系模型 ,并注明主码和外码 (5分)

(1)

在这里插入图片描述

(2)

学生(学号,姓名,地址,年龄,性别)

课程(课程号,课程名)

教师(职工号,教师姓名,职称,课程)

选课(学号,课程号,成绩)

题2

设有商店和顾客两个实体,“商店”有属性:商店编号、商店名、地址、电话,“顾客”有属性:顾客编号、姓名、地址、年龄、性别。假设一个商店有多个顾客购物,一个顾客可以到多个商店购物,顾客每次去商店购物有一个消费金额和日期,而且规定每个顾客在每个商店里每天最多消费一次。

①试画出ER图,并注明属性和联系类型。

(1)
在这里插入图片描述

题3:

某研究所有多名科研人员,每一个科研人员只属于一个研究所,研究所有多个科研项目,每个科研项目有多名科研人员参加,每个科研人员可以参加多个科研项目。科研人员参加项目要统计工作量。“研究所”有属性:编号,名称、地址,“科研人员”有属性:职工号、姓名、性别、年龄,职称。“科研项目”有属性:项目号、项目名、经费。

①试画出ER图,并注明属性和联系类型.

(1)

在这里插入图片描述

4.1.3 数据库的三个模式

外模式、模式、内模式、

五.关系数据概述

5.1.0 关系模型的三部分

数据结构:关系模型的数据结构非常单一,只有关系、实体及实体之间的联系都用关系表示。即关系模型中数据的逻辑结构是一张二维表。

关系操作集合:关系操作是高度非过程化的、用户不必指出存取路径。

关系的完整性约束条件集合(实体完整性、参照完整性、用户定义的完整性)

  1. 实体完整性:若属性A是基本关系R的主属性,则属性A不能取空值,即关系中的主码不允许为空值。
  2. 参照完整性:通俗地说就是外键约束

5.1.1 码、主码、外部码、主属性

  1. :码是关系中的属性或属性组(有的码是由几个属性共同决定的),若它的值唯一地标识了一个元组,则称该属性或属性组为候选码(candidate key)
  2. 主码:若一个关系有多个候选码,则选定其中一个为主码(primary key)
  3. 包含在任意一个候选码中的属性都称为主属性
  4. 某个关系中的一个属性(可以是一个普通的属性,也可以是主码),这个属性在另一个关系中是主码。则称为外部码(foreign key)

关系的性质

  1. 列是同质的,即每一列中的分量是同类型的数据,来自同一个域。
  2. 不同的列可以出自同一个域,每一列称为属性,需要给予不同的名称。
  3. 列的次序无所谓,即列的次序可以任意交换。
  4. 关系中的各个元组是不同的,即不允许有重复的元组。
    主属性*
  5. 某个关系中的一个属性(可以是一个普通的属性,也可以是主码),这个属性在另一个关系中是主码。则称为外部码(foreign key)

关系的性质

  1. 列是同质的,即每一列中的分量是同类型的数据,来自同一个域。
  2. 不同的列可以出自同一个域,每一列称为属性,需要给予不同的名称。
  3. 列的次序无所谓,即列的次序可以任意交换。
  4. 关系中的各个元组是不同的,即不允许有重复的元组。

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

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

相关文章

(九)centos7案例实战——redis一主二从三哨兵高可用服务搭建

前言 本节内容是使用centos服务器搭建一套高可用的redis服务,采用的是一主二从三哨兵的模式。 需要注意的是搭建集群的过程中,我们要保证集群服务器之间可以相互访问,并且redis所需要访问的端口是开放的。我们从redis的下载,源码…

ffmpeg 安装教程

官网:Download FFmpeg window 转:ffmpeg安装教程_moon son的博客-CSDN博客_ffmpeg安装 然后解压,配置全局变量环境。点击“系统属性->高级系统设置->环境变量->系统变量”,选择“Path”条目,点击“编辑->…

将项目部署到Linux系统上

目的是让我们的项目在linux上也能运行起来 有两种部署方式,手工部署或者是通过shell脚本自动部署 手工部署 准备工作:使用ifconfig指令查出服务器的ip地址:192.168.58.130 1.在本地Idea中开发一个springboot项目,并且打包成ja…

以太网模块的传输距离怎么看

光模块的关键标准组织主要有两个:IEEE和MSA。其中GBASE开头的标准主要是IEEE802.3提出与定义的。要弄清光模块的传输距离,首先让我们要弄清楚它的命名是怎样的。 100G光模块的命名规则: 400G光模块的命名规则: 其中100G和400G光模…

SpringBoot整合Mybatis方式1:使用XML方式整合Mybatis

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式1:使用XML方式整合Mybatis1.用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper文件4.1 创建UsersMapper.xml文件,并添加sql语句4.2 创建mapper对应的代理…

Docker的Cgroup资源限制

Docker通过Cgroup来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配颡和使用量控制。 Cgoup 是CotrolGroups 的缩写,是Linux 内核提供的一种可以限制、记录、隔高进程组所使用的物理资源(如CPU、内存…

基于jsp的学生培训管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

【教学类-18-01】20221123《蒙德里安红黄蓝格子画》(大班)

效果展示: 单页效果 多页效果 预设效果 背景需求: 2022年11月23日,作为艺术特色幼儿园,蒙德里安风格装饰在我们幼儿园的环境中。 蒙德里安是几何抽象画派的先驱,以几何图形为绘画的基本元素,与德士堡等创…

MyBatis-Plus 和swagger

MyBatis-Plus 1.1MyBatis Plus 简介 mybatisplus 官网: https://baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变, 为简化开发、提高效率而生。 1.2主要特性&a…

【项目管理】Java使用pdfbox调用打印机打印PDF文件

【项目管理】Java使用pdfbox调用打印机打印PDF文件1.项目前言2.项目实现3.关键代码4.效果演示5.问题处理5.1 安装对应字体5.2 修改对应代码系统:Win10 Java:1.8.0_333 IDEA:2020.3.4 Gitee:https://gitee.com/lijinjiang01/Printe…

如何使用轮播图实现水平内容自动切换

通过轮播图实现一个水平内容自动切换 效果展示 前置准备 三张背景图片 具体步骤 添加一个轮播图组件 添加一个图片 添加一个标题 添加数据表 添加事件 添加触发器 绑定数据 步骤拆解 添加一个轮播图组件 1.1 拖拽 轮播图 到 编辑区 1.2 调整 轮播图 样式 添加一个图片 …

有关QT的问题大全

文章目录现在2022年,Qt发展如何?是就业的好选择吗?如何学习Qt,c到什么程度可以去学qt?现在 Qt 好找工作吗?为什么工业软件开发一般用的都是QT?初学QT怎么学?请问目前做windows桌面应用程序,MFC…

工作中Java Stream的简单应用

标题开发使用filter() and map()max()根据集合对象中的某个属性取最大值先解释一下各变量含义: temps集合是userids的子集(大前提) cache是temps集合在userids集合中的补集 简单来说就是,userids集合-temps集合cache补集,如下图所示目标:此次为工作中实际遇到的问题,需要得到c…

C++编译链接

文章目录C编译链接C编译模式分离式编译是个啥?怎么实现上述过程?定义与声明引出新的问题头文件有关头文件用来干啥?include头文件中应该写什么?#ifndef通过gcc/g命令来看完整的编译链接过程预处理(Preprocessing)编译(Compilation…

院内导航系统哪家口碑好?医疗院内导航地图公司排名

“医生,请问验血怎么走?”   “护士,请问药房在哪儿?”   “您好,做CT在什么地方?”   这些问题是医生和护士经常遇到的问题。的确,患者就诊时,由于对医院环境不熟悉&#xff…

云计算(虚拟化)面试宝典

一:服务器虚拟化 1.名词解释 (1)资源动态调整(对象是虚拟机) 管理员操作,对CPU、内存、网卡、硬盘、GPU进行调整。 FusionCompute支持虚拟机资源动态调整,用户可以根据业务负载动态调整资源的使用情况。 虚拟机资源调整包括: 离线/在线调整vCPU数目 无论虚拟机处于离线…

如何使用C++图形界面开发框架Qt创建一个应用程序?(Part 3)

Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 点击获取Qt组件下载 …

Flink的状态编程

Flink 处理机制的核心,就是“有状态的流式计算”。在流处理中,数据是连续不断到来和处理的。每个任务进行计算处理时,可以基于当前数据直接转换得到输出结果;也可以依赖一些其他数据。这些由一个任务维护,并且用来计算…

【HAL库】STM32CubeMX开发----STM32F407----CAN通信实验

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 CAN通信波特率为 500K bps。 CAN通信引脚 与 MCU引脚 对应关系如下: CAN通信引脚MCU引脚TXPB9RXP…

虹科教您 | 虹科Automation softPLC入门操作指南(2)——子程序和用户自定义功能块 UDFB

虹科KPA Automation softPLC是为Linux、Xenomai、INtime、Windows等实时操作系统开发PLC的编程环境,适合需要使用IEC61131-3和PLCopen标准的控制技术和进行PLC编程的用户。本篇文章将帮助您创建和使用IEC语言开发的函数和功能块。 Automation softPLC Studio 命名规…