一、基本概念:
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
二、6个范式
好了,上面已经介绍了我们掌握范式所需要的全部基础概念,下面我们就来讲范式。首先要明白,范式的包含关系。一个数据库设计如果符合第二范式,一定也符合第一范式。如果符合第三范式,一定也符合第二范式…
第一范式(1NF):属性不可分。
在前面我们已经介绍了属性值的概念,我们说,它是“不可分的”。而第一范式要求属性也不可分。那么它和属性值不可分有什么区别呢?给一个例子:
name tel age
大宝 13612345678 22
小明 13988776655 010-1234567 21
Ps:这个表中,属性值“分”了。
name tel age
手机 座机
大宝 13612345678 021-9876543 22
小明 13988776655 010-1234567 21
Ps:这个表中,属性 “分”了。
这两种情况都不满足第一范式。不满足第一范式的数据库,不是关系数据库!所以,我们在任何关系数据库管理系统中,做不出这样的“表”来。
第二范式(2NF):符合1NF,并且,非主属性完全依赖于码。
听起来好像很神秘,其实真的没什么。
一 个候选码中的主属性也可能是好几个。如果一个主属性,它不能单独做为一个候选码,那么它也不能确定任何一个非主属性。给一个反例:我们考虑一个小学的教务 管理系统,学生上课指定一个老师,一本教材,一个教室,一个时间,大家都上课去吧,没有问题。那么数据库怎么设计?(学生上课表)
学生 课程 老师 老师职称 教材 教室 上课时间
小明 一年级语文(上) 大宝 副教授 《小学语文1》 101 14:30
一个学生上一门课,一定在特定某个教室。所以有(学生,课程)->教室
一个学生上一门课,一定是特定某个老师教。所以有(学生,课程)->老师
一个学生上一门课,他老师的职称可以确定。所以有(学生,课程)->老师职称
一个学生上一门课,一定是特定某个教材。所以有(学生,课程)->教材
一个学生上一门课,一定在特定时间。所以有(学生,课程)->上课时间
因此(学生,课程)是一个码。
然而,一个课程,一定指定了某个教材,一年级语文肯定用的是《小学语文1》,那么就有课程->教材。(学生,课程)是个码,课程却决定了教材,这就叫做不完全依赖,或者说部分依赖。出现这样的情况,就不满足第二范式!
有什么不好吗?你可以想想:
1、校长要新增加一门课程叫“微积分”,教材是《大学数学》,怎么办?学生还没选课,而学生又是主属性,主属性不能空,课程怎么记录呢,教材记到哪呢? ……郁闷了吧?(插入异常)
2、下学期没学生学一年级语文(上)了,学一年级语文(下)去了,那么表中将不存在一年级语文(上),也就没了《小学语文1》。这时候,校长问:一年级语文(上)用的什么教材啊?……郁闷了吧?(删除异常)
3、校长说:一年级语文(上)换教材,换成《大学语文》。有10000个学生选了这么课,改动好大啊!改累死了……郁闷了吧?(修改异常)
那应该怎么解决呢?投影分解,将一个表分解成两个或若干个表
学生 课程 老师 老师职称 教室 上课时间
小明 一年级语文(上) 大宝 副教授 101 14:30
学生上课表新 课程 教材
一年级语文(上) 《小学语文1》
课程的表 第三范式(3NF):符合2NF,并且,消除传递依赖
上面的“学生上课表新”符合2NF,可以这样验证:两个主属性单独使用,不用确定其它四个非主属性的任何一个。但是它有传递依赖!
在哪呢?问题就出在“老师”和“老师职称”这里。一个老师一定能确定一个老师职称。
有什么问题吗?想想:
1、老师升级了,变教授了,要改数据库,表中有N条,改了N次……(修改异常)
2、没人选这个老师的课了,老师的职称也没了记录……(删除异常)
3、新来一个老师,还没分配教什么课,他的职称记到哪?……(插入异常)
那应该怎么解决呢?和上面一样,投影分解:
学生 课程 老师 教室 上课时间
小明 一年级语文(上) 大宝 101 14:30
老师 老师职称
大宝 副教授
BC范式(BCNF):符合3NF,并且,主属性不依赖于主属性
若关系模式属于第一范式,且每个属性都不传递依赖于键码,则R属于BC范式。
通常
BC范式的条件有多种等价的表述:每个非平凡依赖的左边必须包含键码;每个决定因素必须包含键码。
BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足BC范式的关系都必然满足第三范式。
还可以这么说:若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式。
一般,一个数据库设计符合3NF或BCNF就可以了。在BC范式以上还有第四范式、第五范式。
第四范式:要求把同一表内的多对多关系删除。
第五范式:从最终结构重新建立原始结构。
分享到:
相关推荐
《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...
《MySQL数据库基础实例教程(第2版)》课程作为专业必修课,不仅涵盖了数据库的基础理论知识,还注重实践技能的培养,确保学生能够胜任未来职业岗位的需求。 ### 数据库基础知识 课程的第一部分聚焦于数据库的基础...
"数据库基础与实践技术课件"是一个全面介绍数据库基础知识和技术的资源集合,适合初学者和有一定经验的IT专业人士。以下是对这些课件内容的详细解读: 1. **SQL Server 2008基础**:这是数据库管理系统的基础部分,...
本教程《Oracle数据库基础教程》由孙风栋等编著,旨在帮助初学者系统地理解和掌握Oracle数据库的基本概念、操作以及应用。 教程中的习题解答部分是学习过程中的重要辅助资料,它可以帮助读者检验自己的理解程度,...
本教程《Oracle10g数据库基础教程》由孙凤栋主编,旨在为初学者提供全面、深入的Oracle数据库知识。教程内容涵盖数据库概念、SQL语言、数据库管理、表空间、索引、备份与恢复等多个核心主题。 一、数据库概念 ...
数据库基础知识概述 本篇资源摘要信息将对数据库基础知识进行概述,主要涵盖数据库的基本概念、组成、安装与系统结构、数据库及表的操作、日常使用与管理、语言、性能问题等方面。 数据库基础知识 数据库系统是指...
数据库基础知识是IT领域中至关重要的一个部分,它涵盖了数据的组织、存储、管理和共享等多个方面。本篇将详细解析数据库的基础概念,包括数据处理、数据库、数据库管理系统(DBMS)和数据库系统(DBS),以及数据...
本教程“数据库基础教程[顾韵华][课后习题解答]”由专家顾韵华编著,提供了对数据库基础知识的深入理解和实践应用的指导。这份资料的价值在于其详尽的课后习题解答,帮助学习者巩固理论知识,提升解决问题的能力。 ...
MySQL数据库基础实例教程是针对初学者的一套系统性学习资源,尤其适合想要了解数据库管理和开发的人群。本教程分为多个章节,涵盖了从基础到进阶的各个关键领域,旨在通过实例教学来帮助学习者深入理解MySQL的核心...
《Oracle11g数据库基础教程(第2版)》是由知名数据库专家孙风栋编著的一本关于Oracle数据库系统的入门教程。这本书旨在帮助初学者掌握Oracle11g的基本概念、安装配置、数据管理以及SQL查询语言等核心知识。源代码...
本文将根据提供的“Access2010数据库基础教程教案.pdf”,深入解析Access2010的数据库基础理论与操作实践。 首先,我们要了解数据库基础理论。在信息时代,信息、数据处理的定义与重要性不言而喻。数据库系统作为一...
数据库基础教程电子版 数据库基础教程是数据库系统的基础知识教程,涵盖了数据库系统的发展、数据库管理系统的结构、数据库模型的发展、数据库设计等重要知识点。本资源摘要信息为数据库基础教程电子版的知识点总结...
数据库基础知识点介绍: 数据库系统概述: 数据库系统是现代信息技术中不可或缺的一部分,它的发展起源于20世纪60年代末,随着计算机技术的进步而不断演进。数据库技术的出现不仅推动了计算机技术在各行各业的应用...
.oracle 11g 数据库基础教程第 2 版重要知识点总结 以下是 oracle 11g 数据库基础教程第 2 版重要知识点总结的知识点: 第一章 Oracle 11g 数据库安装与配置 * Oracle 11g 数据库安装步骤 * Oracle 11g 数据库...
数据库基础知识数据库基础知识
数据库是存储和组织数据的系统,它提供了高效的数据管理和访问机制。...理解和掌握这些概念对于理解数据存储和处理的本质至关重要,无论是开发人员还是数据分析人员,都需要扎实的数据库基础来支撑他们的工作。
根据给定的文件信息,我们需要关注标题“第1章 Oracle数据库基础”及其内容部分,尽管内容部分并不清晰连贯,但我们可以提炼出与Oracle数据库相关的基础知识点。 首先,Oracle数据库作为当今世界范围内广泛使用的...