?
一、关系数据库相关
a)在将数据呈现给用户时,主要需解决两个关键问题:如何检索、更新数据以及对数据的保护。
而用户对字段的使用决定了其是否原子性,比如phone,即使保存单个电话号码,如果根据电话号码区分运营商、地域,则是不满足原子性的。
b)键的分类:
超键(Super key),由若干字段组合起来,可以唯一地标识一个数据对象
候选键(Candidate key),超键的不同组合方式
主键(Primary key) 被数据库设计者选中的候选键
c)主键的选择需能够唯一地标识一个数据对象,且不会改变或很少变动
d)如果Department.dept_name为主键,instructor表通过instructor.dept_name与department表关联,则instructor.dept_name称为instructor表的外键(foreign
key),从instructor.dept_name到department.dept_name的关系称为外键的参照关系(referencing
relation),从department.dept_name到instructor.dept_name的关系称为被参照关系(referenced
relation)。
e)参照关系必须遵守参照完整性约束,即参照关系中任意元组在特定字段上的值在被参照关系的元组的对应属性中存在。
f)表关系可以用Schema图来表示:
但虽然这种图可以表达外键关系,却无法显示参照完整性约束,后面学习的E-R图可以弥补这一点。
二、关系运算
常用关系运算有选择、投影、自然连接等:
选择σ
选择运算会输出满足谓词条件的行,比如where instructor.salary>=85000
投影∏
会输出包含指定列的数据,并去掉重复项
自然连接?
将两个关系的元组合并成单个元组,比如将instructor和department根据dept_name连接起来,就得到每个导师及其部门的信息
笛卡尔积×
笛卡尔积输出的是所有的元组对,比如教师与部门的笛卡尔积表示两者所有可能的对应情况
并∪
并运算会合并两个相似结构的表。
对于运算结果中的重复数据,有些SQL语言会严格遵守集合运算的数学定义去除重复,有些则考虑到去重需要大量相关处理,就保留了重复,比如T-SQL同时又UNION和UNION ALL。
学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan