`
z283464598
  • 浏览: 22925 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

数据库基础

阅读更多
一、基本概念:

实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。

二、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 12c数据库基础教程》教学课件—03Oracle数据库管理工具.pdf《Oracle...

    数据库基础与实践技术课件

    "数据库基础与实践技术课件"是一个全面介绍数据库基础知识和技术的资源集合,适合初学者和有一定经验的IT专业人士。以下是对这些课件内容的详细解读: 1. **SQL Server 2008基础**:这是数据库管理系统的基础部分,...

    MySQL数据库基础实例教程(第2版)教学大纲.pdf

    《MySQL数据库基础实例教程(第2版)》是一门针对软件技术、移动互联等相关专业设计的专业必修课程,旨在培养学生对数据库应用系统的开发、管理和维护能力。课程通过项目模拟和职业体验式学习,使学生在理论与实践中...

    Oracle数据库基础教程课后习题答案

    "Oracle数据库基础教程课后习题答案" Oracle数据库基础教程课后习题答案是《Oracle数据库基础教程》的配套习题答案,涵盖Oracle 10g的基础知识点。本资源对Oracle数据库的逻辑结构、物理结构、内存结构、事务处理...

    Oracle数据库基础教程[孙风栋等编著][习题解答

    本教程《Oracle数据库基础教程》由孙风栋等编著,旨在帮助初学者系统地理解和掌握Oracle数据库的基本概念、操作以及应用。 教程中的习题解答部分是学习过程中的重要辅助资料,它可以帮助读者检验自己的理解程度,...

    Access2010数据库基础教程教案.pdf

    "Access2010数据库基础教程教案" 本教程的主要目的是引导学生掌握Access2010数据库基础知识,了解数据库理论的基本概念、关系模型和关系运算、Access2010数据库的组成与特点、数据库设计原则、步骤和设计过程、SQL...

    Oracle10g数据库基础教程(孙凤栋)习题答案

    本教程《Oracle10g数据库基础教程》由孙凤栋主编,旨在为初学者提供全面、深入的Oracle数据库知识。教程内容涵盖数据库概念、SQL语言、数据库管理、表空间、索引、备份与恢复等多个核心主题。 一、数据库概念 ...

    数据库基础知识概述.pptx

    数据库基础知识概述 本篇资源摘要信息将对数据库基础知识进行概述,主要涵盖数据库的基本概念、组成、安装与系统结构、数据库及表的操作、日常使用与管理、语言、性能问题等方面。 数据库基础知识 数据库系统是指...

    数据库基础知识PPT

    数据库基础知识是IT领域中至关重要的一个部分,它涵盖了数据的组织、存储、管理和共享等多个方面。本篇将详细解析数据库的基础概念,包括数据处理、数据库、数据库管理系统(DBMS)和数据库系统(DBS),以及数据...

    数据库基础教程[顾韵华][课后习题解答]

    本教程“数据库基础教程[顾韵华][课后习题解答]”由专家顾韵华编著,提供了对数据库基础知识的深入理解和实践应用的指导。这份资料的价值在于其详尽的课后习题解答,帮助学习者巩固理论知识,提升解决问题的能力。 ...

    MySQL数据库基础实例教程(第2版)(微课版)-教学课件.zip

    MySQL数据库基础实例教程是针对初学者的一套系统性学习资源,尤其适合想要了解数据库管理和开发的人群。本教程分为多个章节,涵盖了从基础到进阶的各个关键领域,旨在通过实例教学来帮助学习者深入理解MySQL的核心...

    Access2010数据库基础教程教案.doc

    Access 2010数据库基础教程是针对计算机公共课的学生,旨在教授数据库的基本概念和实际操作技巧。在教学过程中,教师会引导学生了解信息、数据和数据处理的区别,以及数据库系统的基本构成,包括其特点和数据模型。...

    [Oracle11g数据库基础教程(第2版)][孙风栋][程序源代码]

    《Oracle11g数据库基础教程(第2版)》是由知名数据库专家孙风栋编著的一本关于Oracle数据库系统的入门教程。这本书旨在帮助初学者掌握Oracle11g的基本概念、安装配置、数据管理以及SQL查询语言等核心知识。源代码...

    数据库基础知识点介绍

    数据库基础知识点介绍: 数据库系统概述: 数据库系统是现代信息技术中不可或缺的一部分,它的发展起源于20世纪60年代末,随着计算机技术的进步而不断演进。数据库技术的出现不仅推动了计算机技术在各行各业的应用...

    数据库基础知识数据库基础知识.doc

    数据库基础知识数据库基础知识

    数据库基础概念 课件

    数据库是存储和组织数据的系统,它提供了高效的数据管理和访问机制。...理解和掌握这些概念对于理解数据存储和处理的本质至关重要,无论是开发人员还是数据分析人员,都需要扎实的数据库基础来支撑他们的工作。

    第1章 Oracle数据库基础

    根据给定的文件信息,我们需要关注标题“第1章 Oracle数据库基础”及其内容部分,尽管内容部分并不清晰连贯,但我们可以提炼出与Oracle数据库相关的基础知识点。 首先,Oracle数据库作为当今世界范围内广泛使用的...

    高中信息技术-数据库基础.pptx

    数据库基础(ACCESS) 育才中学 高中信息技术-数据库基础全文共14页,当前为第1页。 知识回顾 前面我们学习了怎样管理身边的信息,还知道如何通过搜索引擎去查找网络数据库得到自己需要的信息。 今天我们来认识一下...

Global site tag (gtag.js) - Google Analytics