仿若无因飘落的轻雨-数据库设计心得
前言
这是湖南大学软件工程导论课程的团队项目的数据库设计心得
- 项目名称:智能物流调度系统
- 组名:仿若无因飘落的轻雨
- 指导老师:彭鹏老师
- PM:谢先衍
- 组员:许晋源、鄢逾恒、方毅、廖心怡
1. 背景
在现代物流系统中,为了更高效率地对货物进行运输,需要保证每辆车装的货物尽可能多,避免空载及半载。通过智能调度算法来为每一辆车安排其需要载的货物,从而对货车更高效率地使用。
对于车需要走的路线,并不在本系统的考虑范围内,但是为了使系统更完善,还是对其进行了一些简单的规划。
2. 设计过程
对于需要登录或注册的对象,如用户、司机、站点人员等比较好设计的实体,可以直接确定它们的基本属性(如姓名、生日、密码等),而对于其他的实体,需要考虑到调度算法的一些性质来进行设计。
如调度算法需要考虑一辆车是否能装下货物,于是就有了将订单拆分成至少可以被某辆车装下的一个运单。而对于运单,需要考虑到对这些运单安排提货、送货以及运送到指定站点,于是又有了运输任务这一个表。
一开始同城的任务与城际的任务是分开的,但是在进行数据库审查时,发现两个任务很多属性都是相同的,可以进行合并而仅仅通过一个type属性来进行区分,因此最终就没有了同城任务这个表,统一为运输任务。
对于货物与货车,由于它们都是由固定的类型的,如货物有食物、服装等,货车也有不同的型号,因此可以有一个类型,在选择时可以直接继承该类型的默认属性,从而避免了用户填写过多信息。
还有一点,就是在设计过程中,我们发现有一些数据需要每次调用百度地图API来得到(如路线的长度等),这些数据可以在一次调用得到之后插入数据库,以节约API。还有一些信息可以通过多个表的信息联合查询得到,但是这其中需要一些额外的处理逻辑,为了减少这些逻辑提高效率,这些数据也被存在了数据库中。
在设计完这些之后,生成的SQL代码建表发现有一些表之间是互相依赖的,这种错误进行一定的修改就解决了,下面是最终的数据库:
3. 总结
数据库是在进行开发之前的最重要的一步,对于后续的开发是否能顺利进行有很大的影响,因此我们在设计过程中花了很多心思,也进行了多次讨论。
为了使系统的工作量在我们的实现能力范围内,对其也进行了尽量的简化,使其看起来与实际情况相符又不至于太过于复杂。
通过这次数据库的实际设计,也巩固了上个学期学的《数据库系统》课程的知识,也是第一次在实际中运用到这些知识,收获还是很多的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)