关系模型基础
基本概念
- Attribute(属性):列,存放的数据只能是基本数据类型
- Tuple(元组):行
- Schema(模式):如Student (id, name, major)
键
- Superkey(超键):属性的集合,属性下的数据没有重复值
- Candidate key: (候选键):最小的超键
- Primary key(主键):管理员选择的候选键,在模式中通过下划线来标明
- Foreign key(外键):参照另外一张表的主键的属性,如选修(学号,课号,成绩)的学号来自学生表,课号来自课程表,都是外键
- Entity Integrity(实体完整性):主键不允许为空,也不允许重复
- Referential Integrity(参照完整性):外键可以为空,如果非空,一定要取相应表中主键出现的值
数据存储
Field(字段)
按字节存储(8 bits)
- 短整数:2字节
- 浮点数:指数+尾数
- 字符:8位ASCII码
- 布尔值:8位,TRUE全1,FALSE全0
- 字符串
- Null标记结尾
- 开头给出长度
- 定长存储
Record(纪录)
按照属性是否按照固定的格式和固定的长度可以分为
- 固定模式:按照固定的格式和固定的长度
- 可变模式:自描述(哪个属性+数据类型+数据长度+数据)
- 固定+可变结合:固定属性+可变属性的个数+可变属性
存储方法
- 字段数+第一个字段长度+第一个字段+第二个字段长度+第二个字段+...
- 字段数+总长度+各个字段的长度+各个字段
Block(数据块)
- Separate
- 每个纪录都是定长:无需分隔符
- 在每个记录的最后增加一个分隔符
- 在每个记录之前给出纪录的长度
- Unspanned & Spanned:一个记录能否跨块存储
- Mixed:不同的表可以放在同一个块里
- Split records:固定部分放在一个块,变长部分放在另一个块
存储顺序
- 下一个记录是物理相连的
- 上一个记录存储指针,指向下一个记录
- 溢出链存储插入的记录,溢出链太多时,重新排序
- 指针桶:在头文件中存储指针,指向每一个记录