东北大学——数据库概论——学习笔记 第02章 关系模型介绍
2021/4/30 2:25:38
本文主要是介绍东北大学——数据库概论——学习笔记 第02章 关系模型介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第02章 关系模型介绍
1. 关系数据库的结构
关系数据库由表(table)的集合构成,每个表都有唯一的名字。
在关系模型的术语中,关系(relation)用来指代表,元组(tuple)用来指代表中的行,属性(attribute)指代表中的列。
例如,下表中instructor关系有四个属性:ID、name、dept_name和salary。
ID | name | dept_name | salary |
---|---|---|---|
22222 | Einstein | Physics | 95000 |
12121 | Wu | Finance | 90000 |
32343 | El Said | History | 60000 |
45565 | Katz | Comp. Sci. | 75000 |
98345 | Kim | Elec. Eng. | 80000 |
76766 | Crick | Biology | 72000 |
10101 | Srinivasan | Comp. Sci. | 65000 |
58583 | Califieri | History | 62000 |
83821 | Brandt | Comp. Sci. | 92000 |
15151 | Mozart | Music | 40000 |
33456 | Gold | Physics | 87000 |
76543 | Singh | Finance | 80000 |
用关系实例(relation instance)这个术语来表示一个关系的特定实例,也就是所包含的一组特定的行。上表中instructor的实例有12个元组,对应12个教师。
对于关系的每个属性,都存在一个允许取值的集合,称为该属性的域(domain)。这样instructor关系的salary属性的域就是所有可能的工资值的集合,而name属性的域是所有可能的教师名字的集合。
如果域中元素被看作是不可再分的单元,则域是原子的(atomic)。我们要求对所有关系r的所有属性的域都是原子的。
如图所示,
D
1
=
{
d
11
,
d
12
,
.
.
.
}
D_1=\{d_{11},d_{12},...\}
D1={d11,d12,...}
笛卡尔积为: D 1 × D 2 × D 3 × . . . D_1×D_2×D_3×... D1×D2×D3×...
关系模式是笛卡尔积的子集。
元组变量:设一个 t t t指代其中一个元组。则 t [ A 1 ] = d 12 , t [ A 2 ] = d 22 t[A_1]=d_{12},t[A_2]=d_{22} t[A1]=d12,t[A2]=d22。
由于关系是元组集合,元组在关系中出现的顺序是无关紧要的,所以关系是无序的。
数据库模式(database schema)和数据库实例(database instance)的区别:前者是数据库的逻辑设计,后者是给定时刻数据库中数据的一个快照。
2. 码
- 超码(superkey):一个或多个属性的集合,这些属性的组合可以唯一标识一个元组。
- 候选码(candidate key):最小超码。它的任意真子集都不能成为超码。
- 主码(primary key):代表被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
- 外码(foreign key):一个关系模式的属性中可能包括另一个关系模式的主码,这个属性在前一个关系模式上称作参照后一个关系模式的外码。前者也被称作外码依赖的参照关系(referencing relation),后者叫做外码的被参照关系(referenced relation)。
3. 模式图
一个含有主码和外码依赖的数据库模式可以用模式图(schema diagram)来表示。
- classroom(building, room_number, capacity)
- department(dept_name, building, budget)
- course(course_id, title, dept_name, credits)
- instructor(ID, name, dept_name, salary)
- section(course_id, sec_id, semester, year, building, room_number, time_slot_id)
- teaches(ID, course_id, sec_id, semester, year)
- student(ID, name, dept_name, tot_cred)
- takes(ID, course_id, sec_id, semester, year, grade)
- advisor(s_ID, i_ID)
- time_slot(time_slot_id, day, start_time, end_time)
- prereq(course_id, prereq_id)
如图所示,外码依赖用从参照关系的外码属性到被参照关系的主码属性之间的箭头表示:
4. 关系查询语言
查询语言(query language)是用户用来从数据库中请求获取信息的语言。可分为两种:
- 过程化语言(procedural language):用户指导系统执行一系列操作以计算出结果。
- 非过程化语言(nonprocedural language):用户只需描述所需信息,不用给出获取信息的具体过程。
实际使用的查询语言既包含过程化的成分,又包含非过程化的成分。
5. 关系运算
详见第06章 形式化关系查询语言
这篇关于东北大学——数据库概论——学习笔记 第02章 关系模型介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南