数据库基础

三级模式+两级映像

三级模式

分为外模式(视图)+模式(概念模式)+内模式(存储文件.db)
image

两级映像

数据库系统在三级模式之间提供了两级映像:模式/内模式映像外模式/模式映像
(1)外模式/模式映像。这两级映像保证了数据库的逻辑独立性
(2)模式/内模式映像。这两级映像保证了数据库的物理独立性

数据模型

E-R图(待填充)

关系模型

image

关系代数

基本概念(见函数依赖)

  • 候选码
  • 主码
  • 主属性
  • 外码
  • 全码
    image

完整性约束

  • 实体完整性:主码不能为空
  • 参照完整性:
  • 用户定义完整性

关系代数运算(★)

image
image

并∪(union)

R∪S将查询结果中属性名一样的放到同一列

select * from R union select * from S

差-(except)

R-S从查询结果R中去掉和S一样的

笛卡尔积×

R×S即将R的元组与S的每一行相联系
image
积后有n+m列属性n*m行元组
image

投影π(select)

π_A,C(R)对表R投影A,C列

select A,C fronm R

在关系代数运算中,可用数字n代替第n列即π_1,3(R)= π_A,C(R)

image

选择σ(where)

σ_A>B(R)

select * from R where A>B

image

交∩(intersect)

R∩S将查询结果中既属于R又属于S的放一起

连接(笛卡尔积筛选)

  • θ连接
    θ是比较运算符,即条件连接where a θ条件(>=<) b

  • 等值连接
    where a=b

  • 自然连接
    image
    先求R.A=S.A且R.C=S.C从笛卡尔积中去除S表中重复的属性列
    image
    image

除(待填)

外连接

image

  • 左外
    image
    在自然连接的基础上 保留左表的全部数据 右表无法匹配的数据用null代替

  • 右外
    image
    自然连接的基础上 保留右表的全部数据 左表无法匹配的数据用null代替

  • 全外
    image
    左外+右外再去重复

SQL语言

image

创建表

CREATE TABLE <表名> (<列名><数据类型>...<表级完整性约束条件>)

修改和删除表

索引

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>]...)--建立索引

DROP INDEX <索引名>--删除索引
UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录
CLUSTER:表示要建立的索引是聚集索引,意为索引项的顺序与表中记录的物理顺序一致。

视图

视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。视图不是真实存在的基
础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中
CREATE VIEW 视图名 AS SELECT 查询子句 [WITH CHECK OPTION];
子查询可以是任意复杂的 SELECT 语句,但通常不允许含有 ORDER BY 子句和 DISTINCT 短语
WITH CHECK OPTION 表示对 UPDATE、INSERT、DELETE 操作时要保证更新、插入或删除的行满足视图定
义中的谓词条件(即子查询中的条件表达式)

SQL查询

  • 简单查询
  • 连接查询
  • 子查询
  • 聚集函数
  • 分组查询
  • 更名as
  • 视图

SQL数据更新

  • 插入
  • 删除
  • 修改

SQL访问控制

  • 授权
  • 回收

关系数据库的规范化(★)

函数依赖

有R<U,F>

学号 姓名 课程号 课程名 成绩

U为属性集合(学号,姓名,课程号,课程名,成绩)
F为依赖关系(学号→姓名,课程号→课程名,学号+课程号→成绩)

  • 非平凡的函数依赖:A决定B但B不属于A 如学号→姓名

  • 平凡的函数依赖:A决定B且B属于A 如学号→学号

  • 完全函数依赖:学号+课程号→成绩,其中单独的学号或课程号都无法决定成绩

  • 码:码是属性的一部分K∈U

  • 候选码(题目最常考):K→U,对K求闭包=U,K的任一个真子集K'都不能决定U,候选码可以有多个。如(学号+课程号)→U,则(学号+课程号)为1个候选码

  • 全码:K=U,即整个属性U为候选码

  • 主属性:候选码的每个真子集都是主属性
    如U有2个的主属性为学号、课程号

  • 主码:可以确定唯一一条元组,主码∈候选码,候选码可以有多个,主码只能有一个
    U的主码学号∈(学号,课程号)

  • 超码:可以唯一标识一行的属性的集合(从超码里面选一个当主码

    学号 姓名 身份证号

    超码=(学号,身份证号)都可以确定一行元组都可以当主码,从中确定学号或身份证号为主码

规范化

1NF

若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第1范式(1NF)

2NF

若关系模式R∈1NF,且每一个非主属性完全依赖于候选码,则关系模式R∈2NF
(即对1NF消除了非主属性对候选码的部分函数依赖)

学号 课程号 成绩 姓名

F=[(学号,课程号)→成绩,学号→姓名]
该关系中学号部分依赖于候选码,所以不能成立2NF
将关系R分解为R1[学号,课程号→成绩]、R2[学号→姓名],此时成立2NF

3NF

对2NF消除了传递依赖(包含伪传递率)
X→Y,Y→Z则存在传递依赖,不成立3NF,许分解为R1(X→Y)、R2(X→Z)

伪传递率
X→Y;W+Y→Z则W+X→Z此时构成传递依赖
如X1+X2→Y,X1+Y→Z,

BCNF

posted @ 2025-04-09 21:58  浦西和迪克的爱情故事  阅读(86)  评论(0)    收藏  举报