以编程方式强制执行外键相对于数据库的优缺点:
在开发过程中,你的问题不应该驱动数据库设计。不断重建数据库是开发人员的使用案例,而不是客户的使用案例。
此外,数据库约束有助于超越应用程序的使用。你永远不知道客户可能会尝试做什么。不要过度使用,但你需要一些约束。
这取决于你坚持的测试理论。根据罗伊·奥舍罗夫在他的单元测试书中的观点,良好编写的测试应该被视为代码的合法用户。
然而,他们的需求不能超越数据的用户。以开发人员为中心的数据库设计是一场灾难的开始。没有条件可以使开发的便利胜过数据的完整性。
问题的出现原因是:开发人员过度关注开发的便利性,而忽视了数据的完整性和用户的需求。
解决方法是:不让开发问题驱动数据库设计,不断重建数据库是开发人员的使用案例,而不是客户的使用案例。同时,需要使用数据库约束来帮助超越应用程序的使用。测试应该被视为代码的合法用户。开发人员不能以自己为中心进行数据库设计,而应该考虑数据的完整性和用户的需求。