`
罗春桉
  • 浏览: 16513 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

数据库入门之<范式概念解析>

阅读更多
                   基本范式概念解析

        范式:英文名称是 Normal Form,最早是由英国人 E.F.Codd在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。 目前有迹可寻的共有8种范式,依次是: 1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。 其中,最基本的三个范式是1NF,2NF,3NF。 

     
第一范式(1NF):        强调的是列的原子性,即列不能够再分成其他几列。
         如:订单表【订单编号,订单日期,客户编号,产品】。实际情况中,产品这一列(字段)可能包括多种产品(如:产品一,产品二,产品三)。那么,这种表结构设计就没有达到1NF的要求。要使之符合1NF则需将产品这一列拆开来,【订单编号,订单日期,客户编号,产品一,产品二,产品三】。



第二范式(2NF):
        在1NF的基础上。另外再包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。如:订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合
2NF。不符合 2NF 的设计容易产生冗余数据。 可以把【OrderDetail】表拆分为【OrderDetail】(OrderID,ProductID,Discount,Quantity)和
【Product】(ProductID,UnitPrice,ProductName)来消除原订单表中UnitPrice,ProductName多次重复的情况。



第三范式(3NF):
        在满足1NF、2NF的基础上。另外非主键列必须直接依赖于主键,不能存在传递依赖。即,不能存在:非主键A依赖于非主键B,非主键B依赖于主键的情况。如:
对于订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。但是,CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。


2NF关键点在于:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF关键点在于: 非主键列是直接依赖于主键,还是直接依赖于非主键列。

数据库设计过程:抽象出实体(确定其属性方法);确定对象间的关系(1-1,1-n,n-n);按照范式建表;
分享到:
评论

相关推荐

    <<Java数据库高级编程宝典>>配套光盘

    3. 数据库设计:涉及数据库模式设计,如ER模型、范式理论和索引策略。 4. 性能优化:如查询优化、连接池配置优化、数据库索引的创建和维护。 5. 处理大数据:了解批量插入、分页查询、大数据处理框架如Hadoop和...

    数据库设计范式简单入门

    本文将详细介绍数据库设计中的三种基本范式:第一范式(1NF)、第二范式(2NF)和第三范式(3NF),并结合实际案例进行解析。 #### 二、第一范式(1NF) ##### 定义 第一范式(1NF)是最基础的范式,所有关系数据库...

    ACCESS 数据库开发经典案例解析

    1. **数据库基础知识**:在开始案例解析之前,理解数据库的基本概念至关重要。包括数据模型(如关系型数据模型)、数据库设计(如ER模型、范式理论)以及SQL语言(用于查询、更新和管理数据)。 2. **数据库设计**...

    数据库入门PPT学习教案.pptx

    数据库入门学习教案主要介绍了数据库的基础概念、重要性以及基本操作,是初学者了解数据库系统的一份详实教程。以下是对这份PPT学习教案的主要内容的详细解析: 首先,数据库(Database)是一个组织和存储数据的...

    11111111111

    【标题】: "数据库基础与应用深度解析" 【描述】: "本压缩包包含一系列关于数据库的基础知识和深入应用的资料,旨在帮助学习者全面理解数据库的原理、设计与管理。通过学习,您将能够掌握如何创建、操作和优化...

    delphi7.0数据库编程及范例解析

    在《Delphi.7.0数据库开发入门与范例解析.pdf》中,你可以找到更详细的步骤指导和示例代码。配合《readme.txt》文件,了解作者的说明和建议,能更好地利用教程资源。 总的来说,这是一份针对DELPHI初学者的全面指南...

    PowerBuilder数据库开发入门与范例解析(光盘) 夏邦贵

    《PowerBuilder数据库开发入门与范例解析》是夏邦贵先生撰写的一本关于数据库开发的专著,尤其针对初学者提供了全面的指导。PowerBuilder是一款强大的数据库应用开发工具,以其可视化的设计界面和高效的DataWindow...

    VC6从入门到精通-VC与数据库管理.rar_VC6_Vc_vc 入门_从入门到精通_数据库管理

    此外,教程还会涉及数据库设计的概念,如关系模型、范式理论,这对于创建高效、稳定的数据库至关重要。你将学习如何设计表结构,设置主键和外键,以及如何优化数据库性能。 实践是提高编程技能的关键,所以教程中...

    精品数据库原理ppt课件

    通过这份课件,你可以快速入门,了解数据库的核心概念和应用。 在课件中,首先会介绍【关系数据库】的基本概念,这是目前最广泛使用的数据库模型。关系数据库基于关系模型,由若干个二维表格组成,每个表格代表一个...

    数据库系统(中)-战德臣

    首先,课件部分通常会涵盖数据库的基础理论,例如关系数据库模型、SQL语言、ER模型(实体关系模型)、数据库设计与规范理论(如范式理论)。战德臣教授可能会讲解如何使用关系代数进行查询操作,以及如何通过SQL进行...

    SQL+Server数据库开发经典实例精解

    《SQL Server数据库开发经典实例精解》是一本深入探讨SQL Server数据库开发的实用指南,旨在通过丰富的实例解析,帮助读者掌握SQL Server的核心技术和应用方法。本书涵盖了从基础操作到高级特性的广泛内容,旨在帮助...

    《数据库技术-Access及其应用系统开发》-李禹生

    在书中,作者首先讲解了数据库基础理论,包括数据模型(如实体-关系模型)、关系代数、数据库设计的范式理论(如第一范式、第二范式和第三范式),以及数据库系统的基本概念。这些理论知识为后续的数据库设计提供了...

    数据库学习PPT

    重点是关系数据库的规范化理论,如第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及BCNF(巴斯-科德范式),以及反规范化在特定场景下的应用。 5. **第七章完整性和安全性**:数据库完整性约束确保数据的...

    数据库系统教程(第3版)电子教案(第1章-第6章)

    本章讲解了数据库设计的基本原则和范式理论,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和巴斯-科德范式(BCNF)。讨论了数据冗余的危害及如何通过规范化消除冗余,提高数据完整性和减少更新异常。 第...

    数据库课件完整版(全部内容)

    3. **第1章 - 概述 - 第1讲 - sql.ppt**:这是关于SQL语言的入门,SQL是结构化查询语言,用于管理关系数据库,包括创建、查询、更新和删除数据。 4. **第6章 - 数据库应用系统设计.ppt**:此章节可能涵盖了数据库...

    INFORMIX数据库学习资料

    10. **IBM Informix SQL教程指南**: 作为初学者的教程,此文档可能以易于理解的方式介绍Informix SQL的基础知识,适合数据库新手入门学习。 通过这些详尽的资源,无论是初学者还是经验丰富的开发者,都能提升对...

    数据库讲稿PPT

    总之,这份"数据库讲稿PPT"全面涵盖了数据库的基本概念、设计、操作和优化,适合初学者作为入门教程,也对有一定基础的学习者提供了深入理解的框架。无论是自学还是课堂教学,都能从中受益匪浅。

    《数据库高级应用技术》授课计划-课程整体设计-教学计划-教学日历.doc

    课程名称《数据库高级应用技术》,课程归口软件技术教研室,主讲教师,学分学时为4学分、72学时,先修课包括《Java程序设计》、《软件框架技术》、《数据库入门原理》、《数据建模技术》,后续课为毕业实习,授课...

    mysql入门资料(最基础的资料)

    MySQL是世界上最受欢迎的开源数据库管理系统之一,尤其适合初学者入门学习。本文将深入解析MySQL的基础知识,帮助初学者建立扎实的数据库理论基础。 首先,我们要理解数据库系统的基本概念。数据库是一个组织和存储...

Global site tag (gtag.js) - Google Analytics