我经营一家小型食品生产企业,我需要管理客户订单.我已经构建了我的业务这方面的概念数据模型,但我需要一些关于如何在RDMS中完全实现它的指针.
作为第一步,我提出了下面给出的逻辑模型.我对数据建模的了解有限,因此我的图表中可能存在错误,但希望它能传达我的意图.请注意,这仅仅是较大模式的简化部分,为简单起见,我仅提供相关表格.

我在MySQL中实现了上面的模式,我编写了一些小程序来用客户订单填充表.这可以完成工作,但没有太多考虑数据完整性.我注意到,通过此实现,一些数据完整性规则不会在数据库级别强制执行.
例如,FoodItem是OrdrItem的子类型.对于FoodItem中的每一行,OrdrItem中必须只有一个对应的行.但是,在其当前实现中,我可以从FoodItem中删除一行,从而在OrdrItem中留下一行而在其中一个子类型表中没有相应的行.这应该是不允许的.
我希望将这些数据完整性规则融入到数据库中,这样我就不必担心自己在每个新客户端应用程序中执行它们,抛弃脚本或我写的伪劣SQL语句.我怀疑,如果我不在数据库级别做出这些保证,那么我将极大地增加遇到数据完整性问题的可能性.
我对存储过程,触发器和用户定义的函数只有最微弱的了解.我得到的印象是,部分或全部这些功能可以帮助我实现我想要的目标.但是,如果我能完成检查约束,外键和相对简单的功能,我很乐意走这条路.基本上,我希望尽可能地限制复杂性,如果没有保证,不要引入每个漂亮的数据库功能.是否有可能确保我想要的数据完整性,而无需借助存储过程,触发器,用户定义的函数和其他更深奥的数据库功能?
我愿意使用MySQL或Postgresql来实现我的解决方案,因为我对两个系统都有基本的工作知识.
最后,如果这种对数据完整性的方法被认为是过度的,或者如果有一个更实用但稍微不完美的解决方案,我也会对此持开放态度.