本课的学习目标

  • 定义关系型数据库关联的术语
  • 讨论主键的功能
  • 讨论外键的功能
  • 列出关系型数据库的优势
  • 描述星型架构和第三范式数据模型的区别

什么是数据库?
数据库是一个应用永久保存数据的集合表现在:

  • 逻辑关联
  • 共享
  • 受保护
  • 可管理

数据库包括逻辑关联的数据,这意味着数据库是为了特殊目的而设计的。数据库支持多用户共享。一个特性是很多用户经常为了不同的目的在使用它。数据库被访问控制权限所保护及管理,以维持它的集成性和价值。

逻辑的/关系型的模型

逻辑模型

  • 设计应保障使用方式无关性
  • 适应广泛的前端工具
  • 允许数据库更快的创建
  • 应保证数据量无关性
  • 组织数据来表达真实世界中的表单(关系型的)数据
  • 包含所有的企业应用用途范畴内的数据定义
  • 广泛性 - 逻辑模型是在任何RDBMS平台上的物理实现的模板

标准化

  • 把复杂数据结构弱化成简单的稳定的单一结构的过程
  • 从概念性数据模型上移除冗余的属性,键以及关系

关系型数据库

  • 用Table表示一个关系
  • 用Row表示一个元组
  • 用Column表示一个属性

第三范式 vs 星型架构

一个模型可以用范式进行精炼,一个范式模型包括:

  • 实体 - 一个数据表中的一行数据
  • 属性 - 列
  • 关系 - 数据表之间的

第一范式:一个实体实例的每一个属性只能有一个值,实体内不允许出现重复的组

第二范式:必须符合第一范式,一个实体内的非主键属性全部依赖主键属性,而不是其子集

第三范式:必须符合第二范式,同一个实体内,没有一个非键属性依赖于另一个非键属性

TD Database可以支持任何被SQL处理的数据模型;范式数据模型的一个优势是有能力支持未知的查询。

星型架构:

有时候也称星型连接架构,是一种最简单的数据仓库架构,星型架构由少量表组成(可能只有一个)关联着任意维度的数据表。星型架构是雪花架构的一种特殊形式。

星型架构的特点:Fact, 维度, 雪花

星型架构模型的特点:

  • 趋向于更少的实体
  • 提倡更高一级的反范式化

主键

主键规则:

主键唯一的标示表内的一行。一个主键是必须的,因为表内的每一行必须能够唯一的标示。

不允许重复的值。因为主键用于标示,所以主键不能为空。

主键的值不能改动。因为与其他实体间可能有外键。

主键可以包括多于一个的列。事实上,包括列的数量没有限制。

选择一个主键

一行中的一个列被称作那行的一个属性。数据库的设计者可以选择任何一个属性作为主键,但是根据以上的规则,很多属性不适合作为主键的候选。比如姓氏就不适合,很可能两个人都是一个姓氏,即使我们加上名字,也很可能出现重名重姓的人,而且有些人还会改名字。

有些设计者推荐使用系统赋予的整数序列作为主键,这样可以保证唯一性但是也会增加数据库的空间需求。

总结主键的特征:

  • 主键是每个表必须的
  • 一个表只能有一个主键
  • 主键可能由一个或多个列组成
  • 主键不能有重复的值
  • 主键不能为空Null
  • 主键是被认为永不改变的值

外键

外键标示表之间的关系

外键规则:

  • 外键是可选的
  • 一个表可能有多于一个外键
  • 一个外键可能由多于一个列组成
  • 外键允许出现重复的值
  • 外键允许空值Null
  • 外键的值可能改变
  • 每个外键的值必须存在于一个主键中

这些术语并不是Teradata特有的,他们是广泛意义上的关系型数据库概念。

用关系型数据库来回答问题

一个关系型数据库是一群表的集合,存储在一个单一安装的关系型数据库管理系统(RDBMS)。“管理系统”这个词说明这是一个关系型数据库使用一系列的软件提供附加的支持比如事务,安全性和报表。

数据的连接出现在表之间的数据值的匹配中,在关系型数据库理论中,这个称为连接(Join)

比如员工表和员工部门表中都有一个部门ID的列,这就允许数据库回答这样的问题:这个员工工作的部门的部门名称是什么?

关系型的优势

  • 比其他类型更灵活
  • 允许业务逻辑迅速的接受条件改变
  • 数据驱动 vs 应用驱动
  • 模块化业务,而不是流程化
  • 使得更容易建立应用因为数据已经做了大量工作
  • 一个单独的数据拷贝可以为多种目的服务
  • 支持面向终端用户计算的趋势
  • 理解简单
  • 无需知道访问路径
  • 牢固的建立在集合论中

学完这一课,进度就完成了14.9%,别问我是怎么算出来的。

Teradata 认证系列 - 3. 关系型数据库的概念的更多相关文章

  1. Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念

    Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念 在学习redis之前我们先来学习两个概念,即什么是关系型数据库什么是非关系型数据库,二者的区别是什么,二者的关系又是什么? ** ...

  2. Teradata 认证系列 - 2. Teradata数据库总览

    Teradata (以下简称TD) 总览本课的学习目标 描述Teradata数据库产品的功能 知晓支持的操作系统 描述Teradata的并行架构 解释线性可扩展性 列出Teradata DBA永远不需 ...

  3. 关系型数据库基础概念:MySQL系列之开篇

    一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定 ...

  4. Teradata 认证系列 - 1. TCPP这是个啥

    一看历史,好几年没发帖...正好最近在自学teradata认证(学也不一定学的完,最后也不一定去考,仅仅安慰一下不想碌碌无为的内心) 网上一搜,百度上的中文相关资料简直为0.这个不奇怪,毕竟都没什么人 ...

  5. 关系型数据库基本概念及MySQL简述

    数据库基本概念">关系型数据库基本概念 数据库: 对大量信息进行管理的高效解决方案. 按照数据结构来组织.存储和管理数据的库. 数据库系统(DBS,DATABASE SYSTEM): ...

  6. mysql之数据库基本概念(mysql学习笔记一)

    数据库系统   数据库管理系统(DBMS)+数据库(DATABASE)(+数据库管理员) DBS=dbms+db 定义: 大量信息进行管理的高效解决方案,按照数据结构来组织.存储和管理数据的仓库 关系 ...

  7. 关系型数据库中主键(primary key)和外键(foreign key)的概念。

    刚接触关系型数据库的同学,会听过主键和外键的概念.这是关系型数据库的基本概念,需要清楚理解.今天我就以简洁的语言总结一下这个概念. 主键.一句话概括:一张表中,可以用于唯一标识一条记录的字段组(或者说 ...

  8. oracle配置数据库可恢复性(认证系列总结一)

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/10263246.html 接下来的n多天,将进入oracle认证系列的学习总结中,本该从asm ...

  9. Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用

    Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用 原创 2017-04-13 嘟嘟MD 嘟爷java超神学堂 前言 前面几章介绍了一些基础,但都是静 ...

随机推荐

  1. poi包的几行基本的设置单元格样式

    ——杂言:写过很多遍这段代码,今天姑且记录一下,便于翻阅. jar:poi-3.7.jar 注意:第8行应该调用cellStyle.setFillForeGroundColor(HSSFColor.G ...

  2. [bzoj2038]莫队算法学习

    解题关键:莫队最重要的是区间之间以$O(1)$的复杂度进行转化,由于电脑原因,后续补上公式推导. #include<cstdio> #include<cstring> #inc ...

  3. 5.5 Ubuntu无法访问windows上的文件

    比如,我的文件都放在win10桌面上的Tools文件夹中,那么在Ubuntu中访问如下:当然,sunny在点击这个磁盘时,遇到了没有访问权限的问题. 解决方案:参考网址http://blog.csdn ...

  4. python下一个转码的问题

    我想把一个quoted的字符串经过unquote处理后,打印出来.被unquote处理后的字串应该是utf-8的,因此还需要按照utf-8再做一次解码,代码如下:   import urllib im ...

  5. [Xcode 实际操作]四、常用控件-(6)UISwitch开关控件的使用

    目录:[Swift]Xcode实际操作 本文将演示开关控件的基本用法. 开关控件有两个互斥的选项,它是用来打开或关闭选项的控件. 在项目导航区,打开视图控制器的代码文件[ViewController. ...

  6. 在Python中使用asyncio进行异步编程

    对于来自JavaScript编码者来说,异步编程不是什么新东西,但对于Python开发者来说,async函数和future(类似JS的promise)可不是那么容易能理解的. Concurrency ...

  7. 帝都Day3——各种dp

    备注:Day1 Day2记得笔记太233,所以就不发了 备注2:Day4~Day7发不发看心情qaq (7.17持续更新中...) 动态规划A 记忆化搜索 & 动态规划初步 8点15: 杨姓d ...

  8. flask数据操纵

    Flask ORM 在Django框架中内部已经提供ORM这样的框架,来实现对象关系映射,方便我们操作数据库.如果想在Flask中也达到这样效果,需要安装一个第三方来支持. SQLAlchemy是一个 ...

  9. Java基础--正则表达式的规则

    注意:正则表达式只关注格式是否正确,不关注内容是否有效. 一.字符集合, []表示一个字符. 1.[abc] :指a,b,c中的任意一个字符. 2.[^abc]:指除了a,b,c外的任意字符. 3.[ ...

  10. JS键盘事件之键控Div

    自上次做的鼠标拖动Div之后,看到fgm.cc的例子,发现用键盘操控Div貌似也是十分有趣,这些DOM操作随着jquery的没落,虽然渐渐少用了,不过有些DOM操作还是必不可少的.现在是虽然数据为王( ...