数据库设计的一般步骤

article/2025/10/13 15:32:09

经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。

一、数据库设计的步骤

(1)了解功能需求
在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书,与项目相关人员(比如项目经理、客户等)进行充分沟通。

(2)定义实体
了解系统功能需求之后,设计人员通过分析系统功能定义出系统有哪些实体。比如:到酒店开房。这里应该至少包含两个实体:客人和房间。
在定义出实体以后,我们还要定义实体的属性。例如:
客人:姓名、性别、手机号码、证件号码、证件类型(身份证、驾驶证、通行证等等)…
房间:房号、房间类型(单人房、双人房、豪华房等等)、入住时间、离开时间、房间状态(已入住、未入住)…

(3)绘制E-R图
定义好实体之后,接下来我们应该根据实体以及实体之间的关系绘制出E-R图。比如:
在这里插入图片描述
长方形代表实体,椭圆形代表实体的属性,菱形代表实体之间的关系。

(4)把E-R图转换成模型
绘制出E-R图之后,我们需要根据它来构建物理模型。构建物理模型可以使用一些工具,比如目前比较流行的PowerDesigner。
在这里插入图片描述
(5)检查模型
完成模型设计后,我们还要检查模型是否满足第三范式的要求。如果不满足就需要重新对模型进行修正,直到满足第三范式的要求为止。

比如说,上面的模型并没有满足第三范式的要求。因为customer和room这两个表都存在一些与该表没有直接关系的字段。如果要满足第三范式要求,就需要把模型修改为:
在这里插入图片描述
上面模型增加了三个表,分别是identity_type(证件类型表)、register(入住登记表)、room_type(房间类型表),经过对模型的修正后,已经满足第三范式的要求。

(5)根据模型定义数据库
不同数据库的SQL命令可能会有小小差别。比如我们这里使用了MySQL数据库。

定义数据库的命令:DDL

#创建数据库
create database 数据库名;#删除数据库
drop database 数据库名;#查询数据库
show databases;#选定数据库
use 数据库名;#创建表
create table 表名 (列名 数据类型 [primary key] [auto_increment],列名 数据类型 [not null] [unique] [default '默认值'] [comment '字段说明'],列名 数据类型 [not null] [unique] [default '默认值'] [comment '字段说明'],...[constraint 外键名 foreign key(外键列) references 表名(主键列) [on update|delete cascade]]
);#删除表
drop table 表名;

下面根据模型定义数据库:

#创建数据库
create database hotel;#查询数据库
show databases;#选定数据库
use hotel;#证件类型表
create table identity_type (identity_type_id int primary key auto_increment, identity_type_name varchar(50) not null comment '证件类型名称'
);#客人表
create table customer (cust_id int primary key auto_increment,cust_name varchar(255) not null unique default '' comment '客人名称',mobile varchar(11) default '' comment '手机号码',identity_num varchar(50) not null unique default '' comment '证件号码',identity_type_id int not null comment '外键列,引用证件类型表',constraint fk_cust_identity_type foreign key(identity_type_id) references identity_type(identity_type_id)
);#房间类型
create table room_type (room_type_id int primary key auto_increment, room_type_name varchar(50) not null comment '房间类型名称'
);#房间
create table room (room_id int primary key auto_increment, room_num varchar(10) not null comment '房号',room_type_id int not null comment '外键列,引用房间类型表',status int not null comment '房间状态,1代表未入住,2代表已入住',constraint fk_room_type foreign key(room_type_id) references room_type(room_type_id)
);#入住登记表
create table register (cust_id int not null comment '外键,引用客人表',room_id int not null comment '外键,引用房间表',in_time datetime not null comment '入住时间',out_time datetime comment '离开时间',constraint fk_register_cust foreign key(cust_id) references customer(cust_id),constraint fk_register_room foreign key(room_id) references room(room_id)
)

至此,数据库设计阶段的任务已经完成。

二、总结

数据库设计其实并不难,本人觉得比较难的地方在于开始的分析阶段。就是如何根据客户需求把数据库里面的实体,以及实体之间的关系分析出来。所以,在数据库设计阶段,我们应该把重点放在业务需求的分析上,准确把握客户的需求,这样才能够设计出一套比较好的数据库。


http://chatgpt.dhexx.cn/article/uQnunAVQ.shtml

相关文章

9.数据库设计

数据库设计 1、数据库设计概述 数据库设计。广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库, 这是数据库应用系统设计的一…

数据库设计-概念结构设计

文章目录 数据库设计概念设计结构概念结构设计ER模型的基本元素实体/实体集属性区别实体和属性联系 二元联系的关系1:11:nm:n 一元联系1:11:nm:n 三元联系 采用ER模型的概念设计设计局部ER模型例题设计全局ER模型全局ER模型的优化 数据库设计 数据库设计:构造最优的…

数据库设计—图书管理数据库系统设计

如下代码供学习交流,获取完整代码,请关注公众号(coding加油站)获取 1、项目简介 图书馆数据库,该项目同时提供pythonweb可视化展示界面,也可提供相关报告数据,可以用来作为数据库系统设计的期…

数据库设计(一)——数据库设计

一、数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段: A、系统需求分析阶段 B、概念结构设计阶段 C、逻辑结构设计阶段 D、物理结构设计阶段 E、数据库实施阶段 F、数据库运行与维护阶段 需求分析和概念结构设计独立于任何数据库管理系统…

数据库设计的六个基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,可将数据库设计分为以下6个阶段,分别为:1.需求分析,2.概念结构设计,3.逻辑结构设计,4.物理结构设计,5.数据库实施&#xff0c…

数据库设计(一)

目录 数据库设计的基本概念: 数据库设计包括以下几个部分: 需求设计: 1、数据: 2、处理: 概念结构设计: 实体: 例如: 联系类型: 1、一对一: 2、一对多&a…

数据库:数据库设计(需求,设计,运行,维护)

1,数据库设计概述 1.1,数据库设计的基本概念 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据&…

数据库系统-数据库设计

数据库系统-数据库设计 数据库设计概述及六步骤简介 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。 数据库设计的特点 数据库设计是一…

学生成绩管理系统数据库设计--MySQLSQL Server

MySQL 数据库设计-学生成绩管理系统 设计大纲友情链接 1、医疗信息管理系统数据库–MySQL2、邮件管理数据库设计–MySQL3、点餐系统数据库设计–SQL Server4、商品管理系统数据库设计–SQL Server5、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Ma…

数据库设计-网上书店系统

一、需求分析 1.1 用户分析 网上书店系统的使用者主要有三种:普通用户、会员和管理员。 普通用户:浏览图书、查询图书、注册成为会员等; 会员:浏览图书、查询图书、加入购物车、修改购物车、订购图书、生成及查看订单、查看修改…

数据库设计

数据库设计 一.数据库设计概述1.数据库设计的特点2.数据库设计方法3.数据库设计的基本步骤4.数据库设计过程中的各级模式 二.需求分析1.需求分析的任务2.需求分析的方法3.数据字典 三.概念结构设计1.概念模型2.E-R模型3.概念结构设计 一.数据库设计概述 ①数据库设计是指对于一…

机器学习之PCA

一、PCA基本介绍 PCA(Principal Components Analysis)-主成分分析算法 用于数据降维、可视化、去噪非监督学习算法 二、PCA工作原理 目标:每次将空间中多维的样本点映射到一条直线上(要保证样本点之间的间距最大,用方差衡量,即保…

PCA9536——填坑

0. 问题 使用PCA9536输出模式控制4个小灯,开始时候按几次就不显示了,以为是接线不稳定原因。 后来一按开机电源就不显示了,以为是其他器件电源不稳定导致。 1. 问题1排除 接线问题,重新接线,重新做端子,…

sklearn PCA

sklearn.decomposition.PCA class sklearn.decomposition.PCA(n_componentsNone, *, copyTrue, whitenFalse, svd_solverauto, tol0.0, iterated_powerauto, random_stateNone)官方:link PCA是特征降维中一种 线性降维 的方法。 与特征选择不同(直接筛…

使用PCA对彩色图片降维

PCA对图片降维 1.原图片2.PCA降维思路3.代码4.k5效果图5.结论 1.原图片 2.PCA降维思路 1、小灰灰图片(407,367)2、求图片407行每行的均值mean,再将407行每行元素各自减去对应行的均值mean,即去中心化。得矩阵X&#xf…

使用PCA拟合平面

PCA原理&使用PCA拟合平面 背景三点确定一平面多点拟合平面基础数学知识PCA基本思想PCA拟合平面计算过程 PCA理解中心化协方差对角化 背景 本文参考以下两篇平面解析的论文。 《Fast Plane Extraction in Organized Point Clouds Using Agglomerative Hierarchical Cluster…

Dynamic inner PCA 和 Dynamic PCA

动态PCA方法的核心思想: 将数据X变成增广矩阵,即: l为潜在变量数,然后对X进行传统的PCA方法进行求解,即是动态PCA的结果。 动态内模PCA与之不同,上述动态PCA的一大缺陷是增加了数据的维度,而动…

python实现PCA

★ PCA个人理解: PCA降维是通过变换坐标系,来尽可能的减少信息损失。 ★ PCA思路: 我们的初始矩阵为X,它是mn维的矩阵,其中:m是该数据集有m条记录,n是每条记录中有n个特征,X的基本格…

PCA降维算法

目录 1.维度1.1数据维度1.2特征维度 2.sklearn中的降维算法2.1PCA与SVD2.2降维的实现2.3重要参数n_components2.3.1最大似然估计自选超参数2.3.2 按信息量占比选超参数 3.PCA中的SVD3.1重要参数svd_solver 与 random_state3.2重要属性components_3.3重要接口inverse_transform …

PCA降维

一、主成分分析 1、动机:多个变量之间往往存在一定的相关性,可以通过线性组合的方式从中提取信息。 2、主成分分析:将原始的n维数据投影到低维空间,并尽可能的保留更多的信息。 ---投影后方差最大 ---最小化重构误差 从而达到…