一、今日学了啥?
- 三种表达:三元组(属性列表)、二元组(R<U,F>函数依赖)、表格(属性+数据行)
- 候选键→主键(唯一);主属性=候选键中的属性;外键=引用其他表的候选键
- 完整性约束:实体(主属性非空)、参照(外键存在/空)、用户自定义(业务规则)
- 全码:所有属性都是主属性(如选课表(学号,课程号))
二、重点/要记住的!
-
关系模型
-
关系模型的三种表达方式
-
三元组表达式:关系名(属性1, 属性2,…),如
学生(学号, 姓名, 年龄, 性别, 班级编号)
-
二元组表达式:R<U,F>(U为属性集合,F为函数依赖)
学生<U,F> U={学号,姓名,年龄,性别,班级编号} F={学号→姓名, 学号→年龄, 学号→性别, 学号→班级编号}
-
表格表示法:首行为属性名,后续为数据行
| 学号 | 姓名 | 年龄 | 性别 | 班级编号 | |------|------|------|------|----------| | 001 | 张三 | 18 | 男 | C1 | | 002 | 李四 | 19 | 女 | C2 |
-
-
基本概念
- 目或者度:关系模式中属性的个数
- 主键 vs 候选码
- 候选码(候选键):所有能唯一标识元组的最小属性集(可能有多个),如
学生表:学号、身份证号都是候选键(都能唯一标识学生);选课表:(学号,课程号)组合才是候选键(单个属性无法唯一标识)
- 主码(主键):从候选码中选定1个作为主标识(如学号 vs 身份证的选择),如
学生表选择学号作为主键(虽然身份证号也能唯一标识,但日常使用学号更方便)
- 候选码(候选键):所有能唯一标识元组的最小属性集(可能有多个),如
- 主属性与非主属性:属于候选键的属性都是主属性,其他的是非主属性
选课表(学号,课程号,成绩) → 主属性:学号、课程号(都是候选键组成部分) → 非主属性:成绩
- 外码(外键):其他关系的候选键
学生表(学号,姓名) 选课表(学号,课程号) → 选课表的"学号"是引用学生表的外键
- 全码(ALL-Key):关系模式所有属性都是候选码
- 场景
正确示例:选课表(学号,课程号)时,两个属性都是主属性
错误扩展:若添加课程名字段则不再是全码(出现非主属性)
- 场景
-
-
完整性约束
- 实体完整性约束:规定基本关系的主属性不能取空值,如学生表学号
- 参照完整性约束:关系与关系间的引用,其它关系的主键或空值,如选课表学号必须存在于学生表
- 用户自定义完整性约束:应用环境决定,如性别字段仅允许’M/F’或0/1
-
触发器:完整性约束的一种手段
三、今天的小收获/卡住的地方
今天概念抽象了点,还是用例子帮助理解吧
四、明天学啥?
明天学习逻辑结构设计
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!