数据库设计的基本步骤及三范式的应用

文章目录

    • 1 数据库设计的重要性
    • 2 数据库设计的基本步骤
      • 2.1 需求分析
      • 2.2 标识对象(实体)并设计对象的属性
      • 2.3 确定对象之间的映射关系
    • 3 数据库设计合理性校验
      • 3.1 第一范式(1st NF)
      • 3.2 第二范式(2nd NF)
      • 3.3 第三范式(3rd NF)
      • 3.4 数据化模型设计
      • 3.5 三范式与数据库性能

1 数据库设计的重要性

糟糕的数据库设计会带来大量数据冗余和操作异常。
数据库设计的基本步骤及三范式的应用_第1张图片

设计良好的数据库:

  • 就好比货架有序摆放的商品一样,节省数据的存储空间。
  • 能够保证数据的完整性,方便进行数据库应用系统的开发。

2 数据库设计的基本步骤

2.1 需求分析

首先通过向客户调研,了解客户的实际需求;然后总结分析客户所需要的管理系统,究竟需要处理哪些数据。

以学员管理系统开发为背景,分析系统的基本功能:

  1. 学员信息管理模块:数据库中存放着学员的个人信息,需要对学员信息进行管理。
  2. 学员成绩管理模块:数据库中保存每次学员的考试成绩,需要对考试成绩进行分析。
  3. 学员班级管理模块:数据库中保存着学员的班级信息。
  4. 课程管理模块:数据库中存放着课程信息。

2.2 标识对象(实体)并设计对象的属性

要点:

  • 对象(实体)将来映射为数据库中的数据表。
  • 对象的属性,映射为数据表的字段。
  • 对象应该有唯一的标识(ID)。
    数据库设计的基本步骤及三范式的应用_第2张图片
    注意:
  • 需要设计多少个实体,取决于需求分析结果,以及设计人员的其他考虑。
  • 对于实体的多少,以及实体属性的确定,需要设计人员不断地根据需要修改。
  • 实体必须有唯一的标识,如果当前实体属性没有能够作为标识的,需要添加ID。
  • 实体设计的好坏,关系到后续系统的修改,应当力求做到完善。

2.3 确定对象之间的映射关系

要点:

  • 对象之间通过外键映射关系,减少数据冗余。
  • 对象之间的映射关系是通过对象唯一标识建立的。
  • 常见的对象映射关系有一对一和一对多或者多对多(课程和讲师)。

数据库设计的基本步骤及三范式的应用_第3张图片


3 数据库设计合理性校验

校验数据设计是否合理:

  • 表结构设计的合理是数据库设计的关键。
  • 能够避免数据冗余。
  • 能够解决数据库操作异常。
    数据库设计的基本步骤及三范式的应用_第4张图片
    数据库三范式原则:
    范式是具有最小冗余的表结构。

范式类型:

  • 第一范式(1st NF - First Normal Form)
  • 第二范式(2nd NF -Second Normal Form)
  • 第三范式(3rd NF - Third Normal Form)

应用三范式原则,可以保证各个数据表结构设计的合理性。

3.1 第一范式(1st NF)

第一范式:

  • 目标是确保每列的原子性(即不可再分的数据单元)。
  • 第一范式一般都能满足。
  • 常见的第一范式不满足情况:地址、姓名(有时分开使用)。

数据库设计的基本步骤及三范式的应用_第5张图片

3.2 第二范式(2nd NF)

第二范式要求每个表只描述一个实体的属性。

数据库设计的基本步骤及三范式的应用_第6张图片
上面的那张表描述了多个实体:
数据库设计的基本步骤及三范式的应用_第7张图片
如果一个关系满足了1NF,并且除了主键以外的其他列,都和主键列相关,则满足第二范式(2NF)。

我们需要应用第二范式将与主键不相关的列独立为单独的实体:
数据库设计的基本步骤及三范式的应用_第8张图片
思考:学员信息表设计的是否合理?

3.3 第三范式(3rd NF)

第三范式要求实体各属性之间不能有直接的依赖关系。

满足条件: 如果一个关系满足2NF,除了主键列之外,其他列之间都不具有直接的依赖关系,则满足第三范式。

数据库设计的基本步骤及三范式的应用_第9张图片
应用第二、第三范式时,为了保证实体之间存在必要的关系,我们需要将独立的实体和当前实体通过外键关联。

应用三范式数据表的变化:
数据库设计的基本步骤及三范式的应用_第10张图片

3.4 数据化模型设计

规范化以后使用Viso软件创建数据库模型。

数据库设计的基本步骤及三范式的应用_第11张图片

3.5 三范式与数据库性能

第三方式的应用后数据库的变化:

  • 使得实体被最大限度的分割成若干小实体。
  • 实体增多,同时将实体之间的关系变得复杂,数据分布在多个表中。
  • 数据的查询和统计将变得复杂,多表连接查询会适当降低查询性能。

为满足某种商业目标,数据库性能比规范化数据库更重要:

  • 在给定的表中添加额外的字段,可最大量减少需要从中搜索信息的所需时间。
    • 比如,在高考成绩中插入”成绩总分“列(改列其实冗余),以方便查询。

在进行规范化的同时,还需要综合考虑数据库的性能:

  • 三范式与数据库的性能需要根据实际要求权衡。
  • 根据实际需要增加或减少冗余列。

你可能感兴趣的:(C#)