II、范式应用实例剖析
下面以一个学校的学生系统为例分析说明,这几个范式的应用。首先第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型 构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些 DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。
首先我们确定一下要设计的内容包括那些。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等信息。为了简单我们暂时只考虑这些字段信息。我们对于这些信息,说关心的问题有如下几个方面。
- 学生有那些基本信息
- 学生选了那些课,成绩是什么
- 每个课的学分是多少
- 学生属于那个系,系的基本信息是什么。
2.1 第二范式(2NF)实例分析
首先我们考虑,把所有这些信息放到一个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下面存在如下的依赖关系。
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
(课程名称) → (学分)
(学号,课程)→ (学科成绩)
2.1.1 问题分析
因此不满足第二范式的要求,会产生如下问题
数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。
更新异常:
1)若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。
2)假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。
删除异常 : 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。
2.1.2 解决方案
把选课关系表SelectCourse改为如下三个表:
- 学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话);
- 课程:Course(课程名称, 学分);
- 选课关系:SelectCourse(学号, 课程名称, 成绩)。
2.2 第三范式(3NF)实例分析
接着看上面的学生表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话)
但是还存在下面的决定关系
(学号) → (所在学院)→(学院地点, 学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
它也会存在数据冗余、更新异常、插入异常和删除异常的情况。 (數據的更新,刪除異常這里就不分析了,可以參照2.1.1進行分析)
根据第三范式把学生关系表分为如下两个表就可以滿足第三范式了:
学生:(学号, 姓名, 年龄, 性别,系别);
系别:(系别, 系办地址、系办电话)。
总结
上面的数据库表就是符合I,II,III范式的,消除了数据冗余、更新异常、插入异常和删除异常。
相关推荐
### 数据库设计三大范式应用实例剖析 #### 引言 数据库的设计范式是指一系列用于指导数据库设计的规范化准则,其目的是确保数据的完整性、减少数据冗余,并提高数据库的操作效率。遵循这些范式可以避免在数据库...
数据库设计三大范式应用实例剖析 数据库设计是软件开发中的一个重要步骤,它直接关系到软件系统的性能和可维护性。数据库设计的质量如何?关键就在于是否满足数据库设计的范式。数据库设计范式是数据库设计所需要...
"数据库设计三大范式应用实例剖析" 数据库设计是数据库系统的核心部分,直接影响着数据库的性能、安全性和可维护性。数据库设计的目的是为了使数据库系统满足某些标准,使得数据库系统更加简洁、明晰、易于维护和...
### 数据库设计三大范式应用实例剖析 #### 引言 数据库设计的规范性对于确保数据的完整性和一致性至关重要。数据库设计范式是一系列规则,它们帮助开发者创建出既高效又易于维护的数据模型。遵循这些规范能有效...
【计算机等考三级数据库基础:数据库设计三大范式应用实例剖析】 数据库设计是构建高效、稳定、易维护的信息系统的基础,而三大范式——第一范式(1NF)、第二范式(2NF)和第三范式(3NF)是确保数据库设计规范的...
这三个范式分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 **第一范式(1NF)**要求数据库表中的每个字段都是单一属性,不可再分。这意味着每个字段的数据类型是基本的,如整型、字符串、日期等。例如...
数据库设计的三大范式——第一范式(1NF)、第二范式(2NF)和第三范式(3NF)——是构建高效、无冗余、易于维护的数据库的基础。它们确保了数据的一致性和完整性,避免了数据异常,如插入异常、删除异常和更新异常...
数据库范式(实例分析) 数据库范式是关系数据库设计中的一种规范化方法,旨在消除数据冗余,减少数据之间的依赖关系,提高数据的一致性和完整性。在本文中,我们将通过一个“交易订单”实例来分析范式的概念和作用...
数据库设计三大范式的应用实例剖析,数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。...
本文将深入探讨第三范式,并通过具体的案例分析来帮助理解其应用。 第三范式(3NF)是由艾尔弗雷德·诺尔(E.F. Codd)在1971年提出的,它是基于关系数据库模型的一种规范化形式。3NF的主要目标是消除非主属性对...
这些范式主要包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及更高层次的鲍依斯-科得范式(BCNF)。以下是对这些范式的详细解释: **第一范式(1NF)**: 1NF要求数据库表的每个字段都是不可再分的单一...
工业经济结构的演化是社会演化的重要组成部分,对其细致的分析能够充分展示新研究范式的应用价值。通过对工业经济结构的演化过程和分形生长特征的分析,不仅能够验证新研究范式的科学性和合理性,也能够为我们理解和...
在本文中,研究者以东江流域为案例,展示了分布式水文模拟方案构建范式在实际应用中的有效性。通过实证研究,证明了该方法在洪水预报中的应用价值。东江流域DEM的分析及与模拟河网分布的比较,为流域空间分析提供了...
数据库范式是数据库设计中...这些文档可能包含了范式的详细解释、实例分析以及个人见解,对面试准备和实际工作都有极大的帮助。通过学习和实践,你可以更好地掌握数据库设计的核心原则,为你的职业生涯打下坚实的基础。
在"讲义"文件夹中,可能包含了课件、案例分析和习题解答,这些都是深入理解和掌握编程范式的关键。通过阅读和实践,学生可以学习到如何在实际项目中应用各种编程范式,例如使用函数式编程实现无副作用的计算,通过...