这是我毕业以来做的第一个项目,是某公司的某个具体的项目,那么,就针对这个项目的原型图,理出我自己的思路来。
当我们看到原型图时,会想到要见哪几张表,这几张表的外键关系如何,怎么取舍这些外键(当然,这一般情况下,是技术总监做的事,虽然,我们是初级程序员,但也应该考虑到表之间的关系,因为,我们不可能做一辈子的初级程序员吧。)
表结构
zq_bank_card 银行卡表,包含付款给工人的银行信息
zq_company 公司信息,以后做SAS会用的
zq_financial_flow 财务流水表,比如付款、收款、工资、运营流水等
zq_financial_flow_pictures 财务流水对应的图片
core_picture 框架封装起来的图片
zq_financial_subject 财务科目表
zq_gathering 款项表
zq_gathering_pictures 款项表对应的图片
zq_money_change 变更表
zq_money_change_pictures 变更表对应的图片
zq_salary 工资表
- 银行卡表:银行卡属于谁,因而需要人或物的外键id;我们也会在项目收支里的付款管理中,用到银行卡这张表,谁付款给谁的哪张银行卡。
- 公司信息,以后也许会在SAS系统中用得到。
- 财务流水,财务流水用来记录项目收支的收款管理和付款管理,运营收支当中的收款管理和付款管理,发放工资的流水。我本来打算用到款项表,里面有两个枚举类型,比如收支类型对应的项目收支和运营收支,款项管理对应的付款管理和收款管理,但这样很不好,因为,我们财务科目表,财务科目表(树状结构)中就有对应的二级id。
/**
* 科目全路径
*/
@Column(name="full_Id_path")
private String fullIdPath;
比如项目收支中的收款管理有个二级id,即level对应的层级,我们只要存储full_id_path这个就可以了。因而,款项表和款项表对应的图片就可以删除了。
4. 图片,图片是专门拿出来存储的,为什么呢?根据数据库的优化来说;定值一般单独存放,这样效率比较快一点,变值专门存放,因为图片的路径大小不确定,需要单独存放比较合适,这样查询效率就比较高一点。同时呢,如果表结构当中的哪些字段比较常用,我们可以将其设置为索引。工资表中经常按年月查询,我们可以将年月设置为索引
5. 变更表,比如我们最初设计的应收款为60000,后来变为56000,再后来变为50000.这就需要有个记录,当然,也需要科目表的外键,否则,不知道是项目收支当中的收款管理,还是运营收支当中的收款管理。
6. 工资表,工资时发给谁的,需要员工的id,通过员工的id,关联到银行卡。
看到原型图应该想到的事
当我们看到原型图,首先想到某个按钮有什么作用,它会关联到哪几张表,如果涉及到高并发时,又该如何保证数据的安全性;如果涉及到事务德华,如何保证事务的一致性,原子性、隔离性和持久性?
- 当我们添加员工工资时,涉及core_user表(员工表),因为需要知道这个员工;还需要银行卡表,找到对应的银行卡,打钱到银行卡中。
- 当我们项目收支当中对应的收款管理信息,涉及到哪几张表?款项分期和应收款对应着money_change这张表;实收款就对应着财务流水这张表,并且需要统计实收款。
通过图片上的分析,我们可以设计序列图:
当用户查询时,前端设计人员通过一个接口将数据传递给后台,后端拿到数据进行以系列的操作,将数据一Json格式的方式返回给前端,前端才把数据以一定样式展示出来。
注意事项
- 每天都要提交代码,这样,可以协作完成,否则,极容易造成代码冲突。
- 熟悉idea的快捷键,git提交代码的方式
- 打开内网的vpn,否则,idea会报错误的。