当前位置:   article > 正文

数据库课程大作业——概念模式设计、数据库模式设计优化及Web框架实现_数据库期末大作业设计

数据库期末大作业设计

本文详细介绍数据库从零到一的完整设计,因基于课程报告衍生,因此文章内容仅供举例参考,与商业应用有较大差距,适合学习数据库的同学参考学习使用(截至发文时笔者为大三CS学生一枚)。

前言

总览整个课程报告的实验要求,本质上在于让每位同学了解数据库系统设计的过程,包括概念的诞生、数据库的设计、数据库的优化、数据库的具体实现。由此观之,项目之间环环相扣,具有层层递进的关系。根据这一理解,在实验初期,本人大致总结出数据库设计从零到一的相关流程,并按照该流程进行整体项目的推进,展示如下图所示。

在本课程报告中,Project1要求进行概念模式设计、数据库模式设计,Project2要求进行数据库模式优化,本人在实际推进过程中,首先进行了概念模式设计,然后根据所得的概念模式(即实体关系图)进行了数据库模式的设计与优化。因此在Project1中只涉及到概念模式的设计,Project2中将数据库模式的设计与优化进行合并阐述。Project3使用Python+Flask+mysql进行了数据库模式的实现和查询功能。在此特作说明。

Project1:概念模式设计

项目背景

随着社会的发展和生活节奏的加快,越来越多的人选择在外面工作或学习,导致他们没有足够的时间去烹饪食物。因此,外卖服务在市场上变得越来越受欢迎。为了满足人们对便捷餐饮服务的需求,外卖系统应运而生。为了给外卖系统提供可靠而有效的数据信息存储保障,我们根据外卖系统的运行方式和需求进行数据库搭建,并通过规范化提升数据存储效率和查询性能。

问题分析

外卖系统中的关系错综负责,要想设计出一个逻辑清晰、性能良好的数据库,我们需要充分了解外卖系统的运作方式以及其中可能涉及到的各种主体,并列出主体之间可能存在的种种关系,根据实体和关系设计出相对应的ER图,之后再根据ER图(概念模式)转化出关系模式(数据库模式),并通过规范化设计优化数据库结构。

本项目中实现的外卖系统并非面面俱到,最终设计出的系统虽整体上能够走通外卖商品流通的流程,但是在一些细节方面还有很多不足,仍有非常多的优化空间。以下为本系统的需求描述。

需求描述

根据外卖系统的常规运行逻辑,笔者建立了如下描述的一种简单运行场景:

  • 在一个外卖系统中,用户可以查询不同店铺的不同食品信息,并选择餐馆中的诸多商品进行购买,每次购买创建一个订单,用户可以选择订单的支付方式(例如银行卡支付、微信支付、支付宝支付等)。
  • 每一个订单会被目标餐馆获取,且该订单会被唯一派发给一名送餐员进行配送,送餐员使用的配送小车由公司统一配备,一人一辆, 订单在整个外卖流程中的配送状态可被实时更新。
  • 用户在接收到餐品后,可以对食品所属餐馆进行评论,同时也可以对送餐员的派送服务进行评论,评论包括打分、文字评价、图片描述等。
  • 管理员可以管理用户、餐馆、送餐员、订单的相关信息,在必要时可对餐馆、送餐员、用户做出管理和处罚。
  • 整个系统按此闭环运行。

实体分析

从以上需求描述中,笔者总结出十一个实体类型,并大致概括出每个实体可能具有的实体属性,展示如下:

关系分析

结合以上实体与需求分析,初步总结出实体之间的关系,陈列并说明如下:

  • 用户与订单的1:n关系(一个用户可以创建多个订单,一个订单只属于一个用户);
  • 餐馆与订单的1:n关系(一个餐馆可以接收多个订单,一个订单只属于一个餐馆);
  • 餐馆与食品的1:n关系(一个餐馆可以提供多种食品,一个食品只能属于一个餐馆);
  • 订单与支付的1:1关系(一个订单只能对应一个支付记录,一个支付记录只能对应一个订单);
  • 订单与配送状态的n:1关系(一个订单对应一个派送状态,一个派送状态可以对应多个订单);
  • 订单与送餐员的n:1关系(一个订单只能分配给一个送餐员,一个送餐员可以接受多个订单);
  • 送餐员与配送车辆的1:1关系(一个送餐员只能有一辆配送车辆,一辆配送车辆只能配送给一位配送员);
  • 派送评论与订单的1:1关系(一个订单有一个派送评论,一个派送评论对应于一个订单);
  • 派送评论与送餐员的n:1关系(一个派送评论只属于一个送餐员,一个送餐员可以有多个派送评论);
  • 餐馆评论与订单的1:1关系(一个餐馆评论对应一个订单,一个订单只能有一个餐馆评论);
  • 餐馆评论与餐馆的n:1关系(一个餐馆评论只属于一个餐馆,一个餐馆可以有多个餐馆评论);
  • 管理员与用户的m:n关系(一个用户可以被多个管理员管理,一个管理员可以管理多个用户);
  • 管理员与餐馆的m:n关系(一个餐馆可以被多个管理员管理,一个管理员可以管理多个餐馆);
  • 管理员与送餐员的m:n关系(一个送餐员可以被多个管理员管理,一个管理员可以管理多个送餐员);

实体关系图(ER图)绘制

根据以上实体和关系,初步绘制ER图的关系部分如下图所示。

(笔者使用Excalidraw完成ER图的绘制,Excalidraw是一款免费的画图Web网页,可以满足简单的绘图需求——

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/803512
推荐阅读
相关标签