2010-06-22 160 views
3

我们有一个由Parallels构建的系统,它依靠巨大(800+)的表来维护所有内容。为mySQL数据库打印ER图(800多张表)

我需要学习这个系统,以便能够编写查询来检索数据以生成各种需求的报表。

很明显,在分离哪些表格当前与手头任务相关时存在困难,所以我认为最好的方式是在整个系统表格上生成并打印多个页面的ERD。

我试图拖动所有使用TOAD的表 - 它坠毁了:) 第二次尝试时,我拖动表A-N,经过(很长时间)后,M-Z表成功。

我甚至设法让它们全部调整大小,安排并将ERD保存到文件中。

但是,当我进入打印或预览,打印子进程崩溃嘿嘿。

关于如何打印这个庞大的ERD的任何建议?或者另一种方法?表名不似乎是自我解释,所以我不能(实际上,并不真正想)超过800多张表,并希望我不会错过我所需要的,或部分。

在我甚至开始真正编写脚本和代码之前,我将不胜感激任何关于如何继续的建议或想法。

数据库在CentOS下的CentOS下,有些表是InnoDB,有些是MyISAM。 许多表似乎都有外键。

谢谢!

+2

即使您自动执行此操作,我从来没有见过任何以逻辑或有用的方式排列表的应用程序。所以我仍然建议你手动做一些。 – MJB 2010-06-22 11:37:17

+0

这是真的,把它分解成“逻辑包” – 2010-06-22 11:39:49

回答

7

我曾在拥有几百桌的地方(近1K),没有人真正知道发生了什么事情在系统中,公司的成长和雇佣了很多。一个人负责做一个图表,他自动地创造了一张巨大的瓷砖海报,其中包含了连接各种表格的线条(遍布各处)。我不确定他用了什么,多年前就是Unix和Oracle(在Linux和开源之前)。他的图表中的表格布局没有真正的韵律或理由。他成功创建了每张桌子的图表。 “海报”被放置在公共区域的墙壁上,并有几个外观,但没有人真正使用它,它不可用,太杂乱,太无组织。因此,我使用MS-Word来创建一个包含20个主表的单页面图表(它通过几次迭代,因为我发现了新的主表),每个外键和每个表以逻辑方式。我展示了列名,数据类型,可空性,PK和所有FK。我用监视器将我的图表放在墙上。最终,每个人​​都需要我的图表副本,包括制作“海报”的人。当我离开那份工作时,他们仍然在给我的图表添加新员工。

我建议你像探险家一样工作,找到关键表并将它们映射出去,在发现系统时制作尽可能多的特定图表。试图自动制作一个巨大的“海报”不会很好。

+0

完全正确!我已经多次使用大型数据库(超过800 +到1,5k表,而不包括db_links)。无法知道所有数据库的模式的每个部分。作为KM。多次说你总是使用20-50张桌子。其他更专门针对其他服务的业务规则。有时候你也会使用旧软件中的旧表,但是db建筑师喜欢将它保存在实际的数据库中。 “我们永远不知道有一天我们需要找到这些信息。”您需要拆分符合业务规则的模式和模式读取会更有用。 – aviel 2014-02-24 21:17:42

5

你试过mysql workbench? 如果您不介意windows,则可以尝试Enterprise Architect以及

+1

这确实是这样。但是不会有表格的逻辑顺序。他们很可能会彼此超过,所以你需要单独重新排列它们。 +1 – DrColossos 2010-06-22 11:44:56

+0

EA可以在各种布局中为您进行布局,这非常酷。虽然打印出来......他将需要相当多的纸张:) – 2010-06-22 11:47:22

+0

请参阅我在mysql工作台下面的关于Sinter的文章的笔记。 我启动了EA试用版 - 但我无法找到如何与数据库一起工作..连接到它,导入它或什么 - 所以我可以将表导入ERD。 – Carmageddon 2010-06-24 08:59:40

1

MySQL Workbench具有一些用于从创建脚本进行反向工程的强大工具。我没有用它来处理这样的大型数据库,但你应该检查它。

链接:http://wb.mysql.com/

+0

我安装了WB,但是我无法检索数据库模式: [code] 获取模式列表。 操作失败:表'information_schema.schemata'不存在 [/ code] 我也手动查找它 - 看起来模式已被删除。 我也试过菜单选项Database-> Reverse Engineer,也试过Synchronize Model选项,都想要schema。 – Carmageddon 2010-06-24 08:33:57

+0

你使用的是什么mysql版本?它可能是一个版本差异问题。 – 2010-06-24 10:27:41

+0

服务器版本:4.1.20-标准 – Carmageddon 2010-06-27 14:50:35

0

IIRC,MS Sql Server有一些用于制作图表的好工具,我知道它非常有帮助,您可以添加一个表格并自动添加所有相关的表格。如果您可以将表格转换为MS SQL兼容的SQL脚本,这可能会有所帮助。

+0

我只让他们在正在运行的生产系统上工作,我不想冒险破坏系统。 你可以建议一个简单的无风险的方式转换为MS SQL吗?那么我会加载它并尝试你建议的功能。 – Carmageddon 2010-06-22 15:24:51

+0

一个简单的解决方案是获得无数据的MS SQL兼容的sql转储,这将是一个只有create table语句的文件。然后在sql server上运行它。您可以使用'mysqldump -u user -p --no-data --skip-triggers --compatible = mssql databasename>/path/to/file.sql'获取转储。更新:从mysqldump手动:此选项不保证与其他服务器的兼容性。它只启用当前可用于使转储输出更加兼容的SQL模式值。所以,如果你有错误,你将不得不编辑sql(查找和替换)。我仍然认为这是值得一试的。 – ceteras 2010-06-22 21:05:51

0

Navicat 10.1和更高版本可以完成这项工作。使用它的模型工具并将数据库导入它,然后重新安排。打印结果PDF或直接打印机。