数据库需求分析阶段详解
在《数据库设计步骤》一节我们介绍了设计数据库的基本步骤,下面将详细介绍需求分析阶段。
需求分析阶段的重点是调查、收集并分析客户业务的数据需求、处理需求、安全性与完整性需求。
常用的需求调研方法有在客户的公司跟班实习、组织召开调查会、邀请专人介绍、设计调查表并请用户填写和查阅与业务相关的数据记录等。
常用的需求分析方法有调查客户的公司组织情况,各部门的业务需求情况、协助客户分析系统的各种业务需求和确定新系统的边界。
无论数据库的大小和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基本步骤:
下面以酒店管理系统为例,我们需要了解酒店管理系统的具体功能,以及在后台数据库中保存的数据,如以下需求:
在系统中标识这些实体以后,与它们相关的实体就会条理清楚。以酒店管理系统为例,我们需要标识出系统中的主要实体。
注意:实体一般是名词,一个实体只描述一件事情,不能重复出现含义相同的实体。
数据库中每个不同的实体都拥有一个与之相对应的表,按照以上的酒店管理系统需求,在酒店管理系统数据库中,会对应至少两张表,分别是客房表和客人表。
下面以酒店管理系统为例,逐步分解每个实体的子成员信息,如下:
在进行实体属性分解时,含义相同的成员信息不能重复出现,如联系方式和电话等。
每个实体对应一张表,实体中的每个子成员分别对应表中的每一列。例如,从上述关系可以看出客人应该包含姓名和身份证号等列。
在设计过程中,要标识实体之间的关系,首先需要分析数据库表,确定这些表在逻辑上是如何相关的,然后添加关系列建立起表之间的连接。
以酒店管理系统为例,客人与客房有主从关系,我们需要在客房实体中标明其入住的客房号。
需求分析阶段的重点是调查、收集并分析客户业务的数据需求、处理需求、安全性与完整性需求。
常用的需求调研方法有在客户的公司跟班实习、组织召开调查会、邀请专人介绍、设计调查表并请用户填写和查阅与业务相关的数据记录等。
常用的需求分析方法有调查客户的公司组织情况,各部门的业务需求情况、协助客户分析系统的各种业务需求和确定新系统的边界。
无论数据库的大小和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基本步骤:
- 收集信息
- 标识实体
- 标识每个实体需要存储的详细信息
- 标识实体之间的关系
1. 收集信息
创建数据库之前,必须充分理解数据库需要完成的任务和功能。简单来说,就是要了解数据库中需要存储哪些信息(数据),实现哪些功能。下面以酒店管理系统为例,我们需要了解酒店管理系统的具体功能,以及在后台数据库中保存的数据,如以下需求:
- 酒店为客人准备充足的客房,后台数据库需要存放每间客房的信息,如客房号、客房类型、价格等。
- 客人在酒店入住时要办理入住手续,后台数据库需要存放客人的相关信息,如客人姓名、身份证号等。
2. 标识实体
在收集需求信息后,必须标识数据库要管理的关键对象或实体。实体可以是有形的事物,如人或产品,也可以是无形的事物,如商业交易、公司部门或发薪周期。在系统中标识这些实体以后,与它们相关的实体就会条理清楚。以酒店管理系统为例,我们需要标识出系统中的主要实体。
- 客房:单人间、标准间、三人间、豪华间和总统套房。
- 客人:入住酒店客人的个人信息。
注意:实体一般是名词,一个实体只描述一件事情,不能重复出现含义相同的实体。
数据库中每个不同的实体都拥有一个与之相对应的表,按照以上的酒店管理系统需求,在酒店管理系统数据库中,会对应至少两张表,分别是客房表和客人表。
3. 标识每个实体需要存储的详细信息
将数据库中的主要实体标识为表的候选实体以后,就要标识每个实体存储的详细信息,也称为该实体的属性,这些属性将组成表中的列。简单的说,就是需要细分出每个实体中包含的子成员信息。下面以酒店管理系统为例,逐步分解每个实体的子成员信息,如下:
- 客房:客房号、客房类型、客房状态、客房描述、床位数、入住人数、价格
- 客人:客人姓名、身份证号、客人编号、入住日期、结账日期、押金、总金额
在进行实体属性分解时,含义相同的成员信息不能重复出现,如联系方式和电话等。
每个实体对应一张表,实体中的每个子成员分别对应表中的每一列。例如,从上述关系可以看出客人应该包含姓名和身份证号等列。
4. 标识实体之间的关系
关系型数据库有一项非常强大的功能,即它能够关联数据库中各个项目的相关信息,不同类型的信息可以单独存储,但是如果需要,数据库引擎还可以根据需要将数据组合起来。在设计过程中,要标识实体之间的关系,首先需要分析数据库表,确定这些表在逻辑上是如何相关的,然后添加关系列建立起表之间的连接。
以酒店管理系统为例,客人与客房有主从关系,我们需要在客房实体中标明其入住的客房号。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算