C#基础之SQL Server(5)数据库的设计

(一)数据库设计的基本步骤

1) 数据库设计的重要性

  • 节省数据的存储空间;
  • 能够保证数据的完整性,方便进行数据库应用程序的开发;

2)基本步骤:

<1> 需求分析:
  • 通过调研,了解客户的实际需求;
  • 总结分析客户所需要的管理系统, 究竟要处理哪些数据;
    在这里插入图片描述
<2> 标识对象(实体)并设计对象的属性
  • 对象(实体)将来映射为数据库中的数据表;
  • 对象的属性,映射为数据表的字段;
  • 对象应该具有唯一的标识(ID);
    在这里插入图片描述
<3> 确定对象之间的映射关系:
  • 对象之间通过外键映射关系,减少数据冗余;
  • 对象之间的映射关系是通过对象唯一标识建立的;
  • 常见的对象映射关系有一对一和一对多或者多对多;
    在这里插入图片描述

(二)数据库的设计的检验与模型设计

1)数据库设计合理性检验:

  • 表结构设计的合理性是数据库设计的关键;
  • 能够避免数据冗余;
  • 能够解决数据库操作异常;
    在这里插入图片描述
注意:不能存在重复性的数据;

2)数据库三范式原则

  • 范式:是具有最小冗余的表结构;
  • 应用三范式原则,保证各个数据结构设计的合理性;
    在这里插入图片描述
<1> 第一范式(1st NF)
  • 第一范式:目标是确保每列的原子性(即不可再分的最小数据单元)
  • 第一范式一般都能满足;
  • 常见的第一范式不满足情况:地址、姓名(有时候需要分开);
    在这里插入图片描述
<2> 第二范式(2nd NF)【重点】
  • 第二范式:要求每个表只描述 一个实体的属性
例如:

在这里插入图片描述
在这里插入图片描述

  • 注意:如果一个关系满足1NF, 并且处理主键意外的其他列,都和主键列相关,则满足第二范式(2NF)
  • 应用第二范式将与主键不相关的列独立为单独的实体;在这里插入图片描述
<3> 第三范式(3rd NF)
  • 第三范式:要求实体各属性之间不能具有直接的依赖关系;
  • 满足条件:如果一个关系满足2NF,处理主键列之外,其他列之间都不具有直接的依赖关系,则满足第三范式;
    在这里插入图片描述
    在这里插入图片描述
注意:使用第二、第三范式的时候,为了保证实体之间存在必要的关系,往往需要将独立的实体和当前实体通过外键关联;
结果:

在这里插入图片描述

  • 规范化以后,使用Viso 软件创建数据库模型,之后按照数据库模型,实现数据库:
    在这里插入图片描述

3)三范式与数据库性能

<1> 第三范式的应用后数据库的变化
  • 使得实体被最大限度的分割成为若干小实体;
  • 实体增多,同时实体之间的关系变得复杂,数据分布在多个表中;
  • 数据的查询和同价变得复杂,多表连接查询会适当减低查询性能;
<2> 为满足某种商业目标,数据库性能比规范数据库更重要
  • 在给定的表中添加额外的字段,可大量减少需要从中搜索信息所需时间;
  • 比如,在高考成绩中插入“成绩总分”列,方便查询;
<3> 进行规范化的同时,还需要综合考虑数据库的性能
  • 三范式与数据库的性能要根据实际要求权衡;
  • 根据实际需要增加或减少冗余;
发布了66 篇原创文章 · 获赞 2 · 访问量 6673

猜你喜欢

转载自blog.csdn.net/forever_008/article/details/104142845