引言:《一步一步设计你的数据库(五)》中我们通过多种方法来理解客户的需求并撰写了需求文档。本文我们将回答三个问题。1. 为什么业务规则非常重要。2. 怎样识别业务规则。3. 如何修改关系模型并隔离出业务规则。
什么是业务规则
业务规则描述了业务过程中重要的且值得记录的对象、关系和活动。其中包括业务操作中的流程、规范与策略。业务规则保证了业务能满足其目标和义务。
生活中的一些业务规则可能是:
1、当顾客进入店内,最近的员工须向顾客打招呼说:“欢迎来到×××”。
2、当客户兑换超过200元的奖券时,柜员须要求查看客户的身份证并复印。当兑换的奖券金额小于25元时,无需客户签字。
3、早上第一个进办公室的人需要把饮水机加热按钮打开。
本系列我们关注数据库相关的业务规则,一些例子如下:
1、只有当客户产生第一个订单时才创建该客户的记录。
2、若一名学生没有选任何一门课程,把他的状态字段设为Inactive。
3、若销售员在一个月中卖出10套沙发,奖励500元。
4、一个联系人必须至少有1个电话号码和1个email邮箱。
5、若一个订单的除税总额超过1000元则能有5%的折扣。
6、若一个订单的除税总额超过500元则免运费。
7、员工购买本公司商品能有5%的折扣。
8、若仓库中某货品的存量低于上月卖出的总量时,则需要进货。
从数据库的视角来看,业务规则是一种约束。简单的约束如:
所有订单必须有一个联系电话。
上述这类简单的规则可以很容易的映射到关系数据库定义中,为字段确定数据类型或设定某字段为必填(不能为NULL)。某些业务规则表达的约束会复杂些,如:
学生每天的上课时间加上项目时间必须在1至14小时之间。
我们可以通过check约束或外键约束来实现这类业务规则。对于一些非常复杂的业务规则,如:
一名教员每周不能少于30小时工作量,其中分为办公时间、实验时间和上课时间。每1小时的课需要0.5小时办公时间进行备课。每1小时实验需1小时办公准备。每周指导学生论文时间不少于2小时。
类似上述的业务规则需要从多个表中收集数据,故在程序代码中实现最为合适。