我们的项目是基于隐私包含的众包系统。在设计之前,我们先把需求搞清楚。
业务需求
雇主能发布需求,工人能接单,完成任务。哈哈,听上去还挺简单的,但涉及到雇主取消需求,雇主取消任务,工人根据标签查询需求,工人提交工作文件,工人取消订单这些功能。
初步设计
确定了工人,雇主,管理员,需求,订单,对话,这几个实体之后,根据范式的知识,我们先把第一稿的数据库完成,把每个实体的字段都写下来,以及确定主键和外键。
根据需求走查
然后就是比较痛苦的地方,检查每个功能是否有数据库的字段支撑。对于雇主需求实体,我们就没有想到要加一个 “状态” 字段,表示需求的进行状态,再比如,对话表的 “需求id”字段根本不需要。
建表
后面的几个步骤就很简单了,指定字段的类型,主键外键的名称,用工具自动生成sql代码就好了。这里需要注意的点就是,sql外键添加失败,应该是两个相关联的字段类型不一致,改一下模型就好了。
整个数据库设计比较耗费时间,我花了两个上午完成了初稿之后,又花了一个上午进行需求走查,一个上午确定类型,也有一些收获。
- 表的字段要完全依赖于主键,这样设计出来不会混乱。
- 不要把一份数据存两遍。我们把 雇主表 工人表抽象成一个用户表,用户表主要存储手机号,电话这样的信息,避免重复。
- 要加外键约束。这还是问的老师,保证数据的完整性吧,后续开发可能会有些麻烦,要加很多的 异常处理。
- 表的设计是要完成业务的,不能脱离业务。
- 表的设计要结合实际的技术。我们计划,文件使用minio存储 ,文件表存文件的url即可访问文件。
最后,这是我们的设计结果。
标签:需求,数据库,雇主,外键,设计,心得,主键 From: https://www.cnblogs.com/sjk1213/p/17822565.html