Unit2作业¶
根据课件 简单的简答题
试述关系数据模型的三要素,其主要内容是什么?¶
- 数据结构 常为表 用关系来表示数据之间的关系
- 数据操作 包括传统的集合操作和专门的关系操作
- 数据完整性约束 包括 实体完整性 参照完整性 用户自定义完整性
理解关系数据库中的术语:关系,元组,属性,分量,表,行,列,数据库模式,关系模式,标题,数据库,关系的内容,域,笛卡儿积¶
- 关系 二维表 可以看成笛卡尔积的有意义子集
- 元组 表中的一行
- 属性 表中的一列
- 分量 元组的一个属性值
- 表 与关系对应 即有 表/列/行 与 关系/属性/元组
- 行 与元组对应
- 列 与属性对应
- 关系模式 也叫标题 即组成关系的属性名的集合。它描述的是关系的结构,不是某一时刻的数据内容
- 标题 也叫关系模式
- 数据库模式 数据库之中所有关系模式的集合
- 数据库 关系内容的集合
- 关系的内容 关系元组的集合
- 域 属性的取值范围
- 笛卡儿积 一个对象和另一个对象之间的有序链接关系
关系模型、关系、关系模式、关系数据库之间有什么样的联系?¶
从抽象到实际的关系
- 关系模型 是一种数据模型 是关系数据库能够建立的基础
规定了数据结构 数据操作 数据完整性约束
- 关系
是关系模型中的基本数据结构
- 关系模式
对关系的结构描述 也就是关系的标题
- 关系数据库
若干关系内容的集合
数据库中的“型”与“值”在计算机系统中适合存放在一起吗?说明你的理由¶
数据库中的“型”与“值” 一般不适合存放在一起
-
关系的标题是相对稳定的 而关系的内容是经常变化的 二者分开存放明显合理一些
-
“型”主要是结构定义,“值”主要是具体数据,两者性质不同
关系模型的完整性规则有哪几类?¶
- 实体完整性 主键不能为空
- 参照完整性 外键要么为空 要么为被参照关系中的某个主键
- 第一范式规则
- 基于内容存取规则
- 行唯一性规则
什么是实体完整性?举一例说明¶
-
表T中的任意行在主键列的取值都不允许为空 也即 任何主键属性都不能为空
-
比如students表若选sid为主键,则sid列中 任何元组都不能为空
什么是参照完整性?举一例说明¶
若属性或属性组 F 是基本关系 R 的外键,它与基本关系 S 的键 KS 相对应,则对于 R 中每个元组在 F 上的值必须满足二者之一:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主键值
例如
- 学生(学号,姓名,性别,专业号,年龄)
- 专业(专业号,专业名)
这里,学生 关系中的 专业号 可以作为外键,参照 专业 关系中的主键 专业号。因此,学生表中某个学生的 专业号,要么为空,要么必须在专业表中能找到对应的某个 专业号。这就是参照完整性
在关系模型的参照完整性规则中,外键属性的值是否可以为空?什么情况下才可以为空?¶
外键属性的值可以为空;但只有在 F 取空值 时才可以,而如果 F 是属性组,那么必须是 F 的每个属性值都为空值,不能只空一部分
设关系模式\(R (K,X,A)\)中,\(K\),\(X\),\(A\)都是属性组,其中,\(K\)为\(R\)的主键,\(X\)为\(R\)的外键,下面的操作中,哪个既可能破坏实体完整性,也可能破坏参照完整性¶
- 插入一个元组\((k_1,x_1,a_1)\), \(k_1\)不为空
- 删除一个存在元组\((k_2,x_2,a_2)\)
- 将存在元组\((k_2,x_2,a_2)\)修改为元组\((k_2,x_2,a_1)\)
-
将存在元组\((k_2,x_2,a_2)\)修改为元组\((k_2,x_3,a_2)\)
-
插入k1主键不为空 保证实体完整性 但是x1指向外键可能为空 可能破坏参照完整性
- 删除一个存在元组不会破坏实体完整性 如果x2被作为其他表的外键 可能会破坏其他表的参照完整性 但不会影响本表的
- 主键和外键都没变化 二者完整性都不会被破坏
- 外键修改 主键不懂 不会破坏实体完整性 可能破坏参照完整性
主键的选取影响到数据库应用系统提供的服务吗?请你举例说明¶
主键的选择可能决定系统的功能
以enrollment表为例子 如果使用 enrollment(sid, cno, major)的做表方式 则无法记录某学生对某次课程多次时间/状态的选择实例 如果加入time作为主键 则可进行分析