最近开始开发新项目,项目的需求调研,界面设计,数据库设计都是自己一步一步亲力亲为的。数据库的设计好坏直接印象,开发的难易度。对于这一点,以前虽然知道,但是没有太多深入的体会。本次工作中,有了深刻的体会。

先说说业务场景:公司有很多条生产线,每条生产线都十几个作业员,除此之外每条生产线还配有班长和技术员。班长和技术员可以同时支持多条生产线。最近的需求是需要将公司的人力根据生产进行人力预估,以便根据生产计划进行招人或裁员。

可以用下图表示:

 

大致的业务逻辑如上图。在数据库设计的时候,将班长和技术员的配比放在一张表,然后一张中间表和作业员信息表Mapping,这样设计后,效果大致如下:

这种效果在最初看起来是没有问题的,但是在处理业务的时候,会非常绕,不容易在后期统计数据处理的时候处理。然后 自己思考后设计了下面这种方式:

这样处理之后,业务逻辑处理过程中,业务更清晰了。也不会太绕。我目前使用的这种方式来处理。不过就在刚才 我想到了另外一种方式。是否应该将班长和技术员完全分隔开,用四张表来存储,班长和作业员的中间表,班长配比较,技术员和作业员的中间表,技术员表?

通过这次数据的设计后,自己也有一些心得体会,数据库设计,业务虽然有关联,但是最好将能分离成多张表的数据分离到多张表存储。