跳转至

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\)的外键,下面的操作中,哪个既可能破坏实体完整性,也可能破坏参照完整性

  1. 插入一个元组\((k_1,x_1,a_1)\), \(k_1\)不为空
  2. 删除一个存在元组\((k_2,x_2,a_2)\)
  3. 将存在元组\((k_2,x_2,a_2)\)修改为元组\((k_2,x_2,a_1)\)
  4. 将存在元组\((k_2,x_2,a_2)\)修改为元组\((k_2,x_3,a_2)\)

  5. 插入k1主键不为空 保证实体完整性 但是x1指向外键可能为空 可能破坏参照完整性

  6. 删除一个存在元组不会破坏实体完整性 如果x2被作为其他表的外键 可能会破坏其他表的参照完整性 但不会影响本表的
  7. 主键和外键都没变化 二者完整性都不会被破坏
  8. 外键修改 主键不懂 不会破坏实体完整性 可能破坏参照完整性

主键的选取影响到数据库应用系统提供的服务吗?请你举例说明

主键的选择可能决定系统的功能

enrollment表为例子 如果使用 enrollment(sid, cno, major)的做表方式 则无法记录某学生对某次课程多次时间/状态的选择实例 如果加入time作为主键 则可进行分析