ER图和数据模型图可以互相转换,使数据库表设计非常容易.
ER图用于需求规格说明书.
数据模型图用于概要设计.
由数据模型图生成的SQL建表操作脚本, 稍加修改,就可以在程序中使用.
由ER图和数据模型图,互相转换, 可以很容易的添加主键和外键, 普通字段, 以及字段的精确定义.
可以从一个粗糙的ER草稿图,变成最终可用的数据库表设计.
实验环境: win7x64 + EA8.0.858
将EA中的ER图对应的数据库, 示例中选mysql
建立ER图草稿
转换成数据模型图
在数据模型图中增加需要的字段, 或设置ER图没有设置的字段细节定义.
主键定义完的数据模型图, 在3个表中都存在一个自增主键 "id".
将数据模型图转成ER图, 可以看到数据实体属性已经变了.
在ER图中, 手填也行. 不过由工具填更靠谱~.
花费20%的力气,享受80%的好处, 懒人都是这么想的~
看到属性的变化如下:
增加外键.
在数据模型图中添加外键属性, 连接主表和外键对应的表.
我应该连接个人信息表, 因为user_id对应的是个人信息表中的id字段. 这里不改了,示意一下.
在外键设置框中设置外键.
FK means Foreign Keys
加了外键的数据模型图.
数据模型图转成ER图后, tbl_employee_info多了2个外键.
在ER图转数据模型图时, 发现有BUG. 外键不正确. 看来就得从数据模型图项ER图转换了. 转换后的图给需求规格说明书用.
这有点本末导致了, 很想看看EA9.3是不是已经修复了这个BUG.
真有bug..., 在数据模型图中, 重新添加了一次外键.
在每个表中, 继续添加非外键的字段, 完成数据模型图.
从最终的数据模型图中转换出的ER图:
生成供程序参考用的SQL脚本
生成的SQL脚本如下:
/** -------------------------------------------------- */
/** Generated by Enterprise Architect Version 8.0.858*/
/** Created On : 星期五, 30 十一月, 2012 */
/** DBMS : MySql */
/** -------------------------------------------------- */
USE TestDb
;
/** Drop Tables, Stored Procedures and Views */
DROP TABLE IF EXISTS tbl_personal_info
;
DROP TABLE IF EXISTS tbl_job
;
DROP TABLE IF EXISTS tbl_employee_info
;
/** Create Tables */
CREATE TABLE tbl_personal_info
(
id BIGINT NOT NULL,
name CHAR(64) NULL,
age INTEGER NULL,
tm_stamp TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE UQ_tbl_personal_info_id(id)
)
;
CREATE TABLE tbl_job
(
id BIGINT NOT NULL,
job_type INTEGER NULL,
job_desc TEXT NULL,
tm_stamp DATETIME NULL,
PRIMARY KEY (id),
UNIQUE UQ_tbl_job_id(id)
)
;
CREATE TABLE tbl_employee_info
(
id BIGINT NOT NULL,
user_id BIGINT NULL,
job_id BIGINT NULL,
grade INTEGER NULL,
tm_stamp TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE UQ_tbl_employee_info_id(id),
KEY (job_id),
KEY (user_id)
)
;
/** Create Foreign Key Constraints */
ALTER TABLE tbl_employee_info ADD CONSTRAINT FK_tbl_employee_info_tbl_job
FOREIGN KEY (job_id) REFERENCES tbl_job (id)
;
ALTER TABLE tbl_employee_info ADD CONSTRAINT FK_tbl_employee_info_tbl_personal_info
FOREIGN KEY (user_id) REFERENCES tbl_personal_info (id)
;
总结:
如果要手工画出最终转换出来的这种ER图, 不好画. 对EA自定义的那些常量不熟悉, 也不想熟悉.
ER图草稿转换成数据模型图, 就只能用数据模型图, 不能再从ER图再转成原来的数据模型图, 要不自己手工添加的字段定义和外键就废了~
从手工画的ER图,转成的数据模型图的字段参数都没有, 需要自己手工添加.
我宁可从数据模型图向ER图转换~~, 虽然有点本末倒置.