数据库

定义

长期存放在外存上的有组织,可共享的相关数据集合

数据库是很大的,因此不可能存放在内存中,而且,如果存放在内存中,那么断电就丢失了,会有用户找你麻烦的。
同时,数据库也是可以共享的,因为管理者也能看到其他数据库里的数据

数据库基础

特点

  1. 数据结构化
  2. 数据共享性高
  3. 冗余度低(零冗余做不到)
  4. 数据独立性强
  5. 数据统一管理和控制
  • 数据的结构化,就是让数据彼此之间产生联系,发生关系。例如,我想让我同学知道谁才是他爹,这就是让彼此间产生联系
  • 数据共享已经讲过
  • 冗余度,写过代码的话,其实就是重复的代码不断在一个程序中出现,我们可以做到减少冗余,但是数据库零冗余是做不到的.就好比一点错误都不犯,人无完人,这是不可能的.
  • 数据独立性可分为物理独立性和数据的逻辑独立性。物理独立性就是数据与外存不依赖。就是儿子不依赖爹。逻辑独立性就是逻辑上也不相同,就是我叫我同学儿子,实际上并不是。
  • 数据统一通过DBMS管理,由它进行统一管理和控制

数据库系统四大组成

  • DBS
  • DB
  • DBA
  • DBMS

DBS就是数据库系统,DB是数据库,DBA是数据库管理员,而DBMS为数据库管理系统,也是数据库中的核心。这里也可以再解释下上面说的独立性和管理控制问题,物理独立性就是因为有DBMS来管理你该存在硬盘上哪个位置的,使得用户与数据库相对独立。而管理控制也自然是通过数据库管理系统来控制的了,常见的DBMS有SQL Server,Mysql等

数据库系统体系

  • 集中式数据库系统
  • 分布式数据库
  • 浏览器/服务器结构B/S
  • 客户/服务器结构C/S

集中式数据库系统实际上就相当于是一个大爹四个辅助,大爹一死全都要G,分布式就是反之.也可以理解为网络拓扑结构中的星形型拓扑。
B/S模式和C/S还是有差别的,它的客户端使用浏览器,并在其中加入了一个web服务器,同服务器通信。而这两个当中的S指的就是web服务器和数据库服务器

关系模型数据库

数据模型三大类——层次模型,网状模型,关系数据模型

其中,我们现在最常用的也就属关系数据模型了。它其实就是一种二维表

数据库没有SQL Server 数据库没有数据冗余_sqlserver

关键术语

  1. 属性
  2. 元组
  3. 主键
  4. 关系模型
  5. 关系模式
  6. 关系
  • 其中属性就是我们看到的列,而元组就是其中的行。 而主键是一种属性,也就是列,是能够唯一表示二维表且最常用的属性或属性组.就是像一把LOL里的英雄,你唯一与别人与众不同的地方,就是你的ID了,在这里,你的ID就是主键,它能唯一区别你和别人.
  • 而关系模型就是定义你是二维表的结构,而不是别的
    关系模式就是定义了二维表的表头,因为是表头,所以是不太会变的,因此反映了二维表的静态结构
    关系就是定义二维表的内容,因为是内容,所以是经常变的,反映了二维表的动态内容,有内容就是一张二维表,所以一个关系就是一张二维表

关系模型三要素

  • 结构
  • 完整性
  • 实体完整性
  • 参照(引用)完整性
  • 用户定义完整性
  • 运算
  • 关系模型中结构只有一种,就是关系,也就是二维表
  • 完整性是由三大约束控制的。其中实体完整性也就是主键不能为空,参照完整性就是你取得数据不能为空,不能找不到。而用户定义完整性就是设定一个数据的范围,比如你玩蛮子的暴击几率,它总得有个范围吧。不然刀刀暴击谁顶的住呢

关系模型限制

  • 每一个属性都是不可再分的原子数据
  • 不允许相同属性名或是元组名
  • 元组个数可以为0
  • 对二维表的操作结果也是二维表
  • 属性不可再分就是说你的学号不可再分,不像英雄可以分为上路中路下路打野辅助,还能根据别的再做区分等。
  • 属性名或元组名不能重复,就是你的名字不能和别人重复,你打排位也不能和别人选一个英雄一样。
  • 元组的个数可以为0,就是你可以选择不打LOL,但这个游戏依旧存在。二维表也依旧存在。
  • 你对LOL不管怎么玩,你玩的都是LOL,你不管怎么操作二维表,那出来的也一定是二维表

实体集联系分类

  • 1对1
  • 1对多
  • 多对多
  1. 1对1-身份证对应人
  2. 1对多-班级和学生
  3. 多对多-学生对应课程

关系数据库语言-SQL
非过程结构查询语言——用户只需指明做什么,无需指明如何做
分类

  • DML-数据控制
  • grant
  • deny
  • DDL-数据定义
  • create
  • alter
  • drop
  • DCL-数据操作
  • select
  • insert
  • update
  • delete

SQL是常用的数据库查询语言,我们在DBMS中使用SQL语句就可以对数据库进行操作了。而它分为三大类,数据定义和数据操作是我们用的最多的。
DML面向权限和用户身份——知道你是哪位召唤师,ID是什么
DDL面向表的操作——知道你要玩哪一个模式
DCL面向表中数据的操作——知道你要玩哪个英雄

数据库基本操作-关系操作
集合操作

  • 并∪,A∪B,新元组由A和B的元组共同组成
  • 交∩,A∩B,新元组由既属于A又属于B的元组组成
  • 差,A×B,新元组为属于A但不属于B的元组组成
  • 广义笛卡尔积-行相乘,列相加

这些集合操作都要求两个关系是相同模式

关系专用操作

  • 选择-where
  • 投影-select
  • 连接-from

关系操作就是DCL中的,选择选的是行,而投影选的是列

数据库的三级体系结构

  • 用户模式(外模式,子模式)
  • 逻辑模式(概念模式,模式)
  • 存储模式(内模式)

全局关系模式对应着基本表
面向用户的局部关系模式对应于视图或部分基本表

数据库没有SQL Server 数据库没有数据冗余_二维_02

  • 存储模式也就是内模式,在内部,存储的方式,用户是看不到的。就像打职业比赛的讨论的战术,这就是内模式。
    概念模式仅仅只是有一个概念,比如是我们要玩哪几个英雄,但却没说是谁去玩,去哪一路。这仅仅就是一个模式,只是规定我们要玩哪几个英雄。
    外模式就是真正给用户看到的模式,所以也叫用户模式。这对应到比赛就是知道谁玩哪个英雄,哪个英雄又走哪一路等。它又叫子模式,是因为我们谁去玩,去哪一路都是在要玩哪几个英雄,也就是概念模式的基础上的,也可以说是它的子类。
  • 全局关系模式自然是主力全部上场,这就对应了一个战队,也就是一个基本表
  • 局部关系模式就是主力替补都有参与,只能说不是完全状态下的一个战队,也就只能是部分表了。

数据库系统设计
任务

  • 根据一个单位或部门的需求,处理需求和数据库的支持环境,设计出相应的数据模式以及相应的应用程序

步骤

  • 系统规划
  • 系统分析
  • 系统设计
  • 分类
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 系统规划是最重要,最基础的部分,因为如果你打LOL职业比赛一开始不分路,比如三个人打中单,两个人打上单等,这你就更别提下面的步骤了,根本不可能。
  • 系统分析就是做什么,就是教练会或者队长会告诉你你要做什么,每一路的定位都不同,所以要做的也不同。
  • 而系统设计就是怎么做,这就是要看你个人的操作了,比如theshy能一个打五个,而某上单闪现清兵。概念逻辑结果都是虚的东西,只有物理才是实在的,比如你想着怎么操作,和你实际打出来是两码事

基本术语对照

关系模型

程序员(文件系统)

用户

关系模式

文件结构

二维表

关系

文件


元组

记录


属性

数据项(字段)


这就是关系模式在用户看来,在这里其实就是二维表,关系也就是我们看到的表,元组就是行,而属性就是列。在计算机,文件系统看来,关系模式就是一种结构,关系就是文件,文件中又包含了元组,也就是记录,也包含了属性,也就是数据项