本课的学习目标
- 定义关系型数据库关联的术语
- 讨论主键的功能
- 讨论外键的功能
- 列出关系型数据库的优势
- 描述星型架构和第三范式数据模型的区别
什么是数据库?
数据库是一个应用永久保存数据的集合表现在:
- 逻辑关联
- 共享
- 受保护
- 可管理
数据库包括逻辑关联的数据,这意味着数据库是为了特殊目的而设计的。数据库支持多用户共享。一个特性是很多用户经常为了不同的目的在使用它。数据库被访问控制权限所保护及管理,以维持它的集成性和价值。
逻辑的/关系型的模型
逻辑模型
- 设计应保障使用方式无关性
- 适应广泛的前端工具
- 允许数据库更快的创建
- 应保证数据量无关性
- 组织数据来表达真实世界中的表单(关系型的)数据
- 包含所有的企业应用用途范畴内的数据定义
- 广泛性 - 逻辑模型是在任何RDBMS平台上的物理实现的模板
标准化
- 把复杂数据结构弱化成简单的稳定的单一结构的过程
- 从概念性数据模型上移除冗余的属性,键以及关系
关系型数据库
- 用Table表示一个关系
- 用Row表示一个元组
- 用Column表示一个属性
第三范式 vs 星型架构
一个模型可以用范式进行精炼,一个范式模型包括:
- 实体 - 一个数据表中的一行数据
- 属性 - 列
- 关系 - 数据表之间的
第一范式:一个实体实例的每一个属性只能有一个值,实体内不允许出现重复的组
第二范式:必须符合第一范式,一个实体内的非主键属性全部依赖主键属性,而不是其子集
第三范式:必须符合第二范式,同一个实体内,没有一个非键属性依赖于另一个非键属性
TD Database可以支持任何被SQL处理的数据模型;范式数据模型的一个优势是有能力支持未知的查询。
星型架构:
有时候也称星型连接架构,是一种最简单的数据仓库架构,星型架构由少量表组成(可能只有一个)关联着任意维度的数据表。星型架构是雪花架构的一种特殊形式。
星型架构的特点:Fact, 维度, 雪花
星型架构模型的特点:
- 趋向于更少的实体
- 提倡更高一级的反范式化
主键
主键规则:
主键唯一的标示表内的一行。一个主键是必须的,因为表内的每一行必须能够唯一的标示。
不允许重复的值。因为主键用于标示,所以主键不能为空。
主键的值不能改动。因为与其他实体间可能有外键。
主键可以包括多于一个的列。事实上,包括列的数量没有限制。
选择一个主键
一行中的一个列被称作那行的一个属性。数据库的设计者可以选择任何一个属性作为主键,但是根据以上的规则,很多属性不适合作为主键的候选。比如姓氏就不适合,很可能两个人都是一个姓氏,即使我们加上名字,也很可能出现重名重姓的人,而且有些人还会改名字。
有些设计者推荐使用系统赋予的整数序列作为主键,这样可以保证唯一性但是也会增加数据库的空间需求。
总结主键的特征:
- 主键是每个表必须的
- 一个表只能有一个主键
- 主键可能由一个或多个列组成
- 主键不能有重复的值
- 主键不能为空Null
- 主键是被认为永不改变的值
外键
外键标示表之间的关系
外键规则:
- 外键是可选的
- 一个表可能有多于一个外键
- 一个外键可能由多于一个列组成
- 外键允许出现重复的值
- 外键允许空值Null
- 外键的值可能改变
- 每个外键的值必须存在于一个主键中
这些术语并不是Teradata特有的,他们是广泛意义上的关系型数据库概念。
用关系型数据库来回答问题
一个关系型数据库是一群表的集合,存储在一个单一安装的关系型数据库管理系统(RDBMS)。“管理系统”这个词说明这是一个关系型数据库使用一系列的软件提供附加的支持比如事务,安全性和报表。
数据的连接出现在表之间的数据值的匹配中,在关系型数据库理论中,这个称为连接(Join)
比如员工表和员工部门表中都有一个部门ID的列,这就允许数据库回答这样的问题:这个员工工作的部门的部门名称是什么?
关系型的优势
- 比其他类型更灵活
- 允许业务逻辑迅速的接受条件改变
- 数据驱动 vs 应用驱动
- 模块化业务,而不是流程化
- 使得更容易建立应用因为数据已经做了大量工作
- 一个单独的数据拷贝可以为多种目的服务
- 支持面向终端用户计算的趋势
- 理解简单
- 无需知道访问路径
- 牢固的建立在集合论中
学完这一课,进度就完成了14.9%,别问我是怎么算出来的。