Teradata 认证系列 - 3. 关系型数据库的概念
本课的学习目标
- 定义关系型数据库关联的术语
- 讨论主键的功能
- 讨论外键的功能
- 列出关系型数据库的优势
- 描述星型架构和第三范式数据模型的区别
什么是数据库?
数据库是一个应用永久保存数据的集合表现在:
- 逻辑关联
- 共享
- 受保护
- 可管理
数据库包括逻辑关联的数据,这意味着数据库是为了特殊目的而设计的。数据库支持多用户共享。一个特性是很多用户经常为了不同的目的在使用它。数据库被访问控制权限所保护及管理,以维持它的集成性和价值。
逻辑的/关系型的模型
逻辑模型
- 设计应保障使用方式无关性
- 适应广泛的前端工具
- 允许数据库更快的创建
- 应保证数据量无关性
- 组织数据来表达真实世界中的表单(关系型的)数据
- 包含所有的企业应用用途范畴内的数据定义
- 广泛性 - 逻辑模型是在任何RDBMS平台上的物理实现的模板
标准化
- 把复杂数据结构弱化成简单的稳定的单一结构的过程
- 从概念性数据模型上移除冗余的属性,键以及关系
关系型数据库
- 用Table表示一个关系
- 用Row表示一个元组
- 用Column表示一个属性
第三范式 vs 星型架构
一个模型可以用范式进行精炼,一个范式模型包括:
- 实体 - 一个数据表中的一行数据
- 属性 - 列
- 关系 - 数据表之间的
第一范式:一个实体实例的每一个属性只能有一个值,实体内不允许出现重复的组
第二范式:必须符合第一范式,一个实体内的非主键属性全部依赖主键属性,而不是其子集
第三范式:必须符合第二范式,同一个实体内,没有一个非键属性依赖于另一个非键属性
TD Database可以支持任何被SQL处理的数据模型;范式数据模型的一个优势是有能力支持未知的查询。
星型架构:
有时候也称星型连接架构,是一种最简单的数据仓库架构,星型架构由少量表组成(可能只有一个)关联着任意维度的数据表。星型架构是雪花架构的一种特殊形式。
星型架构的特点:Fact, 维度, 雪花
星型架构模型的特点:
- 趋向于更少的实体
- 提倡更高一级的反范式化
主键
主键规则:
主键唯一的标示表内的一行。一个主键是必须的,因为表内的每一行必须能够唯一的标示。
不允许重复的值。因为主键用于标示,所以主键不能为空。
主键的值不能改动。因为与其他实体间可能有外键。
主键可以包括多于一个的列。事实上,包括列的数量没有限制。
选择一个主键
一行中的一个列被称作那行的一个属性。数据库的设计者可以选择任何一个属性作为主键,但是根据以上的规则,很多属性不适合作为主键的候选。比如姓氏就不适合,很可能两个人都是一个姓氏,即使我们加上名字,也很可能出现重名重姓的人,而且有些人还会改名字。
有些设计者推荐使用系统赋予的整数序列作为主键,这样可以保证唯一性但是也会增加数据库的空间需求。
总结主键的特征:
- 主键是每个表必须的
- 一个表只能有一个主键
- 主键可能由一个或多个列组成
- 主键不能有重复的值
- 主键不能为空Null
- 主键是被认为永不改变的值
外键
外键标示表之间的关系
外键规则:
- 外键是可选的
- 一个表可能有多于一个外键
- 一个外键可能由多于一个列组成
- 外键允许出现重复的值
- 外键允许空值Null
- 外键的值可能改变
- 每个外键的值必须存在于一个主键中
这些术语并不是Teradata特有的,他们是广泛意义上的关系型数据库概念。
用关系型数据库来回答问题
一个关系型数据库是一群表的集合,存储在一个单一安装的关系型数据库管理系统(RDBMS)。“管理系统”这个词说明这是一个关系型数据库使用一系列的软件提供附加的支持比如事务,安全性和报表。
数据的连接出现在表之间的数据值的匹配中,在关系型数据库理论中,这个称为连接(Join)
比如员工表和员工部门表中都有一个部门ID的列,这就允许数据库回答这样的问题:这个员工工作的部门的部门名称是什么?
关系型的优势
- 比其他类型更灵活
- 允许业务逻辑迅速的接受条件改变
- 数据驱动 vs 应用驱动
- 模块化业务,而不是流程化
- 使得更容易建立应用因为数据已经做了大量工作
- 一个单独的数据拷贝可以为多种目的服务
- 支持面向终端用户计算的趋势
- 理解简单
- 无需知道访问路径
- 牢固的建立在集合论中
学完这一课,进度就完成了14.9%,别问我是怎么算出来的。
Teradata 认证系列 - 3. 关系型数据库的概念的更多相关文章
- Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念
Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念 在学习redis之前我们先来学习两个概念,即什么是关系型数据库什么是非关系型数据库,二者的区别是什么,二者的关系又是什么? ** ...
- Teradata 认证系列 - 2. Teradata数据库总览
Teradata (以下简称TD) 总览本课的学习目标 描述Teradata数据库产品的功能 知晓支持的操作系统 描述Teradata的并行架构 解释线性可扩展性 列出Teradata DBA永远不需 ...
- 关系型数据库基础概念:MySQL系列之开篇
一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定 ...
- Teradata 认证系列 - 1. TCPP这是个啥
一看历史,好几年没发帖...正好最近在自学teradata认证(学也不一定学的完,最后也不一定去考,仅仅安慰一下不想碌碌无为的内心) 网上一搜,百度上的中文相关资料简直为0.这个不奇怪,毕竟都没什么人 ...
- 关系型数据库基本概念及MySQL简述
数据库基本概念">关系型数据库基本概念 数据库: 对大量信息进行管理的高效解决方案. 按照数据结构来组织.存储和管理数据的库. 数据库系统(DBS,DATABASE SYSTEM): ...
- mysql之数据库基本概念(mysql学习笔记一)
数据库系统 数据库管理系统(DBMS)+数据库(DATABASE)(+数据库管理员) DBS=dbms+db 定义: 大量信息进行管理的高效解决方案,按照数据结构来组织.存储和管理数据的仓库 关系 ...
- 关系型数据库中主键(primary key)和外键(foreign key)的概念。
刚接触关系型数据库的同学,会听过主键和外键的概念.这是关系型数据库的基本概念,需要清楚理解.今天我就以简洁的语言总结一下这个概念. 主键.一句话概括:一张表中,可以用于唯一标识一条记录的字段组(或者说 ...
- oracle配置数据库可恢复性(认证系列总结一)
原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/10263246.html 接下来的n多天,将进入oracle认证系列的学习总结中,本该从asm ...
- Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用
Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用 原创 2017-04-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章介绍了一些基础,但都是静 ...
随机推荐
- Intent的简单概述
Intent是负责在系统组件之间传递信息的一个对象,就像名字一样,是一个意图,可以将当前组件的意图传递给系统,例如启动Activity等,还可以在传递的时候附加上一些值,可以用Bundle对象封装这些 ...
- 03.generator
generatorConfig.xml自动生成连接数据库的这些个公共类的方法. <?xml version="1.0" encoding="UTF-8" ...
- ps&CPU
#include <pthread.h> void f();int main() { f(); return 0;} void f() { int ...
- HTML中的ID不能以数字开头
最近在学习网页制作,发现ID在w3c规范里是不能以一个数字开头的,chrome浏览器是可以,firefox就不能使用数字开头了,其它浏览器未测试. 记录一下! W3C规范链接:http://www.w ...
- javascript 操作符小结
简单总结一下JavaScript的几个操作符: var. in. delete. typeof. new. instanceof.void var 定义变量要使用var操作符, 使用var操作符定义的 ...
- win7 失去焦点解决方案
将HKEY_CURRENT_USER\Control Panel\Desktop中的ForegroundLockTimeout的选项,改成十进制的200000毫秒或者十六进制30d40. 参考链接: ...
- code first迁移和部署
从"工具"菜单中,选择"NuGet 包管理器" > "包管理器控制台". 在PM>提示符处输入以下命令: enable-migr ...
- C/C++中的static用法总结
C中: 1. static修饰函数中的变量(栈变量):改变变量的生存期,作用域不变仍为所在函数. 只被初始化一次. 2. static修饰全局变量:限制全局变量只能被模块内访问,不可以在别的模块中用e ...
- ProtoBuf练习(二)
重复数据类型 protobuf语言的重复字段类型相当于C++的std::list数据类型 工程目录结构 $ ls proto/ TServer.proto TSession.proto proto文件 ...
- Java中Class Type 类类型是怎么回事?
Java中三种方式可以用来表示Class Type(类的实例对象), 第一种,通过隐藏的静态成员变量class来表示:第二种,通过调用该类的对象的getClass方法:第三种,通过Class.forN ...