使用“真正的”数据库建模工具有什么意义?

时间:2010-04-15 15:47:10

标签: database database-design data-modeling

我们目前有一个10年前讨厌的,意大利面条代码风格的SQL Server数据库,我们很快就会从头开始重新编写,作为重写大型Web应用程序的一部分。 (现有的应用程序将作为app的下一个版本的功能要求)。

有些人建议我们使用Visio来完成所有的图表并生成DDL,但是其他人建议我们使用专用的数据库设计工具,而不是能够导出DDL的图表工具。

使用像ModelRight这样的“真实”数据库设计工具比使用Visio等常规工具有什么好处?如果是这样,那些具体的好处是什么?


编辑:简而言之,真实/专用工具可以做什么,像Visio这样的东西不能,这些功能有多重要和/或它们是否值得花费? (例如,从最佳实践的角度来看)

7 个答案:

答案 0 :(得分:2)

一个很好的问题。首先要做的事情。如您所暗示的,不需要数据模型工具来构建和维护良好的数据模型。但是,如果您将其作为工程周期的一部分,它可以加快实施时间,并大大降低产品生命周期内的维护成本。

为了证明使用工具的合理性,它必须是您开发中不可或缺的一部分。要成为不可或缺的一部分,它必须简单直观地使用,不应影响您的整体生产力。

如果您只是用它来创建漂亮的图片,图表很快就会过时,维护它的工作量将不断与实际的工程任务相对应。

换句话说,如果所有Eclipse或Visual Studio都是为了打印目的而美化我们的代码,我们仍然会使用记事本。

正确的ER工具必须显着提高您的交付能力,并促进您向技术和非技术人员传达设计的能力。正确的工具会让你看起来很棒(更棒吗?)。

除了创建一个可以直观地解释您的设计的初始模型之外,一个出色的ER工具应该执行以下操作:

  • 直接从您的模型生成可用的架构脚本。
  • 将对实时副本所做的更改合并回模型。
  • 根据模型与实时数据库之间的比较创建更改脚本。
  • 允许您轻松维护数据定义并发布它们。
  • 将您的设计转换为SQL的任何主要版本。
  • 允许您创建自动同步到主模型的视觉上吸引人的子模型。
  • 允许您定义实体模板,因此您不必为所有表创建相同的系统列(插入日期,插入用户,修改日期...)。
  • 为您提供模型的逻辑和物理视图,因此您可以在图表中使用人类可读的列名(名字)和物理列名(first_nm)。前者非常适合非工程师,后者则可以根据您自己的最佳实践为列命名。
  • 随着时间的推移,为您提供一种无痛的版本模型版本。

ERWin,MySQL Workbench和ER / Studio是直观易用的工具示例,使您可以专注于您的设计,而不是如何使用该工具执行基本任务。还有其他人。这些是我经历过的。

ERWin目前有一个免费软件版本,您可能会发现它可用于确定工具是否适用于您的环境。

Visio仅为您提供对初始模型进行反向工程的功能。

我希望这可以帮助你做出决定。

答案 1 :(得分:1)

从Visual Studio 2008开始,有一个具有SQL Server 2005项目类型的数据库版本。通过这种方式,您可以从数据库(SSMS图中的模型)中获取模型并为其生成脚本。接下来,您可以对模型的不同版本进行模式比较,并使用生成的脚本将旧版本更新为更新版本。数据也是如此。

答案 2 :(得分:0)

有一个Oracle工具 - 企业元素
该工具允许您通过输入有关系统的元数据以动态方式创建数据库, 然后为您生成所有UI。您可以动态更改模型,自动调整报告和基于Web的表单等。 对于你想要保持流畅的重新设计来说,这可能是一个不错的选择

答案 3 :(得分:0)

我会选择一个涉及大量廉价尝试来创建模式和样本事务的大量真实模型代码的那个。如果它不支持循环跳转(即从模式重写图并编写模式以匹配图中的更改),那么您将不得不继续调整模式,因为它需要永远让它们相互匹配试。

因此,企业管理器(我认为Management Studio)中的数据库绘图器远远优于Visio。

答案 4 :(得分:0)

答案 5 :(得分:0)

根据我的发现,专用数据库绘图工具有一些优势,比基于图表的工具更像Visio:

  1. 支持从现有数据库生成图表
  2. 支持生成更改脚本以应用您对图表所做的更改
  3. 支持将图表与现有数据库进行比较
  4. 还有很多其他的,但简而言之,专用工具将具有更多集成功能,这些功能利用现有数据库的模式,这使得管理它们变得更加容易,尤其是在过渡场景中。

答案 6 :(得分:0)

说实话,我认为如今生成DDL几乎是一种卫生功能。如果你的项目是一个“繁重的”数据库项目,并且你有一个DBA和所有这些好东西,你几乎肯定会开发一个项目方法来进入数据库;这种方法可能包括逻辑和物理设计,验证,样本数据,对需求的可追溯性以及所有好的东西。在这种情况下,获得一个合适的工具 - 虽然要注意他们中的许多人有一个相当陡峭的学习曲线,并希望你以他们特殊的方式看世界。例如,我从未设法获得ErWin的支持,但发现StarDesigner更符合我的口味......

如果您的数据库就在您的业务层存储其数据的位置,并且数据库不是项目的关键驱动程序(通常是Web应用程序的情况),我不会过分强调它 - 你'通过研究持续的数据库集成以及允许数据库在开发过程中发展的其他方式,我们将获得更大的收益。