术语
关系模型:关系模型以关系或表格的形式表示数据。
关系模式:模式表示关系的结构。例如; STUDENT 关系的 Relational Schema 可以表示为:
学生(STUD_NO、STUD_NAME、STUD_PHONE、STUD_STATE、STUD_COUNTRY、STUD_AGE)
关系实例:在特定时间实例中关系中存在的一组值称为关系实例,如表 1 和表 2 所示。
属性:每个关系都是根据一些属性定义的,每个属性都称为属性。例如,STUD_NO、STUD_NAME 等是关系 STUDENT 的属性。
属性域:属性在关系中可以采用的可能值称为其域。例如,STUD_AGE 的域可以是 18 到 40。
元组:关系的每一行都称为元组。例如;下面给出的学生关系有 4 个元组。
NULL 值:某些元组的某些属性值可能未知、缺失或未定义,用 NULL 表示。关系中的两个 NULL 值被视为彼此不同。
表 1 和表 2 表示具有两个关系 STUDENT 和 STUDENT_COURSE 的关系模型。
鳕鱼规则
Codd 规则是由 EF Codd 提出的,应该由关系模型来满足。
- 基础规则:对于任何宣称或声称是关系数据库管理系统的系统,该系统必须能够完全通过其关系功能来管理数据库。
- 信息规则:关系模型中存储的数据必须是表中某个单元格的值。
- 保证访问规则:每个数据元素必须可以通过表名、其主键和要确定其值的属性名称访问。
- NULL 值的系统处理:数据库中的 NULL 值必须仅对应于缺失、未知或不适用的值。
- Active Online Catalog:数据库的结构必须存储在一个在线目录中,可以被授权用户查询。
- 综合数据子语言规则:数据库应该可以被定义、操作和事务管理操作支持的语言访问。
- 视图更新规则:为各种目的创建的不同视图应由系统自动更新。
- 高级插入、更新和删除规则:关系模型应该支持在每个关系级别的插入、删除、更新等操作。此外,还应支持并集、交集和减号等集合操作。
- 物理数据独立性:对表物理位置的任何修改都不应该在应用程序级别强制修改。
- 逻辑数据独立性:表的逻辑或概念架构中的任何修改不应在应用程序级别强制修改。例如,将两张表合二为一应该不会影响应用程序访问它,这是很难实现的。
- 完整性独立性:在数据库级别修改的完整性约束不应强制在应用程序级别进行修改。
- 分布独立性:最终用户不应该看到分布在各个位置的数据。
- 非颠覆规则:对数据的低级别访问不应能够绕过完整性规则来更改数据。
门问题
鉴于基本的 ER 和关系模型,以下哪个是不正确的? [GATE CS 2012]
A. 实体的一个属性可以有多个值
B. 实体的属性可以是复合的
C. 在关系表的一行中,一个属性可以有多个值
D. 在关系表的一行中,一个属性可以只有一个值或一个 NULL 值
答:在关系模型中,一个属性不能有多个值。所以,选项C是答案。