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

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. 关系中的各个元组是不同的,即不允许有重复的元组。

猜你喜欢

转载自blog.csdn.net/qq_45835014/article/details/127996727