《数据库系统概念》3-主键、关系运算
2017-11-10 00:00
302 查看
一、关系数据库相关
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
相关文章推荐
- 《数据库系统概念》3-主键、关系运算
- 一对一关联映射(主键+双向)
- SQL的主键和外键的作用
- ObjectDataSource遇到Guid主键在Insert操作时出错的解决方法
- 索引和主键的区别
- Hibernate 主键生成方式
- ora-02292,ora-02266主键约束问题
- JPA视频学习(六)联合主键
- mssql禁用启用主键约束
- 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- 【oracle唯一主键SYS_GUID()】
- 罗列没有主键的表
- Mybatis+MySQL插入数据后返回主键
- 一个简单的复合主键的做关联类的例子
- Mybatis中insert、Update操作返回主键
- sql查询表结构,过程,视图,主键,外键,约束
- SQL的主键和外键约束详解及用途
- NHibernate Issues之1255:联合主键(composite-id)
- 表主键自增长Mybatis插入数据报错
- 扩展hibernate的主键生成策略 good