数据库设计

数据库设计概述

数据库设计就是根据业务系统的具体需求,结合我们所选用的数据库,建立好表结构及表与表之间的管理关系,为这个业务系统构造出最优秀的数据存储模型的过程。使之能有效的对应用的数据进行存储,并高效的对已经存储的数据进行访问。

为什么要强调先设计再创建数据库和表呢?
在实际项目开发中,如果系统的数据存储量较大,设计的表较多,表与表之间的关系比较复杂,就必须先规范的设计数据库,然后再创建数据库、表等工作。

糟糕的数据库设计表现在以下几个方面:
访问数据效率低下
存在大量的数据冗余,浪费存储空间
更新和检索数据时会出现许多问题

良好的数据库设计表现在以下几方面:
访问效率高
减少数据冗余,节省存储空间,便于进一步扩展
可以使应用程序的开发变得更容易

数据库设计的基本步骤

在了解数据库设计步骤之前,我们先来了解一下软件项目的开发周期,如下:

需求分析
概要设计
逻辑设计/详细设计
代码编写
软件测试
安装部署

项目开始的第一步:都是根据客户需求去设计数据库
代码编写阶段:就是根据选择的数据库进行物理实现,编写代码实现应用

将数据库设计分为以下 6 个阶段:

  1. 需求分析
    本阶段的主要任务是对现实世界中要处理的对象进行详细调查,然后通过分析,逐步明确客户/用户对系统的需求,包括数据需求和业务处理需求。

  2. 概要设计
    概要设计是数据库设计的关键,通过综合、归纳与抽象用户需求,形成一个具体 DBMS 的概念模型,也就是绘制数据库的 E-R 图。(E-R 图主要用于在项目团队内部,设计人员和客户之间进行沟通,确认需求信息的正确性和完整性)

  3. 逻辑结构设计
    将 E-R 图转换为多张表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式进行审核,对其优化。

  4. 物理设计阶段
    经项目组开会讨论确定 E-R 图后,根据项目的技术实现,团队开发能力及项目的成本预算,选择具体的数据库(如 MySQL 或 Oracle 等)进行物理实现。

  5. 数据库实施阶段
    运用 DBMS 提供的数据语言(例如 SQL)、工具及宿主语言(例如 Java),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

  6. 数据库运行和维护阶段
    数据库应用系统经过试运行后即可投入正式运行。在运行过程中必须不断地对其进行评价、调整与修改。

数据库逻辑结构设计阶段

逻辑结构设计的任务是把概念结构设计阶段设计好的基本 E-R 图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

1、数据库表设计
数据库表是数据库中最基本的组成单元,它用于存储数据。

在设计时要认识各种键\码
键即是码,如主键=主码,外键=外码等等,因此以下都称为码。
①候选码:能够唯一标识一条记录的最小属性集合,注意最小最小最小,并且一张表中候选码不止一个。
②全码:当表中所有的属性共同构成一个候选码时,这时称该候选码为全码。
③主码:从若干个候选码中选择一个为主码,随你喜好,但是最好符合人类阅读习惯。
④外码:将本表(表1)中的某属性与另一张表(表2)中的主码关联在一起,则该属性称为外码。并且要注意,在为表1添加外码项数据时,添加的属性值必须是表2主码中属性值里有的值。

将ER实体图中每个强实体、弱实体的属性分列
分列过程是为了使表逐一符合第一范式、第二范式、第三范式、BC范式、第四范式、第五范式。
一般数据库设计只需符合第三范式就足够了。
①第一范式(1NF)要求:关系模型表中每列都是最基本的数据项,不可再分,每列中不能出现两个值。
②第二范式(2NF)要求:设置主码,关系模型中不存在非主属性对主码的部分依赖。
③第三范式(3NF)要求:关系模型中不存在非主属性对主码的传递依赖。

2、数据库视图设计
数据库视图是一种虚拟表,它由数据库中一个或多个表的数据组成,可以提供一种更加方便、简单、易于理解的数据访问方式。

3、数据库关系设计
数据库关系是指数据库表之间的关系,它用于描述不同表之间的数据联系和依赖关系。
(1)一对一关系
(2)一对多关系
(3)多对多关系
(4)继承关系设计

E-R 图向关系模型的转换

转换内容
关系模型的逻辑结构是一组关系模式的集合。
E-R 图是由实体型、实体的属性和实体型之间的联系三个要素组成的。
将 E-R 图转换为关系模型,实际上就是要将实体型、实体的属性和实体型之间的联系转化为关系模式。

转换原则
一个实体型转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码。

实体型间的联系有以下不同情况:
(1)一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
① 转换为一个独立的关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的候选码:每个实体的码
② 与某一端实体对应的关系模式合并
合并后关系的属性:加入对应关系的码和联系本身的属性
合并后关系的码:不变

(2)一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并
① 转换为一个独立的关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的码:n 端实体的码
② 与 n 端对应的关系模式合并
合并后关系的属性:在 n 端关系中加入 1 端关系的码和联系本身的属性
合并后关系的码:不变
可以减少系统中的关系个数,一般情况下更倾向于采用这种方法

(3)一个 m:n 联系转换为一个关系模式

(4)三个或三个以上实体间的一个多元联系转换为一个关系模式

(5)具有相同码的关系模式可合并
目的:减少系统中的关系个数
合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),适当调整属性的次序

小结

  • 设计一个完善的数据库应用系统,往往是上述 6 个阶段的不断反复。
  • 这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。
  • 在设计过程中把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。

数据库逻辑结构设计需要考虑:

  • 数据库表设计,包括表名、表字段、表字段类型、索引、主键、外键等。
  • 数据库视图设计,包括视图命名规范、视图字段设计、视图查询条件设计和视图权限设计。
  • 数据库关系设计,包括一对一关系、一对多关系、多对多关系和继承关系设计。
  • 需要根据业务需求设计相应的数据库逻辑结构。
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值