繁体   English   中英

数据库架构设计工具/模块化数据库设计

[英]database schema design tools / modular database design

我正在开发可以部分从模块构建的应用程序。 例如,我将能够开发一些在线社区,其中包含模块“论坛”,“博客”,“图库”等。

目前我有一个大型数据库ERM,其中包含所有具有外键连接的模块的所有表,我正在使用dbwrench来构建此ERM。 但是,我对这种方法不是很满意。 我想有一个ERM设计师,它可以以面向模块的方式工作。 我想将数据库表保存在每个模块的单独模式文件中,但在这些不同的模式之间保留外键引用。

但是,我无法找到任何支持此工具的工具 - 这是错误的方法或如何设计“模块化ERM”/模块化数据库方案?

谢谢!

我同意模块化设计是要走的路。 当我们为客户创建应用程序时,我们倾向于向他们出售我们已经构建的一组小部件。 那么当客户说时会发生什么呢。

这是客户A支付小部件Z的好东西,然后我们可以销售给所有其他客户。 诀窍是以这样的方式构建这些小部件,使它们适合而不会破坏当前的应用程序。

查看此链接以及注释中标识的来源。

MediaWiki Design - 请参见底部的注释

我绝对相信,这是正确的方法。 遗憾的是,数据库社区还没有采用模块化设计,敏捷软件开发等新概念。

如果我有一个选择,我让ORM工具创建脚本的基础,并手动添加不属于ORM的细节(例如特殊索引,表空间,分区),还可以手动创建迁移脚本(这是非常直接的)当你有两个版本的完整脚本之间有基于文本的差异时转发。

所以我最终得到了三种脚本:自动生成的脚本,用于生成新的数据库。 手动生成的脚本执行相同操作,但添加了一些与功能要求无关的详细信息。 一组迁移脚本,用于将数据库从一个版本逐步移动到下一个版本。

我还有一堆测试,创建各种模式,使用这些脚本的组合并比较它们。

如果我需要图表,我可以使用一些逆向工程从模式或对象模型的代码创建图表。

我更喜欢使用模式。 这是封装关注区域的自然方式(无论是模块的模式还是模式来覆盖信息区域)。

我正在使用PostgreSQL,我更喜欢自己编写db启动(我希望100%控制,SQL就像它得到的那样明确。)。 我使用SchemaSpy生成ER图。 我对模式中的多个模式和外键没有任何问题 - 不确定它在MySQL中是如何工作的。

我不熟悉你提到的工具,但截图似乎显示它们支持模式。 可能值得再次检查。 http://www.dbwrench.com/screenshots/xp_explorer.shtml

至于模块化设计,我不确定模式是否足够,imho模式使大脑更容易对数据如何关联做出假设,它本身不会使模块更加模块化。 请说明您对模块化方式的需求。

我为每个模块架构保留了单独的数据库构建脚本,并在注释中注明它们依赖的其他模块。 然后,我根据需要将模式添加到与应用程序对应的数据库中。 使用普通索引而不是外键。 我总是发现手动操作最适合极其模块化的任务。

我在oracle数据库中使用了modular。 您可以通过SYNONYM访问外键,视图,表,函数和存储过程。 您必须执行以下两个查询以从父级子进程子模式中生成SYNONYM。

grant DELETE, INSERT, UPDATE, SELECT on parentUser.table1 to childUser;
CREATE OR REPLACE SYNONYM childUser.table1 FOR parentUser.table1;

table1存在于parentUser模式中,但在执行上述查询后,您可以从childUser访问此表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM