第二天 生产厂家CRUD + 购销合同
功能:和杰信合作生产厂家突然有一天它以次品冒充优质品,杰信不跟这个厂家进行合作。
在货物中生产厂家选择框,不能选择这个不再合作的厂家。在系统中不能直接删除这个厂家,因为我们的历史数据中含有对这个生产厂家的引用。
软件是采用“伪删除”方式来解决。实际是在数据库表中加入列,作为标识,标识厂家是否可以被引用。0停用1启用。新增厂家默认1,可以修改某个厂家为停用。
在货物中选择厂家的下拉列表,只显示为启用。
【面试】数据库表是没有boolean
Mysql tinyint
Oracle number(1)
实际项目中也可以设置为Char(1)
可以实现批量操作
<update id="updateState" parameterType="map">
update FACTORY_C
set STATE=#{state}
where FACTORY_ID in
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
foreach>
update>
public void start(String[] ids) {
Map<String, Object> map = new HashMap<String,Object>();
map.put("state", 1); //1启用
map.put("ids", ids);
factoryDao.updateState(map);
}
注:这个方式,就是流程控制的基础,权限控制基础
软件企业就会到杰信去需求调研,
项目经理,他面对客户的高层中层领导,目的跟客户安排好调研日程。
设计人员,带领初级程序员到具体的业务部门调研。聊天,围绕项目的目标,设计人员会自己记录谈话内容,(主干),初级程序员(所有内容)。回来整理笔记,整理《需求调研报告》
报告中怎么体现纸质报表?初级程序员将纸质报表转化成电子的。
杰信和生产厂家签到的合同,称为购销合同。一个购销合同中包含多个货物信息,一个货物信息包括多个附件信息。
报表打印时,同一个生产厂家的货物信息才能放在同一个页上,不同生产厂家的货物信息不能放在同一个页上。
分析阶段,抠每个字段
【面试】主键生成策略 代理主键,业务主键
代理主键,跟业务无关,自增,UUID
业务主键,跟业务有密切关系,XXXYYYZZZ,省市县,国家规范,合同号 14JK009
在实际开发中最好使用代理主键。
【面试】CHAR(10)
存储SETS
VARCHAR 4位长度
CHAR10位长度,其他位空格
数据库三范式,原则,数据库当中列,表不应该由其他的列加工而得。
数据库三范式有什么好处?表存储的内容比较少,节约表存储空间,数据的唯一出处。
总金额=数量*单价
随着电脑硬件的发展,原有硬件非常贵,环境对其影响非常大。温度,尘土。价格很便宜。
早期数据设计时强调空间,现在数据库设计强调性能,也就是用户的体验
【面试】生产厂家和货物是什么关系?
一对多 对,样子相同,但货号不同,对杰信来说,它们是不同货物
多对多 错
设计方案一(传统设计)
合同表,货物表,附件表多次左连接,SQL极其复杂,由于附件值特殊,SQL不能直接完成,还需要代码去实现。
设计方案二(冗余设计)
通过冗余,都在货物表中,只需要合同表和货物表左连接即可。
将用户的需求(大白话)转化为开发人员看得懂的数据库表,表之间的关系,业务逻辑。给我们的开发人员看,开发人员依据设计来写代码。复杂,大型项目画类图,序列图辅助开发人员开发。
【面试】外键什么时候创建
在实际开发中,架构师搭建项目框架,框架的基类都有,基础工具类,统一样式表,统一的公用的js,图片。公司提供一个CVS/SVN账号,配置环境,从中检出你负责的项目的代码。代码一般以项目结构。导入工程,在其上面开发新的业务模块。
销售人员录入合同时,它为草稿状态,这时只能销售人员自己看到。只有当销售人员检查合同无误,提交,状态变成“已上报”。这时候,其他人员才可以看到。销售的领导和船务专责才能看到。利用这个状态字段来控制对当前用户是否可见。(细粒度的权限控制-数据权限)
货运管理核心业务流程:购销合同
购销合同是杰信和生产厂家签订的合同。
购销合同业务比较复杂,它是货运管理的一个流程,它包括三部分内容,合同的主信息和多个货物信息和多个附件信息。合同主信息和货物是一对多,货物和附件信息是一对多。
前期我参与了业务调研,重点负责购销合同。给客户交流后,我编写了《需求说明书》,然后参数购销合同的表设计。从需求说明书结合客户给的电子表格,我抽取出数据库表,利用PD进行建模。
1.跟客户聊天,要引导性和他们聊天。业务基础术语,了解业务流程
2.深入内容,拿到客户手中现有某个模块表单,电子表格,填写的内容,每个内容要注意的事项。来源:手填,从其他模块来获取。抠每个字段,电子表格中每个内容。
3.《详细说明书》功能的细化,业务逻辑说清楚,画图辅助开发,UML(类图、序列图、状态图)数据库建模细化。
详细设计本意能达到开发人员无需和客户沟通,就可以在设计人员的指导下就可以直接开发出客户满意的代码。但实际中做不到。设计不到位。实际中开发往复比较多。