代码写的都队-数据库设计心得博客

发布时间 2023-11-10 19:51:40作者: DearFish

指导老师:刘琴

项目:基于隐私保护的众包系统

组名:代码写的都队

组员:李明胜、桑健康、刘豪奇、杜洋、史涛、夏金茗

作者:桑健康

我们的项目是基于隐私包含的众包系统。在设计之前,我们先把需求搞清楚。

业务需求

雇主能发布需求,工人能接单,完成任务。哈哈,听上去还挺简单的,但涉及到雇主取消需求,雇主取消任务,工人根据标签查询需求,工人提交工作文件,工人取消订单这些功能。

初步设计

确定了工人,雇主,管理员,需求,订单,对话,这几个实体之后,根据范式的知识,我们先把第一稿的数据库完成,把每个实体的字段都写下来,以及确定主键和外键。

根据需求走查

然后就是比较痛苦的地方,检查每个功能是否有数据库的字段支撑。对于雇主需求实体,我们就没有想到要加一个 “状态” 字段,表示需求的进行状态,再比如,对话表的 “需求id”字段根本不需要。

建表

后面的几个步骤就很简单了,指定字段的类型,主键外键的名称,用工具自动生成sql代码就好了。这里需要注意的点就是,sql外键添加失败,应该是两个相关联的字段类型不一致,改一下模型就好了。

整个数据库设计比较耗费时间,我花了两个上午完成了初稿之后,又花了一个上午进行需求走查,一个上午确定类型,也有一些收获。

1.表的字段要完全依赖于主键,这样设计出来不会混乱。

2.不要把一份数据存两遍。我们把 雇主表 工人表抽象成一个用户表,用户表主要存储手机号,电话这样的信息,避免重复。

3.要加外键约束。这还是问的老师,保证数据的完整性吧,后续开发可能会有些麻烦,要加很多的 异常处理。

4.表的设计是要完成业务的,不能脱离业务。

5.表的设计要结合实际的技术。我们计划,文件使用minio存储 ,文件表存文件的url即可访问文件。

最后,这是我们的设计结果。