您为“存储库模式”数据库设计找到了什么理论基础?我猜都没有。这是虚假的前提之上的一层复杂性:“持久层”是您需要与之隔离的东西。据我所知,它对关系设计原则的广泛编程无知,以及对应用程序OO设计的预设中心性的泛化。但这并不能证明其存在的合理性,更不用说理论依据了。
30年以来,数据库设计的“一条真实道路”没有改变:分析数据。查找键和约束以及多对一关系。根据Boyce-Codd范式设计表格。使用视图和存储过程来方便数据访问。
尽管SQL DBMS可能不受欢迎,但它提供了比程序员可以提供的任何东西更好的隔离层。的确,随着数据库的更改,用于访问它的SQL可能必须更改。但是请注意,无论是否存在中介层,都是如此。只要应用程序使用视图和存储过程来访问DBMS,普通的SQL工程工具就会指示对基础数据库的更改何时使这些视图和存储过程无效。
当然,挑战就在于此。中介层为程序员提供了隔离的错觉和编写代码的舒适性,他知道该怎么做。学习数据库设计和SQL需要学习一些新知识。大多数人宁愿死也不愿思考,许多人成功了。
团队中的某人无疑会反对编写SQL支持200个类的工作。毫无疑问。但这至少是有用的工作。如果您通过模仿OO设计来设计数据库,那么您还将做很多工作,很多工作都没有用,并且会破坏DBMS为您提供的大多数服务。
例如,您打算在数据库中反映工作单元(我想是一个表或多个表)。 工作单位是一个内置的DBMS的服务:begin transaction
...更新数据库... commit transaction
。除了将类映射到SQL中的数据库表之外,没有任何模型。
您的问题是4年前发布的。我之所以回答是因为它最近以某种方式被“更新”,表明它仍对某人有些兴趣。我希望我的回答会鼓励读者将基本关系理论应用于该问题,而不是采用无意义的解决方法。