返回介绍

2.1 关系理论

发布于 2024-09-26 01:06:17 字数 3074 浏览 0 评论 0 收藏 0

关系模型 中, 关系 是描述现实世界的 实体 及 其之间各种联系的单一的 数据结构 。由关系的名称和一组具有共同属性的无序的 多元组 构成。关系可以看做是一个 笛卡尔积 的有限 子集 , 笛卡尔积中的 元组 并不是全都有意义,只有有意义的那些才能成为关系。

表格 11 主键、外键和索引的区别

 主键外键索引
定义唯一标识一条记录,不能有重复的,不允许为空表的外键是另一表的主键,外键可以有重复的,可以是空值该字段没有重复值,但可以有一个空值
作用用来保证数据完整性用来和其他表建立联系用的是提高查询排序的速度
个数主键只能有一个一个表可以有多个外键一个表可以有多个惟一索引

2.1.1 关系操作 SQL

关系模块中常用的操作包括:

数据查询 SELECT

  • 选择
  • 投影
  • 连接 join: left/right/inner
  • 并 union

数据操作

  • 增加 INSERT
  • 删除 DELETE
  • 修改 UPDATE
  • 更新 UPDATE/FLUSH

2.1.2 范式分析 Normal Form

设计关系 数据库 时,遵从不同的规范 要求 ,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前 关系数据库 有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、 第四范式 (4NF)和 第五范式 (5NF,又称完美范式)。

第一范式(1NF)

所谓第一范式(1NF)是指在 关系模型 中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的 每一列都是不可分割的原子数据项 ,而不能是集合,数组,记录等非原子数据项。

第二范式(2NF)

在 1NF 的基础上,非码属性必须完全依赖于候选码(在 1NF 基础上消除非主属性对主码的部分函数依赖)。第二范式(2NF) 要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性 ,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。

第三范式(3NF)

在 1NF 基础上, 任何非主属性 不依赖于其它非主属性(在 2NF 基础上消除传递依赖)

巴斯-科德范式(BCNF)

Boyce-Codd Normal Form(巴斯-科德范式)

在 1NF 基础上,任何非主属性不能对主键子集依赖(在 3NF 基础上消除对主码子集的依赖)

巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。

第一范式:要求字段原子化(无多值); 存在主键(主键可以是多个字段的组合,一张表只能一个主键,主键也是唯一索引,相当于 NOT NULL+UNIQUE);无重复字段组;无冗余字段;

第二范式 2NF:在第一范式基础上,无部分依赖(即组合关键字中某一关键字可以决定部分非关键字);

EG:表(a,b,c,d,e,f) , 组合主键(a,b)->(c,d,e,f), 其中(a)->(c,d)。

那么需拆表为:表 1(a,b,e,f),表 2(a,c,d)

第三范式 3NF:在第二范式基础上,无传递依赖;

​ EG: 关键字段 → 非关键字段 x → 非关键字段 y

满足范式要求的数据库设计是结构清晰的,同时可避免数据冗余和操作异常。这并不意味着不符合范式要求的设计一定是错误的,在数据库表中存在 1:1 或 1:N 关系这种较特殊的情况下,合并导致的不符合范式要求反而是合理的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文