做项目建数据库时,表与表之间的外键约束太多,导致后来数据库操作时经常出错,于是我们决定把数据中的外键都删除,只在业务逻辑上存在引用关系,在数据库中不存在实体的外键。
可是我们的代码都写到一半了呀,domain包下和javaBeandouy都已经写完,从头再来是不可能的。
于是我就将数据库中的外键都在数据库中删除掉,Hibernate的XML文件和javaBean都没有改变,经过不是很完善的测试,发现是可以的。
我想:数据库中的外键在数据库级别保证数据的完整性和一致性,但是Hibernate也在DAO层保证了数据的关联。所以,我将数据库的外键删除,是不影响Hibernate的,但是这样,我想会造成数据库中存在一定冗余的数据,和无效的数据。但是,对于复杂的业务处理,这点数据库牺牲还是有用的。
这样,所有的业务关联是外键约束,都在java代码里处理了,数据库是没有任何外键约束的。
不知道我这样做有没有问题,或者是违反了什么原则,欢迎拍砖。
可是我们的代码都写到一半了呀,domain包下和javaBeandouy都已经写完,从头再来是不可能的。
于是我就将数据库中的外键都在数据库中删除掉,Hibernate的XML文件和javaBean都没有改变,经过不是很完善的测试,发现是可以的。
我想:数据库中的外键在数据库级别保证数据的完整性和一致性,但是Hibernate也在DAO层保证了数据的关联。所以,我将数据库的外键删除,是不影响Hibernate的,但是这样,我想会造成数据库中存在一定冗余的数据,和无效的数据。但是,对于复杂的业务处理,这点数据库牺牲还是有用的。
这样,所有的业务关联是外键约束,都在java代码里处理了,数据库是没有任何外键约束的。
不知道我这样做有没有问题,或者是违反了什么原则,欢迎拍砖。
本文讨论了一种在项目开发过程中优化数据库设计的方法:通过移除数据库表间的外键约束,并将这部分逻辑转移到业务代码中实现,以此来减少数据库操作错误并提高复杂业务处理的灵活性。
759

被折叠的 条评论
为什么被折叠?



