[Russell Han] 24 | 数据库基础 | 关系模型
分类:
文章
•
2025-01-18 23:23:58
知识
名词解释
- Data Model:一组描述如何用计算机化的信息表示现实世界中的数据的集合,它同时也描述了访问和更新这些信息的操作类型
CAP数据库
- 他的表
- 他的数据模型
- CAP数据库表中每一行都是不同的,每张表都有唯一的标识符
数据库各部分的命名
- Table/表:又称关系/relation
- Column name/列名;又称属性/attribute
- Row/行:又称元组/tuple
- Table heading/表标题(不是表名):又称属性集合/schema
- 两个定义
CAP = {Customers, Agents, Products, Orders}——数据库的表名集合
Head(Customers) = {cid, cname, city, discnt}——一张表的属性集合
- 程序的数据独立性:当通过查询回答一个问题时,即使所有的数据改变了,查询依然能够回答该问题,查询语句与表内容无关,仅与列名有关
- 列的域是枚举类型
域一般可定义为:可以用作表的属性值的常数集合(一般域在某些编程语言中对应一些特定的枚举类型)
- 笛卡尔乘积
设CID = Domain(cid), CNAME = Domain(cname) , CITY = Domain(city), DISCNT = Domain(discnt)
这四个域的笛卡尔乘积CID x CNAME x CITY x DISCNT = 包含所有元组(w, x, y, z)(其中w来自CID,x来自CNAME,y来自CITY,z来自DISCNT)的集合;这四个域的关系是笛卡尔乘积的子集(CUSTOMERS表 包含于 CID x CNAME x CITY x DISCNT)
关系规则
-
规则一:第一范式:不能有多值域
多值域的例子
![[Russell Han] 24 | 数据库基础 | 关系模型 [Russell Han] 24 | 数据库基础 | 关系模型](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI0LzNkOWI5M2E1YWNhNjYzZmJmZGIyZDkzNTU0MzYyZjQ4LnBuZw==)
将这个表根据规则一的规则改进
![[Russell Han] 24 | 数据库基础 | 关系模型 [Russell Han] 24 | 数据库基础 | 关系模型](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYzMi9hNGE1Nzc3MWRkYjFkMzNhNzc1ZTIwYWVmNjBlZjM3MC5wbmc=)
这种改进浪费空间,更有效的做法是再做出一个独立的表,如图
-
规则二:只能基于内容存取行(Access rows by Content only)
不能说“取第三行”因为行、列都没有序
不允许使用指针指向某些行
注:大部分关系数据库产品破坏了这一规则,它允许用户通过RIDS来取行
-
规则三:行唯一规则(The unique row rule)
任何两个元组在同时刻不能完全相同
注:但是许多数据库产品允许行不唯一,以便有效加减
在这一章,假设这三条规则都被遵守
键、超键、空值
- 键:表中用于区分行的列的集合(如CUSTOMERS表中的cid)
键是由DBA定义的,由DBA决定哪些列具有这一属性
其他表可以通过键来引用这张表中的一行
- 超键:具有唯一属性的列的集合,如CUSTOMERS的超键为(cid, cname);能唯一识别元组的属性集
- 键是最小的超键,组成键的列的集合再也没有子集是表的超键(即键是没有多余的)
- 一个列可作为键的条件:这个列在所有行的值都不同,但凡有两个相同的都不能做键
关系代数
集合运算
自然关系运算
运算依赖
例题