3.1 名词
属性分类
数据库实体属性分类主要包括以下几个方面:
- 标识属性 (Key Attribute / Identifier):
- 这些属性是用来唯一识别实体实例的关键属性,也称为主键(Primary Key)。在数据库表中,每个实体的实例(即一行记录)应当有一个或多个属性共同构成其唯一标识,不允许重复。例如,在顾客表中,顾客ID就是一个标识属性。
- 非标识属性 (Non-key Attribute / Non-Identifier):
- 这些属性不是用来唯一确定实体实例的属性,它们提供了关于实体实例其他方面的描述信息。例如,顾客表中的姓名、性别、出生日期、联系方式等都是非标识属性。
- 单一属性 (Simple Attribute):
- 单一属性只能取一个值,比如年龄、工资等。
- 复合属性 (Composite Attribute):
- 复合属性由多个子属性组成,这些子属性共同描述了一个整体概念。例如,地址可以是一个复合属性,包含街道、城市、省份、邮政编码等多个部分。
- 多值属性 (Multivalued Attribute):
- 在某些情况下,一个属性可以有多个值。在关系数据库中,这类属性通常通过关联表来实现,比如一个人有多部电话号码。
- 派生属性 (Derived Attribute):
- 派生属性的值可以根据其他属性的值计算得出,而不是直接存储在数据库中。例如,年龄可以从出生日期计算得到。
- 关联实体属性 (Relationship Attribute):
- 这类属性指向另一个实体或者实体集,表明两个实体之间的联系。在关系数据库中,这通常表现为外键(Foreign Key),比如在一个订单表中,客户ID就是一个关联实体属性,它链接到客户表的主键。
- 时间属性 (Temporal Attribute):
- 记录实体生命周期中的时间点或时间段的属性,如创建日期、更新日期、有效期等。
- 枚举属性 (Enumerated Attribute):
- 属性值仅能从预定义的一组选项中选取,如性别属性可能只有“男”、“女”和其他几个预设值。
结合以上分类,设计数据库时应该充分理解实体的属性,并根据实际需求合理安排属性的数据类型、是否允许为空、是否是索引列等特性。
考点:会区分各种码(候选码,主码,外码,全码)
3.2 关系代数
表达式:
R在前S在后为例
1. 选择:根据选择条件获取列(sql中:where)。
2. 投影
选择想要的列(类似于select),针对列进行计算。
3. 并
R与S 相同的合并,R与S 不同的元组放下面
4. 交
R与S 相同的合并,不同的不要
5. 差
R与S 相同的减掉,R不同的留着
6. 笛卡尔积
R表中的每一行都与S表中的每一行组合一次 R X S,select * form a,b
图片指路—写的非常易懂
7. 除
如果把笛卡尔积看作“乘法”运算,则除法运算可以看作这个“乘法”的逆运算。
网上好多写步骤的真的好难懂,易懂图解指路
假设我们手里面有一张数据库如下:
现在我们有一个问题,就是我们想要找出学习最积极的那位学生,也就是选修了所有课程的那个学生,先暂时放弃除法运算,
以我们最朴素的情感
,
用自己的逻辑
来解决这道题目,按照自己的想法,就像设计一个程序一样,需要几步做出这个问题
以下是按照我自己的想法:
- 首先,把SC表拆了,把每个学生单独做成一个表,如下:
- 然后问题就变成了拆开之后的表格和C表一一比对,找出拆开之后的三个表格中的Course属性和C表一模一样(也就是拆开之后包含了所有课程的表),然后找出那个人是谁,然后问题就解决了
实际上,我们的除法运算就是这个逻辑,但是除法运算的更为严谨,以下是除法运算的的步骤(SC ÷ C),这里我们仍然采用我们上面使用的数据库,直接说结论(SC ➗ C)能找出答案
- 第一步:找出C表中和SC表中相同的属性,也就是C属性,对C属性做投影操作(也就是找出总的课程有多少门)
- 第二步:找出SC表中和C表不相同的属性,也就是S属性,也对S属性做投影操作(找出一共有几个学生)
- 第三步:找出SC表中S的象集(每个学生分别都选了些什么课)
- 最后一步就是进行比对,只有张三的象集包含了所有C表中的所有课程,所以(SC ➗ C = 张三)
再来看一下步骤:
1.取S中和R相同的属性(投影),去重
2.找R中不同于S的属性,取不同的属性列,对该列进行去重
3. 求R中2中列对应的像集
4. 判断包含关系(哪个像集包含1中所有值)
8. 重命名
9. 连接
1.
笛卡尔积之后选择
2.等值连接
3. 自然连接
相同属性值值相同的留下,去掉重复属性。
10. 外连接
左连接(left join) 左侧为准右侧填充
右连接(right join)
3.3 元组演算
3.4 域演算
3.5 查询优化
3.6 关系规范化
这一章主要学习四大范式
第一范式
若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式