理论篇:基本概念和术语整理

一、关系数据库

          关系数据库是目前应用最为广泛的数据库系统,它采用关系数据模型作为数据的组织方式,关系数据模型由关系的数据结构,关系的操作集合和关系的完整性约束三部分组成。

二、关系数据库中的一些基本术语和定义

1、关系数据模型

关系数据模型是建立在严格的数学概念的基础上,由一组关系组成,每个关系的数据结构是一张严格规范化的二维表,简单说关系数据模型就是用二维表的形式来表示实体和实体间联系的数据模型。

二维表

简单说关系数据库中数据的主要存储形式是二维表,这种二维表具有严格的规则要求,表中每一列代表着关系数据库中的一个属性,每一列的名字就是一个属性名;每一行代表一个记录,即对应现实中的一个物理实体。其中,列称为属性或者字段,行被称为元组或者记录。

例:用户表
用户编号 用户名 密码 性别 年龄
001 url123 12345789 34
002 adm336 abcdefg 26

关系:一般说某个关系,即是指某张表。一个关系对应一张表。

元组:表中的某一行成为一个元组,一行即对应一个物理实体,元组就是物理实体的抽象。

属性:表中的一列即为一个属性,给每一列的命名即为属性名:如例表中的 用户名一列。

:即是指某一个属性的取值范围,属性的取值范围成为该属性的域,如:性别的取值为男/女;用户编号的域为一个三位数的整数。

关键字或者码(key):也称作码键,表中的某个属性组(多个属性组成,也可以为单个属性构成),它可以唯一确定一个元组,例表中用户编号可以唯一确定一个用户(即整个表中不存在与这行数据相同的另一行),关系数据库中通常称为主码或者主键。有时也会遇到不止一个属性能唯一确定一个元组的时候,所有可以唯一确定一个元组的属性统称为候选码,而主码是在候选码中选出,候选码包含主码。

分量:元组中某一个属性的属性值

关系模式:              一般的具体书面表示时,一个关系模式的表示形式为  : 关系名(属性1,属性2,属性3……),简记为:R(U)或者R(A1,A2,A3……)

R(U,D, dom ,F),R为关系名(表名),U是组成该关系的属性集合,D为属性的域,dom为属性向域的映像的集合。

术语对比
关系术语 表格称谓
关系名 表格名
关系 二维表(具体的一张)
元组 一条记录/表中的一行
属性 表中的列
属性名 列名
属性值 列中的取值
分量 一行中某个列的列值
非规范关系 表中表(表的嵌套)

2、关系数据模型的特点

①关系必须规范化:关系模式中每个关系都必须满足一定的要求。

②模型概念单一:关系数据模型的优点就是模型概念单一,无论具体的实体还是实体间的联系,都用简单的二维表来描述和表示,对数据的检索和操作结果也是关系(表),其数据结构简单清晰,便于理解  和操作。

③操作集合:在关系数据模式中,操作的对象和结果都是元组的集合,即关系(表)

总结:

关系数据模式建立在严格的数学概念基础上,其数据模型的概念单一(即表)。关系数据模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了专业人士的开发建立工作。

3、关系操作

关系操作的对象和结果都是集合,称为一次一集合的方式,而非关系数据模型的一次一记录数据操作方式。关系数据库中常用的数据操作包括:  查询操作(Query)和插入操作(Insert)、删除操作(Delete)、修改操作两大部分。具体见下图:

以上关系操作均为逻辑理论操作,在实际的数据库系统中,为了实现这些关系操作,我们可以使用一种关系代数和关系演算之间的语言SQL(结构化查询语言),SQL具有丰富的查询、数据定义、数据控制功能。Oracle中主要使用SQL*plus。

4、关系的完整性

实体完整性:若属性(一个或者一组)A为关系B的主属性,则A不能为空。简单的解释就是,一个表中的主键不能为空值,这里的主键包括单一属性的主键非空,和组合主键的属性组中属性均不能为空。

实体完整性是针对基本关系的,即一个表中的元组对应现实中的物理实体,而现实中的物理实体是可区分的,每个都是独立唯一的。而主键(主属性)则作为整个唯一的标识,主键为空,则表示存在不可标识的实体,这与理论矛盾,所以主键不能为空。

参照完整性:若属性(或属性组)F是基本关系R的外键,它与基本关系S的主键K相对应(即关系R引用关系S的主键为外键,其中S和R不一定是不同关系),则对于R中每个元组在F上的值必须为如下两种情况之一:空值(F中所有属性为空),等于S中某元组的主键。

外键:现实世界中,实体之间往往存在着某种联系,这些联系在关系数据库中都用关系来描述,这就存在着关系与关系间的引用:如果F是基本关系R的一个或一组属性,但不是R关系的主键,而K是基本关系S的主键,如果F与K相对应,则称F是R的外键(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S被称为被参照关系或目标关系。

关系S
用户名(主键) 密码 年龄
GMM123 123456 35
SST789 admin22 45
关系R
Id(主键) 用户名 职务
001 GMM123 老师
002 SST789 老师

例如上面两表,关系S中的用户名为关系S的主键,与R中的用户名属性对应,则用户名为关系R的外键。

用户自定义完整性:实体完整性和参照完整性是任何关系数据库都必须遵守的,除此以外,根据具体不同的情况和问题,往往需要一些额外的约束条件,具体为用户在定义关系时自己定义的。

5、关系数据库中的规范化理论

函数依赖:   设R(U)是属性集合U上的一个关系模式,X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不等,则称X函数确定Y或者Y依 赖于X,记作X→Y。

函数依赖的分类:

平凡函数依赖与非平凡函数依赖

完全函数依赖与部分函数依赖

传递函数依赖

范式理论:

 ①第一范式(1NF):如果关系模式R中每一个属性值都是一个不可分解的数据项,则称该关系模式满足第一范式,记为R∈1NF。(不可分割意思为单一属性,属性值必须为“原子”的)

 ②第二范式(2NF):在满足第一范式的前提下(即R∈1NF),且它的所有非主属性都完全函数依赖与R的任一候选键,则称该关系满足第二范式,即R∈2NF。

 ③第三范式(3NF):在满足R∈2NF的前提下,且所有非主属性,都不传递函数依赖于任何候选键,则R满足第三范式,即R∈3NF。

 ④BCNF范式(BCNF):对于一个关系模式R,如果对于每一个函数依赖X→Y,其中的决定因素X都含有键,则称关系模式R满足BCNF范式,即R∈BCNF。

通常认为BC范式是对第三范式的修正和扩展,BCNF的本质意义在于:其中每一个决定因素都是一个主键。或者说,在BCNF中除了候选键决定其所有属性或主键决定其所有属性之外,绝不会存在其他的非平凡函数依赖。

范式在数据库的设计中占有很大的比重,通过它可以优化数据库设计,避免一些问题,例如:减少数据的冗余,改进数据库整体组织,增强数据的一致性,增加数据库设计的灵活性。因此在数据库设计时,应根据实际情况,使关系模式满足适当的范式,使数据库设计更加规范

三、数据库设计

1、实体 - 关系模型(E - R)

实际具体设计中,我们需要将现实生活中的实际物体进行抽象化,转变成数学模型,进而转化为关系模型。

①实体(Entity):是E—R模型的基本对象,是现实世界中各种事务的抽象。简单点说就是对应着现实生活中确实存在的事务,例如:张三、李四具体的某个人,也可以是学生这个现实中的群体。

②属性(Attribute):实体的若干特征,即为实体的属性。例如,现实生活中学生会有学号这个特征,转化为关系中的学号属性。

③联系(Relationship): 实体之间会存在各种各样的关系与联系,例如老师和学生存在师生关系,一个语文老师可能是一个班所有学生的共同语文老师,而对于具体某个学生而言,他们只有一个语文老师,即一对多,和一对一。

一对一联系(1:1):对于实体集A和B来说,A中任意一个实体a,B中至多有一个实体b与之联系,反过来也是如此,则A与B就是一对一联系。

一对多联系(1:N):在实体集A中每一个实体a,B中有N个实体与之联系,对于实体集B中的每一个实体b,实体集A中至多有一个实体a与之联系,则A与B为一对多联系。

多对多联系(M:N):如果对于实体集A中每一个实体a,B中有N个实体与之对应,而且对于B中每个实体b,A中有M个实体与之对应,则A和B是多对多联系。

2、E—R图绘制

Oracle知识梳理(一)理论篇:基本概念和术语整理的更多相关文章

  1. Oracle知识梳理(三)操作篇:SQL基础操作汇总

    Oracle知识梳理(三)操作篇:SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:       CREATE TABLE  table_name ( col_ ...

  2. Jmeter 接口测试知识梳理——应用基础篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter 接口测试知 ...

  3. Jmeter 接口测试知识梳理——持续集成篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter + Ant ...

  4. Jmeter 接口测试知识梳理——环境搭建篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! 环境搭建篇 很多文章介绍 ...

  5. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

  6. PHP丨PHP基础知识之PHP基础入门——函数「理论篇」

    前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数! 一.函数的声明与使用 1.函数名是标识符之一,只能有数字字母下划线,开头不能是数字. 函数名的命名,须 ...

  7. PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

    昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...

  8. PHP丨PHP基础知识之条件语IF判断「理论篇」

    if语句是指编程语言(包括c语言.C#.VB.java.php.汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一. if语句概述 if语句是指编程语言(包 ...

  9. PHP丨PHP基础知识之条件语SWITCH判断「理论篇」

    Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择.以PHP来说,switch(开关语句)常和case break default一起使用 典型结构 switch($control ...

随机推荐

  1. 【第十九篇】laydate设置起始时间,laydate设置开始时间和结束时间

    laydate设置开始时间后,结束时间不可小于已选择的开始时间 laydate设置结束时间后,开始时间不可小于已选择的结束时间 //设置开始时间 var startDate = laydate.ren ...

  2. "共振式”项目管理

    "共振式”项目管理--是我第一个提出的吗?:) 脑子里突然想到项目管理的一些事情,然后想到项目其实是有节奏的,项目中的人员其实如果找到了这个节奏,踏准了节奏,一切将是顺风顺水. 刚准备动笔时 ...

  3. Sublime Text3 运行Python 出现Error:Decode error - output not utf-8

    问题描述: Sublime Text 3 在build Python时,如果python源代码输出有中文,例如"print('中文')",Sublime Text 会报 [Deco ...

  4. 南京邮电大学java程序设计作业在线编程第二次作业

    王利国的"Java语言程序设计第2次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60  1. 表达式9==8&&3<7的运算结果是( ) ...

  5. NSDateFormatter常见的使用方式

    NSDateFormatter是NSFormatter的子类,是用来表示输出的时间格式. 下面贴出两个时间的例子. 例子一. - (void)dateString1 { NSDateFormatter ...

  6. es6第一章 continue

    块级作用域 ES6内允许块级作用域任意嵌套 {{{{let insane = 'Hello World'}}}} 这段代码使用了一个五层的作用域. {{{{ {let c = ''hello worl ...

  7. Python更新pip出现错误解决方法

    Python更新pip出现错误解决方法 更新pip python -m pip install --upgrade pip 查看时报错 解决方法 在命令栏(即win+r)输入:easy_install ...

  8. javascript的基础(1)

    1.javascript是什么? 它是一门基于客户端的脚本语言,是相对于服务器而言,浏览器就是一个客户端软件,浏览器从服务器上将资源(html,css,js,图片等)请求下来 并且在本地利用浏览器去解 ...

  9. [AHOI 2016初中组]迷宫

    Description 小雪和小可可被困在了一个无限大的迷宫中. 已经知道这个迷宫有 N 堵环状的墙,如果把整个迷宫看作是一个二维平面,那么每一堵墙都是平面上一个圆.任意两个圆不相交,不重合,也不会相 ...

  10. ●POJ 1741 Tree

    题链: http://poj.org/problem?id=1741题解: 树上点分治. 入门题,不多说了. 代码: #include<cstdio> #include<cstrin ...