首页 > 数据库 >数据库设计心得--百万项目组

数据库设计心得--百万项目组

时间:2022-11-04 20:46:56浏览次数:66  
标签:司机 结点 -- 数据库 路线 项目组 tbl 设计 心得

数据库设计心得--百万项目组

前言

在软件工程导论课程中,我们通过分析业务需求来构建数据库实体对象,以及通过PowerDesigner完成了本项目的数据库概念模型、物理模型的设计。以下是我们团队的数据库设计过程以及一些心得体会。

团队介绍

项目名称:大件运输路线电子地图系统

指导老师:彭鹏

小组名称:百万项目组

小组成员:曹育铭(PM)、戴贝娴、郑家昂、徐豪鲜、曹黄森、孙小龙

数据库设计过程

在数据库设计之前,需求文档的撰写已经完善。

下边的数据库设计是在该需求文档的基础上进行设计。

概念模型设计

1、数据抽象

在数据抽象中,由于项目特点,我们在需求分析时。首先抽象出了司机、管理员、审核员三类用例,如下图:

 

 

 

 

2、设计局部核心E-R图

而在接下来的实体属性抽象中,除去用户的一般属性分析,我们将重点放在了与核心需求有关的路线属性抽象。

结合司机需求、审核员需求、管理员需求。

司机可以申请路线、填报路线。审核员审核路线。管理员需要及时更改路线状态、并且更改时需要指出路线具体问题处。

结合上述需求,我们将路线这一实体进一步抽象出了:路段实体、结点实体:

 

 

 

 

 3、数据库总体设计:

综上考虑,我们小组根据开会以及和老师讨论,初步将数据库定为14个表。我们项目主要是用于大型交通运输,需要3种不同类型的用户:司机提交运输申请,审核员审核申请是否合规,管理员对相应的路线,人员进行一定的管理操作。因此我们开头定义了14个表,其中就有3个不同的用户:管理员,审核员,司机。后面经过胡军老师的验收,我们发现将用户分成三个表实在是冗余,因此我们将其三合一,放成一个用户表,然后又新添了一些表,以满足项目功能的实现。以下是我们所有表名:

序号

表名

功能说明

1

tbl_users

用户表

2

tbl_roads

推荐路线表

3

tbl_road_segs

路段表

4

tbl_road_nodes

收费站-交叉口结点表

5

tbl_road_stones

独柱墩结点表

6

tbl_trucks

车辆表

7

tbl_road_apply_logs

路线申报表

8

tbl_audit_logs

审核记录表

9

tbl_sys_informs

系统通知表

10

tbl_sys_logs

申报信息日志表

11

tbl_high_roads

高速公路表

12

tbl_login_logs

登录日志表

13

tbl_road_nodes

高速公路-结点对应表

14

Tbl_blocked_segs

阻断路段表

用户表:不同的用户登录具有不同的权限,用不同的用户来对系统进行操作。

推荐路线表:司机在填报路线的时候,需要系统智能的推荐一条合理的路线,减少人工输入的麻烦。

路段表:这个表用来存放一小节的路段,用于设置不同的路段状态,然后会影响到整个路线,同时整个路线的设置也与路段的选取相关。

收费站-交叉口结点表:高速公路中有意义的结点,这些结点会收取费用,限制车辆的属性,该结点表来存放这些结点。

独柱墩结点表:高速公路中存在一些一般的结点,这些结点对于车辆没有限制功能,但是能够对司机起到警示作用。

车辆表:每个司机拥有不同的车辆,车辆与司机个人相绑定,同时车辆也有一些固有的属性,保证车辆能否通行该路线,亦或是禁止通行。

路线申报表:司机每次申报的路线记录,包含了司机和路线的相关信息。

审核记录表:审核员审核司机申报的路线的记录信息。

系统通知表:系统对于用户的通知,存放在此表中。

申报信息日志:每次司机申报之后,存放在日志中,用于后面管理员查看,统计,选出新的推荐路线。

高速公路表:存放着一些高速公路,路线的申报,需要司机填写高速公路的名称。

登录日志表:每次用户登录都会留下登录信息。

高速公路-结点对应表:高速公路存在的交叉的结点信息。

阻断路段表:已经被阻断,无法通行的路段信息。

3、数据库设计全局E-R图

 

物理模型设计

物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构,包括每个模型如何存储、每个字段如何存储、以及每个字段存储的类型大小等,在物理模型的设计中,需要更加细致,考虑每一个字段的使用。

我们采用的是建模工具是PowerDesigner。在本项目里,我们使用的数据库时是关系型数据库mysql。所以在建模工具PowerDesigner中选取的ODBC(数据库对象)为mysql。并且根据所设计的E-R图、逻辑模型,完成系统物理模型(PDM)的设计:

 

数据库定义

数据库搭建阶段,我们进行了一次数据库设计的规范化检查,统一了表名前缀("tbl_"),并且表中的字段,如果是多个单词组成,统一设计为下划线分隔。

并且因为本项目采用了PowerDesigner设计PDM,PowerDesigner可以通过PDM自动生成相应数据库表的创建sql语句,我们只需要在DBMS中执行即可,大大减少了数据库设计人员的工作量。下图是本项目中所有的数据库表:

 

具体表设计示例:

数据库设计出现问题

1.   刚开始的时候,为了凑数据库的表的数目,我们把用户拆成了三个表,显然,这是非常冗余的,后面经过一步步深挖,我们将这三个表合成一个,同时也满足了表的数量。

2.   选择高效合理的开发工具:数据库建模以及数据导入都应该使用合理的工具,我这里使用了DataGrip的图形化工具操作数据库比纯cmd操作既方便又直观。

数据库设计心得:

1.数据库设计要从需求出发,结合实际。数据库建立的目的是服务项目。数据库各个表的建立,表内属性的规划,都要便于实际开发。同时还要尽可能用到每一张表,不要出现无用的表。

2.数据库设计需要细心和耐心,多与老师交流,搞清楚项目的业务需求:例如,老师在群里回答了默认一条高速公路的车辆限制属性一样,这一下子就让我们多了高速公路这一表的需要。

3.数据的设置要在项目中可行可实现:刚开始的数据库我们打算是让用户填入结点,路段等等信息,但其实是不合理的,因为这些所谓的结点,路段是我们方便管理系统而定义的,司机是不可见的,因此我们需要高速公路,司机只知道走哪条路,具体是哪个节点,哪个路段需要我们在后端代码实现。

 

标签:司机,结点,--,数据库,路线,项目组,tbl,设计,心得
From: https://www.cnblogs.com/cyuming/p/16859040.html

相关文章

  • 常见函数 ,过滤函数 直接导入使用
    //importparseTime,formatTimeandsettofilter/***Showplurallabeliftimeispluralnumber*如果时间是复数,则显示复数标签*@param{number}time......
  • 754. 到达终点数字
    在一根无限长的数轴上,你站在0的位置。终点在target的位置。你可以做一些数量的移动numMoves:每次你可以选择向左或向右移动。第i 次移动(从 i==1 开始,到 i==n......
  • 学习笔记——base标签、加密方式、JDBC、将java中添加的数据增加到数据库中
    2022-11-03一、base标签1、作用:用于添加web项目的前缀。2、放置位置:放置在head标签内部,一般放在首行。3、使用方式:<basehref="/项目名称/">,在html网页中的其他(例如:图......
  • [ARC098F] Donation(找性质+点 Kruskal 重构树)
    [ARC098F]Donation给出一个\(N\)个点\(M\)条边的无向连通图,每个点的标号为\(1\)到\(n\),且有两个权值\(A_i,B_i\)。第\(i\)条边连接了点\(u_i\)和\(v_i\)......
  • ysoserial CommonsColletions4分析
    前言CommonsCollectionsGadgetChainsCommonsCollectionVersionJDKVersionNoteCommonsCollections1CommonsCollections3.1-3.2.11.7(8u71之后已修复不......
  • GO(1)开发环境
    前言后边准备学习云安全以及区块链安全,先看一遍GO语言开发环境Go官网下载地址:https://golang.org/dl/配置GOPATHGOPATH是一个环境变量,用来表明你写的go项目的存放路......
  • Spring事务简介
    1、事务作用:在数据层保证一系列的数据库操作同成功同失败Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败2、例子:模拟银行账户间转账业务  步骤......
  • 【Azure 云服务】指标哪去了?在执行 Swap (交换生产部署和Staging部署) 操作后看不见云
    问题描述打开云服务(CloudService)的Metrics页面,发现过去了指标不见了?以虚点构成无数据的图表。  问题解答查看云服务的活动日志(ActivityLogs),发现最近执行的......
  • ⼯作⾥中的token是怎么管理的?
    我们公司的token管理都是通过vuex配合本地存储来做的,使⽤vuex是因为token数据⽐较特殊,在很多模块中都可能会⽤到,vuex⽅便管理,配合本地存储⽐如localstorage,是因为vuex有⼀......
  • 910005 CAD 右侧工具栏的说明
    1、删除从图形删除对象。无需选择要删除的对象,而是可以输入一个选项,例如,输入L删除绘制的上一个对象,输入删除前一个选择集,或者输入ALL删除所有对象,还可以输入?以获得所有......