数据模型设计软件调研

目标: 找到一个好用的数据模型设计软件, 适合数据仓库项目开发或大型数据库设计.

结果:  Eclipse ERMaster 功能不算太多, 但ER建模功能都有了, 使用体验最好, 我推荐使用 Eclipse ERMaster  , 另外, PowerDesigner 功能最多, 不差钱可以选这个. 

下面是早期的评估:, 

候选软件清单: Oracle SQL Developer Data Modeler/ MySQL Workbench/ Eclipse ERMaster/ 插件/ Eclipse AmaterasERD插件.  我熟悉的PowerDesigner 和 ERWin 自然不在此列.

需求点

刚需吗

SQL Developer

Data Modeler

MySQL

Workbench

Eclipse

AmaterasERD

插件

总结评价

比较适合数仓项目, 操作体验不是很好

功能较弱

不能ER图的分解, 不支持table的search功能,  该插件功能不多, 但优秀. 适合小型项目使用.

需要能将数仓完整的ER, 分解在一些小的ER图上展现. 

必须

支持

不支持

不支持

要能按照Table名做全局搜索, 即子ER图上的Table也能被找到.

必须

支持

??

不支持

能表达出Table和Table之间的关系

必须

支持

??

支持

能导出Table的DDL语句

必须

支持

??

支持

Table名能包含schema, 数仓项目基本上需要多个schema的

必须

支持

??

支持

支持domain定义

最好有

??

??

支持

一个Table能以快捷方式的形式出现在子ER图上

最好有

不支持

??

不支持

反向工程

最好有

支持

??

支持

支持逻辑模型和物理模型

最好有

支持

??

支持

支持Teradata

最好有

不支持

不支持

??

Oracle SQL Developer Data Modeler

   巨无霸软件包, 和ERWin比较像. 和Oracle出品的其他客户端工具一样, 我用着总是感觉挺别扭的. 不过这应该是适合大型数仓项目最好的免费ER设计工具了.

MySQL Workbench

   没有分组的功能, 不太适合数据仓库项目用, 直接放弃

Eclipse AmaterasERD

    http://amateras.osdn.jp/cgi-bin/fswiki_en/wiki.cgi?page=AmaterasERD

     不能ER图的分解, 不支持table的search功能,  总体觉得该插件功能不多, 但优秀. 适合小型项目使用.

增加一个候选 SQL Power Architect, 网址 http://software.sqlpower.ca/page/architect, 特点有:
1. 社区版免费
2. 操作不复杂
3. 建模能力完全够用, 常用的功能有:
(1)反向工程:先建立JDBC连接, 然后左边导航树就有了数据库节点, 可将DB中的Table直接拖拉到画布上.
(2)鼠标拖拉即可调整栏位次序.
(3)点击关系线, 即可高亮主外键栏位.
(4)生成SQL脚本, 对于vertica 这样小众的数据库, 在生成SQL的对话框中, 选择数据库类型为Generic SQL-92, 生成的DDL简单修一下即可在vertica执行.
它有一个致命的缺点: 鼠标很难将table图放到画布合适的位置上, 让人很抓狂.


Eclipse ERMaster 插件
update site 为 http://ermaster.sourceforge.net/update-site/
(1)可以使用 category 来为模型分块, 这一点对于大型项目非常重要.
(2)有两种数据字典维护功能, 分别是 word(单个字段) 和 manage group(多个common 字段的group), 使用都非常方便.
(3)鼠标拖拉即可调整栏位次序.
(4)点击关系线, 即可高亮主外键栏位.
(5) 可以按table名/字段名搜索
(6)模型图可以调的很好看.

### 项目调研阶段 在软件项目调研阶段,重点在于全面理解业务需求、用户期望和系统边界,为后续设计提供坚实基础: - **业务流程分析**:通过访谈、问卷和现场观察等方式,收集用户对现有业务流程的描述,识别流程中的关键节点和痛点[^1]。 - **需求收集与整理**:明确功能性需求和非功能性需求,包括性能、安全、兼容性等方面的要求,并形成需求规格说明书(SRS)[^1]。 - **可行性分析**:从技术、经济、法律和操作角度评估项目的可行性,确保项目在资源和时间限制内可以实现目标[^1]。 - **利益相关者确认**:识别所有与项目相关的干系人,包括最终用户、管理层、外部供应商等,确保在设计阶段能够覆盖各方诉求[^1]。 ### 总体设计阶段 总体设计阶段的目标是构建系统的高层架构,明确模块划分、接口定义和数据流设计,为详细设计和开发提供蓝图: - **系统架构设计**:选择适合的架构风格(如MVC、微服务、分层架构等),并定义各层之间的交互方式和职责边界[^1]。 - **模块划分与接口定义**:将系统功能划分为若干模块,明确每个模块的功能、输入输出参数和调用方式,确保模块间松耦合、高内聚[^1]。 - **数据库设计**:根据业务需求设计数据库模型,包括概念模型(如ER图)、逻辑模型和物理模型,确保数据结构合理、扩展性强[^1]。 - **系统部署设计**:确定系统的部署环境、网络拓扑、服务器配置和负载均衡策略,保障系统在不同环境下的稳定运行[^1]。 - **安全与性能设计**:制定系统的安全机制(如身份认证、权限控制、数据加密)和性能优化策略(如缓存机制、异步处理、数据库索引优化)[^1]。 ### 软件项目调研与总体设计模板 以下是一个通用的软件项目调研与总体设计文档模板结构: #### 1. 项目背景与目标 - 描述项目的背景、目的、预期成果和关键成功因素。 #### 2. 需求分析 - 功能性需求:列出系统应实现的核心功能。 - 非功能性需求:包括性能、安全性、可用性、可扩展性等要求。 - 用户角色与权限:定义不同用户类型及其操作权限。 #### 3. 系统架构设计 - 架构图:展示系统的整体结构和模块划分。 - 技术选型:说明所采用的技术栈、框架和开发工具。 - 数据流图:描述系统内部的数据流动和处理过程。 #### 4. 模块设计 - 模块列表:列出所有模块及其功能描述。 - 接口定义:说明模块之间的调用方式、参数传递和异常处理机制。 #### 5. 数据库设计 - 概念模型:ER图展示实体及其关系。 - 逻辑模型:表结构、字段说明和主外键约束。 - 物理模型:数据库部署方案、索引策略和分区设计。 #### 6. 安全部署与性能优化 - 安全策略:身份验证、权限控制、数据加密等。 - 性能优化:缓存机制、异步处理、数据库优化等。 - 部署方案:服务器配置、网络拓扑、负载均衡策略。 #### 7. 风险与应对措施 - 列出可能遇到的技术、管理或外部风险,并提出相应的缓解策略。 #### 8. 项目里程碑与进度安排 - 给出总体设计完成后的开发、测试、上线等关键时间节点。 ### 示例代码:使用Python生成ER图(基于SQLAlchemy和Graphviz) ```python from sqlalchemy import create_engine, MetaData from sqlalchemy_schemadisplay import create_schema_graph # 连接数据库 engine = create_engine('mysql+pymysql://user:password@localhost/db_name') metadata = MetaData(bind=engine) # 生成ER图 graph = create_schema_graph(metadata=metadata, show_datatypes=True, show_indexes=True) graph.write_png('er_diagram.png') ``` 该代码使用SQLAlchemy和`sqlalchemy_schemadisplay`库生成数据库的ER图,便于在总体设计阶段可视化数据库结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值