数据库 - 基础1

部分内容思路来源
https://www.cnblogs.com/x739400043/p/5815099.html

下一节链接:https://blog.csdn.net/qq_40893824/article/details/106441068

0 联系

数据库就是 结构体可视化

数据库 3 种数据模型

分类解释
物理模型数据在系统内部的表示、存取,实现数据的物理存储

包括 数据的存储位置、索引存放位置、存储文件位置、存储策略
概念模型
(E-R模型)
实现用户的需求
定义的模型,初步表达用户需求
逻辑模型按用户观点 对数据建模,用于数据库设计

包括:层次模型、网状模型、关系模型、
面向对象数据模型、对象关系数据模型、
半结构化数据模型、非结构化数据模型

1 基本概念

概念 1解释
数据
Data
数据库中存储的基本对象 可以是数值,也可以是非数值
数据库
DB
长期存在计算机中,大量数据的集合
数据库管理系统
DBMS
获取、维护数据的 软件
数据库系统
DBS
包括DB、DBMS、DBA(数据库管理员)

1.1 DBMS

功能

数据定义、操作、管理、维护

  1. 数据定义
    创建、删除、修改数据
    DDL(Create, Drop, Alter, truncate)
  2. 数据操纵
    数据库查询、更新
    DML(Delete, Insert, Update)
  3. 数据库事务管理、运行管理
    并发控制、系统恢复、安全性、完整性检查等
  4. 数据库的建立和维护、组织和存储
    初始数据 输入、存储、管理(数据字典、用户数据)、转换、性能监视

ddl、dml、dql、tcl
https://www.techtarget.com/whatis/definition/Data-Definition-Language-DDL
https://blog.csdn.net/weixin_44169484/article/details/119255935
DDL(Create, Drop, Alter),
DDL 语句执行时,它会立即在数据库中生效
定义和管理数据库中的所有对象的语言,对数据库中的某些对象(例如database,table)进行管理

DML(Delete, Insert, Update) 增删改
DQL(Select) 查询

TCL(Transaction Control Language)事务控制
commit、rollback、savepoint、set transaction

分类

中小型:mysql
大型:SQL Server ( 外国 )、达梦(国产数据库 = 高仿Oracle

2 概念模型 ( 信息模型 = 数据库设计)

2.1 术语

名词解释
实体
Entity
客观存在、并 可互相区别
属性
Attribute
实体 可以有 多个属性
学生实体由 学号、姓名、性别、出生日期、系别 属性组成

Domain
属性的取值范围

key
唯一标识实体
实体型
Entity Type
有同属性的实体 所具有共同的特性和性质
如:学生(学号,性别,出生年月)
实体集
Entity Set
同属性实体的集合
联系不同实体集 的联系

2.2 表示方法

概念模型的表示方法:E-R图,也称 E-R模型

形状
实体矩形
属性椭圆
联系菱形

2.3 联系

多实体型单实体型
两类:多实体型联系、单实体型联系,均符合下面的关系
3类例子
:–:–
1对1
1:1
班级 与 班长
1对多
1:n
班级 与 学生
多对多
m:n
课程 与 学生

2.4 设计原则

真实、不冗余、简单

2.5 例子 - 工厂

实体:

  • 仓库
    (仓库号,面积,电话号码)
  • 零件
    (零件号,名称,规格,单价,描述)
  • 供应商
    (编号,姓名,地址,电话号码,账号)
  • 项目
    (项目号,预算,开工日期)
  • 职工
    (工号,姓名,生日,职称)

3 逻辑模型

格式化模型层次模型
网状模型
主流关系模型
新型模型面向对象数据模型
关系对象数据模型
半结构化数据模型
非结构化关系模型

关系模式:
关系名(属性1, 属性2,…,属性n)

来源
https://www.cnblogs.com/x739400043/p/5815099.html

模型逻辑结构优点缺点
层次模型有序树1 结构加简单
2 指针记录边向联系,查询效率高
3 完整性好
1 只能表示1:n的联系,可以表示m:n,但很复杂
2 树的结构 限制了数据库访问路径
3 访问路径唯一
网状模型图、网1 表达清晰
2 可快速存取
1 结构复杂
2 不易掌握,需要配合另一种高级语言(如C语言)
3 程序复杂
关系模型二维表1 数据结构单一、简单
2 关系规范化
3 操作方便
1 查询效率不如格式化模型
2 为提高性能,可以优化用户查询,增加数据库管理系统的负担

3.1 关系模型 二维表

逻辑结构:二维表

  1. 列 - 属性
    表格 - 实体集
  2. 行、列无序
  3. 无重复行
  4. 列不可再分

例子

正误图表
正确
错误
不符合“列不可再分”

3.1.1 术语

术语解释
关系
Relation
二维表
元组
Tuple
表的 1 行
属性
Attribute
表的 1 列

Key
表中某属性组,可确定唯一元组

Domain
属性的取值范围
分量元组中 1 个属性值

关系模式:
关系名 ( 属性1, 属性2,…,属性n )

3.1.2 操作

增、删、查、改

数据操作是集合操作
操作对象、操作结果 都是关系(即 若干元组的集合

3.1.3 关系模型的完整性约束

实体 完整性
参照 完整性
用户定义 完整性
具体见: 本节 3.3.3

3.2 三级模式 与 二级映象

三级模式

3个模式解释特征
外模式(Subschema)
也称 子模式 或 用户模式
局部(用户)数据的逻辑结构、特征的描述1 常是模式子集
2 一个数据库 可有多个外模式
3 一个应用程序 能用 1 个外模式
4 多个应用程序 可共用 1 个外模式
模式
也称 逻辑模式
数据 逻辑结构、特征的描述1 全体性:1 个数据库仅 1 个模式
2 逻辑性:student(sno,sname,ssex,sage,sdept)
3 特征性:数据类型、长度、约束
内模式(Storage Schema)
也称 存储模式
数据 物理结构、存储方式的描述1 一个数据库仅 1 个内模式

1 个数据库系统中:模式、内模式 均 仅 1 个,外模式 能有多个
外模式:不同用户可以看到不同视图,可设置不同的权限


二级映象 与 数据独立性

独立性解释
逻辑独立性数据 逻辑结构修改时,应用程序不改变
物理独立性数据 存储结构修改时,应用程序不改变

外模式/模式映像
模式/内模式映像


3.3 关系数据库

3.3.0 关系的 类型、模式、数据库

关系解释
关系类型1 基本关系 ( 基本表 )
2 查询表(查询结果呈现出的表)
3 视图(由基本表 或 其他视图导出的虚表)
关系模式就是 D1×D2×…×Dn的子集
记为:R(D1,D2,…,Dn)

是二维表
行是元组,列是域,列起个名,该名字是 属性
关系数据库关系模式的集合

3.3.1 术语

术语解释

Domain
同数据类型的值的集合

整数,实数,长度小于25字节的字符串集合
{0,1},大于0且小于100的正整数 都可以是域
笛卡尔集
Cartesian Product
域 D1,D2,…,Dn
其笛卡尔积为 D1×D2×…×Dn = {(d1,d2…,dn`) l di∈Di,i=1,2,…,n}
每个元素(d1,d2,…,dn)叫 1 个 n 元组(n-tuple),简称 元组(Tuple)
di 称为分量(Component)
元组个数 = 各属性值个数 的乘积

例子
关系
relation
就是 D1×D2×…×Dn的子集
记为:R(D1,D2,…,Dn)

是二维表
行是元组,列是域,列起个名,该名字是 属性
---------------------------
候选码
Candidate key
能唯一标识 某一元组的 极小属性组
主码 / 主键
Primary key
若有多个候选码,选一个 为主码
外码 / 外键
Foreign key
关系R中,某属性组不是R的候选码
但它是另一关系S的候选码,则它是R的外码
全码
All key
关系的所有属性 组成的码,必是候选码 = 全码
-----------------------
主属性
Prime attribute
含在任何候选码中的属性
非主属性
Non-key attribute
不包含在任何候选码中的属性

3.3.2 操作

增删查改

3.3.3 关系模型的完整性约束

完整性解释
实体完整性主属性不能为空(主键)
参照完整性属性 F 是关系 R 的外键,是关系 S 的主键,F 在 R 中:或是空,或是 S 的主键值(R 和 S 可以是同一关系)

什么时候是空呢?
例子:
1 同关系
学生(学号,姓名,性别,年龄,专业号,班长)
班长 是外键,班长没选出,此时就是空
2 不同关系
R 学生(学号,姓名,性别,专业号,年龄)
S 专业(专业号,专业名)
专业号是 R 的外键、S 的主键,未分配专业,此时就是空
用户定义完整性用户自定义


某非主属性不能取空
工龄<年龄
成绩的取值范围:0到100之间
升级:
https://blog.csdn.net/qq_40893824/article/details/106441068 2.1.2 小节

3.4 关系代数

3.4.1 运算符

关系运算符σ选择
π投影
连接
÷
集合运算符
-
×广义笛卡尔积
逻辑运算符
比较运算符>、>=
<、<=
=
大于、大于等于
小于、小于等于
等于
<>不等号

3.4.2 记号

记号解释
R关系模式 R(D1,D2,…,Dn)
关系关系是 R
t ∈ R表示 t 是 R 的 1 个元组
t[Ai]表示元组 t 对应属性 Ai 的 1 个分量,Ai = Sname
----------------------------------------------------------------------------
A={Ai1, Ai2 … }Ain 是 Ai 的一部分
A 是属性列 或 属性组 ( 一列 )
t[A] = (t[Ai1], t[Ai2], … )表示元组 t 在 A 上各分量集合
A ‾ \overline{\text{A}} A表示 {A1, A2 … } 去掉 {Ai1, Ai2 … }后所剩
------------------------------------
t r t s ⌢ \mathop{t_r t_s}\limits^{\frown} trts两元组连接
R 是 n 目关系(n 列),S 是 m 目关系(m 列)
tr ∈ R,ts ∈ S
t r t s ⌢ \mathop{t_r t_s}\limits^{\frown} trts是 (n+m) 列,先 R 后 S
Zx象集
关系 R(属性 X, 属性 Z)
Zx 是 属性 X 是值 x 时 对应属性 Z 的集合
Zx1={Z1, Z2, Z3}

Zx2={Z2, Z3}

Zx3={Z1, Z3}
------------------------------------------------------------------------------
R ∩ S 交R、S 属性要相同,都是 n 列
交后还是 n 列
找出 R 中与 S 相同的部分
R∪S 并R、S 属性要相同,都是 n 列
合并后还是 n 列
合并,自动去重
R - S 差R、S 属性要相同,都是 n 列
差后还是 n 列
找出 R 中与 S 不同的部分
R × S 笛卡尔积
就是两元组连接 t r t s ⌢ \mathop{t_r t_s}\limits^{\frown} trts
R - n 列、k1行,S - m 列、k2
之后是 n + m 列、k1 乘以 k2

3.4.3 查询

3.4.3.1 选择 σ - 选行
  • 查 信息系全体学生
    σSdept=‘is’(Student)

  • 查 年龄小于 20 的学生
    σSaget<20(Student)

3.4.3.2 投影 π - 选列、自动去重
  • 查 学生姓名、所在系
    πSname,Sdept(Student)

  • 查 有哪些系
    πSdept(Student)

3.4.3.3 连接 ( 也叫内连接 ) ⋈ - 先列后行

等值连接(属性值相同 的元组,先列后行)
自然连接(自身连接,同属性列,先列后行)

悬浮元组

连接时,一表对应值存在,另一表对应值不存在,这元组会被丢弃,这个被丢弃的元组叫 悬浮元组
若不想丢弃,就使用外连接!

3.4.3.4 外连接
3个外连接解释
左外连接
left join=left outer join
以左表为参考,把左表复合条件的全选出来
不用考虑右表对应是值是否存在
右外连接
right join=right outer join
以右表为参考,把右表复合条件的全选出来
不用考虑左表对应是值是否存在
全外连接
mysql 暂不支持

union 可实现全外连接
以两表为参考,把两表复合条件的全选出来
不用考虑对方表对应是值是否存在

全外连接 = 左外连接 + 右外连接 + 去重

全外连接:

3.4.3.5 除运算 ÷

R(X, Y)、S(Y, Z)
R ÷ S 是 R 和 S 中 Y 相同的 R部分的集合

3.4.4 综合

上图 2 行对应 2 种方法,第 2 行方法是优化的,效率更高
代码
法1

select Sname from Student,SC,Course 
	where Course.Cpno='5' and 
    Course.Cno=SC.Cno and 
    SC.Sno=Student.Sno;

法2 - 更高效

select Sname from Student where Sno in(
	select Sno from SC where  Cno in(
		select Cno from Course where Cpno='5'));

查 至少选修了2门课的学生学号、姓名

select Sno,Sname from Student where Sno in(
	select Sno from SC group by Sno having count(Cno)>2);

解析
重点是 全部课程,用除法运算
除以 πCno(Course) 即可

3.4.5 缺点

存在无法表达的查询!
如 最值 max、min

下一节链接:https://blog.csdn.net/qq_40893824/article/details/106441068

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1403034144

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值