我只是在这里读这本书:http: //www.amazon.com/Java-Architects-Handbook-Second-Edition/dp/0972954880/ 试图找到一种策略来有效地设计一个(通用)中型到大型应用程序(200 个表或更多)——例如一个经典的、多层的、企业内部网。我正在尝试调整我过去的经验(作为数据库设计师,但也是 OOAD),以便构建这样一个 java 应用程序。根据我的阅读,如果您先定义实体,则不推荐直接(自动)推断数据库的方法。这本书说您将首先构建实体/对象模型(OOAD),然后有 db admin/dev.(?) 作业基于已构建的实体模型构建/推断数据库(模式、规范化等) . 如果是这种情况,恐怕架构师/开发人员可能会失去对重要方面的控制——规范化、实体属性值建模等。
也许像许多年长的开发人员(后端开发人员、架构师等)一样,我觉得首先定义数据库模式更自在 - 并在规范化等方面花费大量时间。虽然现在这肯定是可能的,但我问自己如果这将成为(很快,如果还没有的话)“老式方式”而不是规范 - 作为从头开始设计应用程序时的经典/推荐方法。
我知道 Entity Framework (.NET) 已经明确定义了这些方法——“实体优先”、“数据库优先”、“代码优先”,如有必要,这些方法可以混合使用。我当然知道他们为新设计的应用程序推荐“实体优先”,如果您已经定义了数据库模式(对于许多旧应用程序,迁移等时都是这种情况),则推荐“数据库优先”。我只是在问是否有什么类似的Java世界。
所以,问题是:(虽然我知道没有灵丹妙药等)
- 新建应用程序的“实体优先”——这是当今的常态吗?
- 您使用什么工具(如果有的话)来帮助推断数据库模式过程?- 您在具体 UML 工具等方面的经验、优缺点。
- 如果您有部分/旧/子域数据库模式(主要是您想要保留的)怎么办?在这种情况下,您会从数据库中推断实体模型,然后使用您首选的 UML 工具重构模型?
- 从劳动力的角度来看(假设数据库有 200-500 个表):最好的方法是什么:例如,让 2 个不同的人分别参与设计 OOAD/实体和数据库,并与架构师一起工作?