关系数据库设计规范化流程

 
  1. 数据库表结构的设计关系到:数据库的存储效率、数据完整性、可扩展性及冗余数据。

     

    规范化:确保数据正确地分布到数据库的表中,防止操作异常及大量冗余信息的存储。数据冗余不仅占用物理空间,对数据的维护和一致性检查也带来了问题。

     

    范式及举例

     

    第一范式:【数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等】

     

    举例

    该数据库表是符合第一范式:

    字段1

    字段2

    字段3

    字段4

    ?

    ?

    ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
规范化数据库设计原则 摘要 IBM 为社区提供了 DB2 免费版本 DB2 Express-C,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。 关系数据库是当前广泛应用的数据库类型,关系数据库设计是对数据进行组织化和结 构化的过程,核心问题是关系模型的设计。对于数据库规模较小的情况,我们可以比较 轻松的处理数据库中的表结构。然而,随着项目规模的不断增长,相应的数据库也变得 更加复杂,关系模型表结构更为庞杂,这时我们往往会发现我们写出来的SQL语句的是很 笨拙并且效率低下的。更糟糕的是,由于表结构定义的不合理,会导致在更新数据时造 成数据的不完整。因此,就有必要学习和掌握数据库规范化流程,以指导我们更好的 设计数据库的表结构,减少冗余的数据,借此可以提高数据库存储效率,数据完整性 和可扩展性。本文将结合具体的实例,介绍数据库规范化流程。 序言 本文的目的就是通过详细的实例来阐述规范化数据库设计原则。在DB2中,简洁、结构 明晰的表结构对数据库设计是相当重要的。规范化的表结构设计,在以后的数据维护 中,不会发生插入(insert)、删除(delete)和更新(update)时的异常。反之,数 据库表结构设计不合理,不仅会给数据库的使用和维护带来各种各样的问题,而且可能 存储了大量不需要的冗余信息,浪费系统资源。 要设计规范化数据库,就要求我们根据数据库设计范式――也就是数据库设计的规范原 则来做。但是一些相关材料上提到的范式设计,往往是给出一大堆的公式,这给设计者 的理解和运用造成了一定的困难。因此,本文将结合具体形象的例子,尽可能通俗化地 描述三个范式,以及如何在实际工程中加以优化应用。 规范化设计和操作维护数据库时,关键的步骤就是要确保数据正确地分布到数据库的表中。 使用正确的数据结构,不仅便于对数据库进行相应的存取操作,而且可以极大地简化应 用程序的其他内容(查询、窗体、报表、代码等)。正确进行表设计的正式名称就是"数 据库规范化"。后面我们将通过实例来说明具体的规范化的工程。关于什么是范式的定义 ,请参考附录文章 1. 数据冗余 数据应该尽可能少地冗余,这意味着重复数据应该减少到最少。比如说,一个部门雇员 的电话不应该被存储在不同的表中, 因为这里的电话号码是雇员的一个属性。如果存在过多的冗余数据,这就意味着要占用 了更多的物理空间,同时也对数据的维护和一致性检查带来了问题,当这个员工的电话 号码变化时,冗余数据会导致对多个表的更新动作,如果有一个表不幸被忽略了,那么 就可能导致数据的不一致性。 规范化实例 为了说明方便,我们在本文中将使用一个SAMPLE数据表,来一步一步分析规范化过程 。 首先,我们先来生成一个的最初始的表。 "CREATE TABLE "SAMPLE" ( " ""PRJNUM" INTEGER NOT NULL, " ""PRJNAME" VARCHAR(200), " ""EMYNUM" INTEGER NOT NULL, " ""EMYNAME" VARCHAR(200), " ""SALCATEGORY" CHAR(1), " ""SALPACKAGE" INTEGER) " "IN "USERSPACE1"; " " " "ALTER TABLE "SAMPLE" " "ADD PRIMARY KEY " "("PRJNUM", "EMYNUM"); " " " "Insert into SAMPLE(PRJNUM, PRJNAME, EMYNUM, EMYNAME, SALCATEGORY," "SALPACKAGE) " "values(100001, 'TPMS', 200001, 'Johnson', 'A', 2000), (100001, " "'TPMS', 200002, " "'Christine', 'B', 3000), (100001, 'TPMS', 200003, 'Kevin', 'C', " "4000), (100002, " "'TCT', 200001, 'Johnson', 'A', 2000), (100002, 'TCT', 200004, " "'Apple', 'B', " "3000); " 表1-1 考察表1- 1,我们可以看到,这张表一共有六个字段,分析每个字段都有重复的值出现,也就是说 ,存在数据冗余问题。这将潜在地造成数据操作(比如删除、更新等操作)时的异常情 况,因此,需要进行规范化。 第一范式 参照范式的定义,考察上表,我们发现,这张表已经满足了第一范式的要求。 1、因为这张表中字段都是单一属性的,不可再分; 2、而且每一行的记录都是没有重复的;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值