一个案例教你“走通”设计数据库的三个流程

本文详细介绍了数据库设计的三个关键步骤:构建ER图表示实体关系,将ER图转化为关系模式,然后通过范式理论确保规范化。以petStore系统为例,展示了用户、商品、订单和商品分类的实体关系及其规范化过程。
摘要由CSDN通过智能技术生成

提示:该博文为视频笔记,可前往视频结合笔记一起学习效果更佳~


数据库设计整体流程

在这里插入图片描述

1.现实世界的实体模型通过建模转换为信息世界的概念模型(即E-R模型)

2.概念模型经过模型转化,得到数据库世界使用的数据模型(在关系数据库设计中为关系模型)

3.数据模型进一步规范化(使用范式等),得到数据库模型


这里以一个例子引入

业务实例:设计petStore数据库 宠物商店系统的业务逻辑如下:

  • 1 用户注册:输入用户号、用户名、密码、性别、住址、邮箱及电话进行注册,注册成功以后就可以按产品的分类浏览网站

  • 2 商品管理:为管理员所用,管理员可以增加商品分类,可以为每个分类增加商品,其中商品包括商品号、商品名、商品分类、市场价格、当前价格、数量及商品介绍

  • 3 用户订购宠物:当用户看中某个宠物时,可以加入购物车;当用户选择完毕时,就可以购买下单了。购买涉及订单、订单明细,其中,订单包括订单号一订单日期一订单总价一订单状态等信息;而对于每个订单,有订单明细表,列出了所购商品号、单价和数量


第一步-构建ER图

首先,根据以上义务逻辑,我们可以确定系统有三个实体:用户,商品,订单

用户和订单是一对多的关系(一个用户对应多个订单,一个订单对应一个用户)

订单与商品是多对多的关系(一个订单可以对应多个商品,反之也一样)

画出ER图
在这里插入图片描述

第二步-根据ER图转换为关系模式

首先,我们先看商品和订单两个实体如何转换,由于他们是多对多的联系,要单独抽出一个【选购】的关系模式,同时选购带有着联合主键

下面加粗的为主键

商品(商品号,商品名,商品分类,市场价格,当前价格,数量,商品介绍)
订单(订单号,订单日期,订单总价,订单状态)
选购(商品号订单号,单价,数量)

我们来看订单和用户的联系,他们之间是一对多的联系
一对多的联系分为两种转换方式 ①将他们之间的联系单独抽出来作为一个联系模式 ② 将一端的主键加到多端的实体属性中,同时要把联系上的属性也加到多端实体的属性中(这里用户和订单的联系“属于”中没有属性)

这里我们使用第二种

用户(用户号,用户名,密码,性别,住址,邮箱,电话)
订单(订单号,用户号,订单日期,订单总价,订单状态)

这里就有问题了,这里我们有两个订单的关系模式,我们要选哪个?
当然,为了满足第二种方法,我们留下下面订单的关系模式
最终得出:

商品 (商品号,商品名,商品分类,市场价格,当前价格,数量,商品介绍)
订单(订单号,订单日期,订单总价,订单状态)
选购 (商品号订单号,单价,数量)
用户 (用户号,用户名,密码,性别,住址,邮箱,电话)
订单 (订单号,用户号,订单日期,订单总价,订单状态)

第三步-通过范式理论把数据库规范化

● 第一范式(1ND)–满足原子性,字段属性不可再切分
● 第二范式(2ND)–不能存在部分函数依赖,就是去除部分依赖关系
● 第三范式(3ND)–不能存在传递函数依赖

显然第一范式满足,但是我们看第二范式,对于【商品】中的商品分类,他是不依赖于商品号的,我们要把这个分类去掉,新加一个表【商品分类表】(分类号,分类名称),把商品中的分类去掉,替换成分类号

所以最终规范化的数据库关系模式如下

商品表product(商品号,商品名,分类号,市场价格,当前价格,数量,商品介绍)
订单明细表lineitem(商品号订单号,单价,数量)
用户表account(用户号,用户名,密码,性别,住址,邮箱,电话)
订单表orders(订单号,用户号,订单日期,订单总价,订单状态)
商品分类表category(分类号,分类名称)

总结

三步骤流程 构建ER图 --> 根据ER图转换为关系模式 --> 通过范式理论规范化

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值