我经营着一家小型食品生产企业,需要管理客户订单。我已经建立了一个关于我的业务方面的概念数据模型,但我需要一些指导来完全在RDMS中实现它。
首先,我提出了下面给出的逻辑模型。由于我的数据建模知识有限,因此我的图表可能存在错误,但希望它能传达我的意图。请注意,这只是更大模式的简化部分,为了简单起见,我仅呈现相关表格。
例如,FoodItem是OrdrItem的子类型。对于每个FoodItem行,必须有一个对应的OrdrItem行。然而,在当前实现中,我可以删除一个FoodItem行,从而使OrdrItem表中留下一个没有对应子类型表中行的行。这应该被禁止。
一些进一步的数据约束:
我的问题是:我只有对存储过程、触发器和用户定义函数的模糊知识。我有这些功能可以帮助我实现我想要的东西。然而,如果我能够使用检查约束、外键和相对简单的功能完成工作,我将非常愉快地采取这种路线。基本上,我想尽量减少复杂性,如果没有保证,不引入所有花哨的数据库特性。是否可能在不使用存储过程、触发器、用户定义函数和其他更深奥的数据库特性的情况下确保我想要的数据完整性?我愿意使用MySQL或Postgresql来实现我的解决方案,因为我对这两个系统都有基本的工作知识。
首先,我提出了下面给出的逻辑模型。由于我的数据建模知识有限,因此我的图表可能存在错误,但希望它能传达我的意图。请注意,这只是更大模式的简化部分,为了简单起见,我仅呈现相关表格。
- 一个客户订单可以有一个或多个订单项
- 订单项可以是FoodItem或ComboItem之一
- ComboItem是两个或多个FoodItem的逻辑分组
例如,FoodItem是OrdrItem的子类型。对于每个FoodItem行,必须有一个对应的OrdrItem行。然而,在当前实现中,我可以删除一个FoodItem行,从而使OrdrItem表中留下一个没有对应子类型表中行的行。这应该被禁止。
一些进一步的数据约束:
- 订单必须至少有一个关联的“订单项”(即订单不能为空)
- 订单项必须是精确地与FoodItem或ComboItem之一相关联的子类型(即,订单项不能既是FoodItem又是ComboItem)。
- 未来可能会出现一些进一步的约束条件
我的问题是:我只有对存储过程、触发器和用户定义函数的模糊知识。我有这些功能可以帮助我实现我想要的东西。然而,如果我能够使用检查约束、外键和相对简单的功能完成工作,我将非常愉快地采取这种路线。基本上,我想尽量减少复杂性,如果没有保证,不引入所有花哨的数据库特性。是否可能在不使用存储过程、触发器、用户定义函数和其他更深奥的数据库特性的情况下确保我想要的数据完整性?我愿意使用MySQL或Postgresql来实现我的解决方案,因为我对这两个系统都有基本的工作知识。
最后,如果这种对数据完整性的处理被认为过于严格,或者存在更加实用但略有不完美的解决方案,我也愿意接受。