使用Enterprise Architect设计数据库

yumo6662个月前 (03-20)技术文章23

EA简介

Enterprise Architect(EA)是由Sparx Systems开发的一款综合建模和设计工具,广泛应用于软件开发、系统工程和业务流程建模。以 下是Enterprise Architect的一些主要特点和功能:

  1. 建模语言:EA支持多种建模语言,包括UML(统一建模语言)、BPMN(业务流程模型与符号)、SysML(系统建模语言)等。这使 得用户能够创建详细的图表,涵盖系统或流程的不同方面。
  2. 图表类型:该工具提供了多种图表类型,包括类图、用例图、时序图、活动图和状态机图等。这种多样性使其适用于软件开发和 设计的不同阶段。
  3. 协作功能:Enterprise Architect促进团队成员之间的协作,具有版本控制、团队协作工具以及支持多人同时编辑模型的功能。
  4. 需求管理:EA包括捕获和管理需求的功能,允许用户在设计和实施阶段跟踪需求。这有助于确保最终产品满足指定的需求。
  5. 代码工程:该工具支持双向工程,用户可以从模型生成代码,也可以从代码生成模型。它支持多种编程语言,使得从设计到实施 的过渡更加顺畅。
  6. 文档生成:Enterprise Architect可以自动从模型生成文档,这对于维护系统设计和架构的全面记录非常有用。
  7. 可定制性:用户可以根据特定需求自定义工具,包括创建自定义图表、刻板印象和模板。
  8. 集成能力:EA可以与其他工具和平台集成,增强其功能,允许在不同软件开发环境中实现无缝工作流程。
  9. 企业架构支持:除了软件建模外,EA还支持企业架构框架,如TOGAF和Zachman,使组织能够将IT战略与业务目标对齐。

类似工具软件

以下是一些与Enterprise Architect类似的建模和设计工具:

  1. Visual Paradigm:支持UML、BPMN等多种建模语言,提供协作、需求管理和代码生成等功能。
  2. Lucidchart:在线图表工具,适用于流程图、UML图、组织结构图等,便于团队协作。
  3. Astah:一款轻量级的建模工具,支持UML、ER图等,适合快速原型设计。
  4. StarUML:支持多种建模语言的开源建模工具,功能强大,适合软件开发。
  5. IBM Rational Rose:一款老牌的UML建模工具,适用于大型软件项目的设计和建模。
  6. ArchiMate:专注于企业架构建模的工具,支持企业架构框架的可视化。

这些工具各有特点,用户可以根据具体需求选择合适的工具进行建模和设计。本文使用EA演示数据库的概念、逻辑、物理设计,并基于物理设计生成相应数据库的SQL代码。

EA进行数据库设计

EA在数据库设计上能力全面,除了提供工具支持概念、逻辑和物理设计外,还提供了从已有数据库导入物理模型的能力,基于物理设计输出SQL的能力,以及自动生成数据库说明文档的能力。下面逐一演示。

  1. 基于向导开始数据库的设计(概念、逻辑、物理)




概念设计阶段重点关注对数据实体、关系的描述,如下




逻辑设计阶段,关注实体、关系的属性。使用如下工具绘制


物理设计阶段,关注索引,约束等。形如如下



  1. 从已有数据库导入物理模型

windows下EA可以基于ODBC访问数据库,导入数据模型。需要先安装相应数据库的ODBC驱动,这里使用MySQL演示下。

然后创建一个数据库连接,双击打开即可按照向导完成模型的导入。











  1. 制作数据库文档

EA话可以帮助生成数据库word说明文档,这个对于交流而言还是很有用的,毕竟不全不是技术人员,使用word可以让受众更广。




文档内容如下:




  1. 生成SQL

当然EA可以帮直接生成SQL用来创建数据表等。在物理设计页面选中要生成的对象。




生成的SQL文件内容如下:

/* ---------------------------------------------------- */
/*  Generated by Enterprise Architect Version 15.0 		*/
/*  Created On : 05-12月-2024 11:25:44 				*/
/*  DBMS       : MySql 						*/
/* ---------------------------------------------------- */

USE `db_jygt`
;

SET FOREIGN_KEY_CHECKS=0
; 
/* Drop Tables */

DROP TABLE IF EXISTS `t_account_detail` CASCADE
;

DROP TABLE IF EXISTS `t_account_name` CASCADE
;

/* Create Tables */

CREATE TABLE `t_account_detail`
(
	`f_id` INT NOT NULL AUTO_INCREMENT,
	`f_userid` VARCHAR(64) NOT NULL COMMENT '用户账号',
	`f_opponent` VARCHAR(64) NOT NULL COMMENT '交易对方账号',
	`f_vno` VARCHAR(128) NOT NULL COMMENT '版本号',
	`f_direction` INT NOT NULL DEFAULT 0 COMMENT '交易方向:
	0. 支出;
	1. 收入;',
	`f_type` INT NOT NULL DEFAULT 1 COMMENT '交易类型:
	1. 购买产品;
	2. 充值;
	3. 退款;10 任务奖励',
	`f_amount` BIGINT NOT NULL COMMENT '交易金额 (单位:分)',
	`f_create_time` DATETIME NULL,
	`f_balance_after` BIGINT NOT NULL DEFAULT 0 COMMENT '交易后账户余额',
	`f_balance_before` BIGINT NOT NULL DEFAULT 0 COMMENT '交易前账户余额',
	`f_remark` VARCHAR(255) NULL,
	`f_sign` VARCHAR(64) NULL COMMENT '签名',
	`f_state` INT NOT NULL DEFAULT 1,
	CONSTRAINT `PK_t_account_detail` PRIMARY KEY (`f_id` ASC)
)
ENGINE=InnoDB
DEFAULT CHARSET utf8
COLLATE utf8_general_ci

;

CREATE TABLE `t_account_name`
(
	`id` INT NOT NULL,
	`account` VARCHAR(255) NOT NULL,
	`account_name` VARCHAR(255) NOT NULL,
	`modify_time` DATETIME NULL,
	CONSTRAINT `PK_t_account_name` PRIMARY KEY (`id` ASC)
)
ENGINE=InnoDB
DEFAULT CHARSET utf8
COLLATE utf8_general_ci

;

/* Create Primary Keys, Indexes, Uniques, Checks */

ALTER TABLE `t_account_detail` 
 ADD CONSTRAINT `userid_vno` UNIQUE (`f_userid` ASC, `f_vno` ASC)
;

ALTER TABLE `t_account_detail` 
 ADD INDEX `userid` (`f_userid` ASC)
;

ALTER TABLE `t_account_detail` 
 ADD INDEX `userid_create_time` (`f_userid` ASC, `f_create_time` ASC)
;

ALTER TABLE `t_account_name` 
 ADD CONSTRAINT `account_uniq` UNIQUE (`account` ASC)
;

ALTER TABLE `t_account_name` 
 ADD INDEX `IXFK_t_account_name_t_account_detail` (`id` ASC)
;

/* Create Foreign Key Constraints */

ALTER TABLE `t_account_name` 
 ADD CONSTRAINT `FK_t_account_name_t_account_detail`
	FOREIGN KEY (`id`) REFERENCES `t_account_detail` (`f_id`) ON DELETE Restrict ON UPDATE Restrict
;

SET FOREIGN_KEY_CHECKS=1
; 



参考资料

  1. Enterprise Architect : https://sparxsystems.com/products/ea/
  2. MySQL ODBC : https://dev.mysql.com/downloads/connector/odbc/


相关文章

历史数据库的设计与实现

摘 要: 针对Wonderware平台自带的历史数据服务无法满足大量历史数据同时存储的问题,对该平台的历史数据服务进行了研究和分析,在保证Wonderware平台存储历史数据的正确性、及时性和完整性的...

python开发 数据库编程

python db api 介绍在pytohn api之前是使用对应数据库接口来进行与数据库交互的很麻烦,而python db api建立了统一的api接口,可以对接不同的数据库。python db...

积攒十五年的MySQL数据库设计经验,拿走不谢

前言关系型数据库是当前广泛应用的数据库类型,关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计。对于数据库规模较小的情况,我们可以比较轻松地处理数据库中的表结构。然而,随着项目规...

AI浪潮下,个人数据库与知识管理如何带你弯道超车?

现代人每天接收的信息量极大,远超 15 世纪普通人一生总和。当浏览器标签页和备忘录杂乱时,大脑能否容纳知识宇宙成问题。别急着扩充脑容量,聪明的解法是打造“数字外脑”,如钢铁侠的贾维斯、福尔摩斯的记忆宫...

鸿博档案:档案数字化基本流程是什么

一、术语和定义1、数字化:用计算机技术将模拟信号转换为数字信号的处理过程。2、纸质档案数字化:采用扫描仪或数码相机等数码设备对纸质档案进行数字加工,将其转化为存储在磁带、磁盘、光盘等载体上并能被计算机...

软件测试流程之数据库基础点

扼要:1、了解当前流行的数据库有哪些;2、掌握基本的数据库命令;数据库,对测试人员来说,是必须要懂得的技能,不需要太精通,但要了解其大的概念、分类,掌握基本操作命令即可。甚至在一些公司中,测试人员还要...