数据库基本概念(三)

一、数据库基本概念

1、关系数据库规范化理论

  为使数据库设计的合理可靠、简单实用,长期以来,形成了关系数据库设计理论,即规范化理论。

(1)函数依赖

  • 定义:在表1.1中,描述学生信息时,包括学生的学号、姓名、性别、专业、总学分和备注属性,由于一个学号对应一名学生,确定了学生学号,一名学生的姓名、性别、专业等属性也就确定下来,这说明学生姓名、性别、专业、总学分和备注对学生的学号有依赖性,在关系数据库中称为函数依赖。即:所谓函数依赖是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数 y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。  
  • 函数依赖的种类:
    1)完全函数依赖和部分函数依赖:

    完全函数依赖:在一个关系中,若某个非主属性数据项依赖于全部关键字称之为完全函数依赖。

    比如:有一个表,有如下属性:学生ID,学生姓名,所修课程ID,课程名称,成绩

    完全依赖:(学生ID,所修课程ID)→成绩

    成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。

    (学生ID,所修课程ID)→学生姓名

    部分依赖:学生ID→学生姓名

    学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

   2)平凡函数依赖和非平凡函数依赖

    平凡函数依赖:当关系中属性集合Y是属性集合X的子集时,存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。

    例如:在在关系学生课程表SC(学生号Sno,课程号 Cno,成绩 Grade)中,

    (Sno, Cno) → Sno ,(Sno, Cno) → Cno

    非平凡函数依赖:当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。

    例如:(Sno, Cno) → Grade

     3)传递函数依赖

    传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

    例:关系S1(学号,系名,系主任)

    学号 → 系名,系名 → 系主任,并且 系名 -\→ 学号,所以 学号 → 系主任 为传递函数依赖

(2)范式理论

  范式是数据库设计中一个重要的过程,通过它可以优化数据库设计,避免一些问题,可以减少数据冗余,可以改进数据库整体组织,可以增强数据的一致性,可以增加数据库设计的灵活性。因此,在确定设计数据库之前,还需对数据库中的表进行范式处理,以确保数据库遵从适当的范式,从而使设计的数据库更加规范。

  目前关系数据库有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和第六范式(6NF)。满足最低要求的是第一范式(1NF)。在第一范式的基础上满足更多要求的范式称为第二范式(2NF),其余的范式以此类推。一般来说,数据库只需要满足第三范式(3NF)即可。

  • 第一范式

  如果关系模式R的每个关系r的属性都是不可分的数据项,那么就称R是第一范式的模式。第一范式是设计数据库表的最低要求,其最主要的特点是实体的属性不能再分,映射到表中,就是列(或字段)不能再分。

  即:一个表中的列是不可再分的(即列的原子性)。

如表1.2,联系范式,对于学号‘1001’学生来说,‘联系方式’列包含电话和邮箱,可以再分,不符合第一范式要求。

  如表1.3,列不可再分,符合了第一范式要求。

  • 第二范式

  如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。

  如表1.3,姓名和选修课有对于关系,但是姓名和教材没有对应关系,选修课程和教材有对对应关系,从而该表不符合第二范式标准。

  将表修改后如表1.4和1.5,符合第二范式标准。

                       

  • 第三范式

  如果关系模式R是2NF,且关系模式R(U,F)中的所有非主属性对任何候选键都不存在传递依赖,则成关系R是属于第三范式的模式。

  如表1.6满足2NF,但是知道班级后必然能知道该学生 属于哪个系,所以存在传递依赖,不符合3NF规范,所以讲班级和系别属性拆分如表1.7,和1.8,从而符合3NF标准。


表1.6

学号 姓名 班级 系别
1001 张三 计算机科学与技术1班 计算机系
1002 李四 会计1班 经管系
表1.7
学号 姓名 班级
1001 张三 计算机科学与技术1班
1002 李四 会计1班
表1.8
班级 系别
计算机科学与技术1班 计算机系
会计1班 经管系

  三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。

 

原文地址:https://www.cnblogs.com/xhbJava/p/11080405.html

时间: 2024-11-06 16:02:50

数据库基本概念(三)的相关文章

Oracle数据库备份与恢复的三种方法

转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10. 有删改 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份. 导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去. 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的

学习笔记:MySQL数据库初步 概念

数据库 什么是数据库,数据库就是对大量信息进行管理的高效的解决方案,按照数据结构来组织.存储和管理数据的载体.而我们常说的数据库可以分为关系型和非关系型数据库. 关系型数据库 这里说的关系型数据库,是指基于关系型模型的数据库. 而 关系模型(对应)=二维表(对应)=现实世界的实体集 而实体集,如在一个教学科室里就起码有三个实体集,教师实体集,学生实体集 就是如要创一(教学科室)数据库,再创三个表(教师表.学生表) 用更容易理解的例子来说,比如 学生实体集=对应=学生二维表 某学生如小米=对应=表

数据库基本概念

一.数据库基本概念 动态网站开发离不开数据存储,数据存储离不开数据库,数据库技术是计算机技术中的重要部分,在软件开发等领域起着至关重要的作用. 所谓数据库,可以理解为用来存储信息的仓库.而信息就是要存储下来的一些数据,比如用户的姓名.年龄.产品的价格.简介,某一个日期时间甚至图像等等,总之一切可以在计算机中存储下来的数据都可以通过各种方法存储到数据库中,并且数据库也不仅仅是简单的仓库,他提供了一系列科学的存数据,取数据等等其他的管理措施. 比如我们要学习的MySQL数据库,信息并不是杂乱无章的直

VS2013 MFC ODBC连接SQL SERVER数据库编程(三)

VS2013 MFC ODBC连接SQL SERVER数据库编程(三) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 继上一篇讲完对数据库的链接以及一些说明之后,本文将实现对数据库的增删查改等操作. 如上图所示就是最终完成的一个简单的小程序. 首先添加列表框的NM_CLICK响应程序.鼠标放在列表框上,右键->添加事件处理程序,找到MN_CLICK消息,添加并编辑,如下图所示. 在响应函数里面添加如下代码: 这样就实现了,点

数据库表设计三范式

数据库设计三范式(nomorlization) 1NF:原子性,即每个字段都不可以在分割了. 2NF:唯一性,即每个表只描述一个实体,这个实体要有主键,非主关键字要完全依赖主键,正因为说是完全依赖,是因为在组合主键存在的情况下,非主关键字不能只依赖部分关键字. 3NF:一个表中不能包含其他表中已经存在的非主键字段信息,也就是说只可以包含其他表的主键信息,这样就是主外键,通过主外键就可以进行表之间的连接(join),3NF主要是减少数据冗余. 数据库表设计三范式,布布扣,bubuko.com

数据库基础概念

1.数据库基本概念名词 数据库(Database, DB) 数据库管理系统(Database Management System, DBMS) 数据库管理员( Database Administrator, DBA ) 数据库系统( Database System, DBS ) 2.关系型数据库 关系型数据库(Relationship Database, RDB) 关系型数据库管理系统(RDBMS) SQL语言(Structured Query Language) 使用关系模型的数据库语言,用于

【SQL server初级】数据库性能优化三:程序操作优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第三部分 数据库性能优化三:程序操作优化 概述:程序访问优化也可以认为是访问SQL语句的优化,一个好的SQL语句是可以减少非常多的程序性能的,下面列出常用错误习惯,并且提出相应的解决方案 一.操作符优化 1. IN.NOT IN 操作符 IN和EXISTS 性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS 代替IN . Not IN 不走索引的是绝对不能用的,可以用NOT EXISTS 代替 2. IS 

MySQL数据库的概念

学习数据库的一些知识,写写博客方便梳理以及巩固知识.关于什么是数据库就举一个例子来说明,说的可能不够准确,只要明白一个大概的意思就够了,深刻的学习还是要去看书的. 讲讲生活中有关数据的例子:在一个中学,记录学生的基本信息,记录什么呢?记录学生的姓名.年龄.故乡.传统的方法是在一张纸上画表格(见下面),然后填入相应的数据.那么一张这样的表就记录着一个班级中所有学生的姓名.年龄以及故乡.假设初一年级有10个班,初二年级有8个班,初三年级有15个班,那么初一年级就会有10张这样的表,初二年级就会有8张

数据库性能优化三:程序操作优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第三部分 数据库性能优化三:程序操作优化 概述:程序访问优化也可以认为是访问SQL语句的优化,一个好的SQL语句是可以减少非常多的程序性能的,下面列出常用错误习惯,并且提出相应的解决方案 一.操作符优化 1. IN.NOT IN 操作符 IN和EXISTS 性能有外表和内表区分的,但是在大数据量的表中推荐用EXISTS 代替IN . Not IN 不走索引的是绝对不能用的,可以用NOT EXISTS 代替 2. IS