Visio2010建立ER图并直接导出为SQL语句

2013年08月20日 ⁄ 综合 ⁄ 共 2581字 ⁄ 字号    ⁄ 评论关闭

建立数据库时我们需要考虑数据之间的关系,为了理清数据之间的关系我们需要对数据进行统一的整理。对于较复杂的数据库我们需要建立数据库模型,具体可分为两步:首先对数据库进行结构分析并使用树、表等描述数据,然后分析数据库的操作方法,规定数据库的增删改查操作,这两个步骤就构成了我们通常所说的数据库模型。

数据库模型有多重分类,通常所说的ER图是图模型,除此之外还有层次模型、网状模型、关系模型等。这其中比较简单的当数ER图,也称实体-联系图(Entity RelationshipDiagram),它提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。一般的ER图画法是采用圆、正方形、菱形来描述实体及他们之间的关系,这三者在图中分别代表了属性、实体、联系,如下图为一般ER图。

对ER图进行建模时提倡使用PowerDesigner(功能强大,形式多样),因为PowerDesigner能够直接将ER图导出为T-SQL代码。PowerDesigner能够做到Visio就不能吗?其实Visio本身没有太大的毛病,而且操作简单,但是功能相对较少和其他开发程序交互较弱。

一、Visio绘制ER图

1、Visio绘制一般的ER图

Visio没有提供专门的模板来绘制一般的ER图,有一种比较折中的办法:先在“更多形状”-->“流程图”-->“基本流程图”中找到长方形和菱形,分别右键“添加到我的形状”-->“添加到新模具”在弹出的对话框中填入“ER图”,这样我们就把菱形和方块添加到了新模具“ER图”中。用同样的思路,在“数据库”-->“ORM图表”找到椭圆和直线,添加到模具“ER图”中。

添加完成后,我们就可以在画ER图时打开该模具(文件->形状->打开模具),ER图所有的元素都会在一个模具中显示出来了。

2、用Visio自带的数据库模型模型图画ER图

Visio提供了两种形式绘制ER图,一种是通过数据库选项卡内的反向工程,它通过Visio和其他数据库驱动器进行交互,将已有的数据库架构转换为ER图;另一种是通过图形工具自己创建ER图。下面以一个收费系统的数据库的ER图为例,为大家介绍visio绘制ER图的方法。

打开Visio后选择“文件”-->“新建”-->“软件和数据库”,然后双击创建数据库模型图。创建后的控制面板左边分别有三个针对数据库ER模型的七个专用工具,最常用的是最上面的两个分别代表了数据库表及外键关系。操作简单在使用时只需将实体拖到页面上,随后会在下面出现数据库属性,在其中添加或修改数据表的一些属性。

可以通过更改实体的属性进行增加列、设置列数据类型、设置主键等功能。下图创建了一个名为T_Admin的实体,主键为chSerial。

       提示:如果想实体图显示实体的数据类型,可以通过数据库----管理----显示选项----表----数据类型---显示物理的,进行设置

实体间的关系,在visio中有两种表示表示方法;分别为下图所示:

visio默认为第一种形式,箭头的指向为实体的父表。可以通过数据库----管理----显示选项----文档----同时选中关系和鱼尾纹进行设置改变为第二种显示方式。

使用关系连接线连接后,会自动生成外键。生成的外键会在从表中自动创建父表中的主键列,可通过“数据库属性”----“定义”----选中两表中相互关联的列----“断开连接”来断开列,同样也可以使用该方法来连接两表中的列作为外键。效果图如下图所示:

使用Visio画的ER图基本的操作步骤已介绍完毕,在使用Visio建模时一定要细心,在画图前期一定要分析好每个实体及实体属性的命名规范。

上面的方法是通过使用图形工具来自己创建ER图,另外一种方法是通过“数据库”----“反响工程”自动生成某个数据库的ER图,操作简单、方便,建议大家使用下并和自己创建的ER图进行比较来纠正自己的使用误区。

二、Visio数据库模型图导出成SQL脚本

Visio没有提供直接的导出方法,想要将画好的ER图导出为SQL脚本只依赖Visio是远远不够的,而要使用其他工具。一种方法是使用Visio的导入/导出功能,将模型图导出为ERwin文件,然后使用PowerDesigner或者ERwin打开,最后转换为SQL即可,但是这种方法在Visio2010中已不存在,Visio2010不支持将ER图导出为ERwin格式,只支持导入。这就需要我们的第二种方法。

另外一种方法是使用OrthogonalToolBox小工具,它是专门负责VisioER转出的小工具,這個工具会通过XSLT模板来产生对应的SQLScript。

使用方法:

1.下载并安装OrthogonalToolBox(注:需要先安裝.Net Framework 1.1.4322,下载地址http://download.csdn.net/detail/zhang_xinxiu/5788193);

2.把下载下来的xslt文档Copy到:C:\Program Files(X86)\OrthogonalSoftware Corporation\Orthogonal Toolbox\StyleSheets;

3.若在Visio工具列沒有看到OrthogonalToolbox,在目前的工具列上检视 - 工具列 – OrthogonalToolbox 打勾,便可看到;

4. 选择“加载项”-->“OrthogonalToolbox”-->选中需要导出的ER图-->“Export XML”-->选中Set StyleSheet-->并选中OTERtoSQL.xslt模板

5.按下 Export会产生一个xml文件,使用IE打开该XML文件即可看见我们创建数据库的SQL脚本。

有问题就会有解决方法,我们需要耐心去找到它,有时几分钟,有时甚至几小时又或者几天,解决问题的关键在于是否有耐心,在这个过程中学到的知识比结果更重要。

Visio2010建立ER图并直接导出为SQL语句的更多相关文章

  1. Mysql中文乱码以及导出为sql语句和Excel问题解决

    Mysql中文乱码以及导出为sql语句和Excel问题解决 这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看.一.导出数据 ...

  2. 【转】用PowerDesigner对现有的数据库反向工程建立E-R图

    转自:http://www.cnblogs.com/oceanshare/archive/2010/02/10/1667071.html 由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对 ...

  3. 用PowerDesigner对现有的数据库反向工程建立E-R图

    由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对此项目进行二次改造升级时则使用了PD对原有的数据库进行反向工程,即根据数据源将数据库的的所有表生成为E-R图结构,我使用的是PD 15,反 ...

  4. Visio2010新建E-R图

    visio2010没有内置E-R图的模板,需要自己配置模具.步骤如下: 1.文件->新建->基本流程图->右键菱形->添加到新模具->命名为E-R图. 2.更多形状-&g ...

  5. 将Excel导出为SQL语句

    需求说明:公司做项目前进行需求分析,确定表结构后需要建表,如果照着表格去敲,那就太麻烦了,所以想到了自动生成SQL语句. 思路大概就是:解析Excel,拼接SQL语句,输出SQL文件. 第三方jar包 ...

  6. ACCESS表与CSV文件相互导入、导出的SQL语句

    一.将ACCESS表导出为CSV文件:Select * INTO [TEXT;FMT=CSV;DELIMITED;HDR=YES;DATABASE=E:\temp\].test.csv FROM Sh ...

  7. 在EA中将画出的ER图转换成SQL脚本

    在进行数据库设计的时候,想着正好安装着EA软件呢,看能不能用EA画ER模型.结果发现不仅能画.并且还能进行整套数据库设计(生成SQL脚本). 以下以机房收费系统用户--学生为例.学生能够查看剩余金额. ...

  8. 关于使用Draw.io画数据库E-R图的说明

    背景简介 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. diagrams.net是用于构建图表 ...

  9. Oracle导出的sql执行出错

    建的表如果有constraint的话sql语句中会有create unique index...而在前面的建表语句中,这个index实际上已经建好了. 所以导出的sql语句,应该将后面的create ...

随机推荐

  1. python拼接字符串

    python拼接字符串一般有以下几种方法: 1.直接通过(+)操作符拼接 s = 'Hello' + ' ' + 'World' + '!' print(s) 输出结果:Hello World! 使用 ...

  2. E题:Water Problem(快速幂模板)

    题目大意:原题链接  题解链接 解题思路:令x=x-1代入原等式得到新的等式,两式相加,将sin()部分抵消掉,得到只含有f(x)的状态转移方程f(x+1)=f(x)+f(x-2)+f(x-3),然后 ...

  3. vue-router的hash模式与history模式的对比

    Vue-router 中hash模式和history模式的关系在vue的路由配置中有mode选项 最直观的区别就是在url中 hash 带了一个很丑的 # 而history是没有#的mode:&quo ...

  4. 52. N-Queens II(数个数)

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  5. cocos2dx 3.x 蒙板 遮罩 点击圆功能

    //注册触摸 EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); listener->onT ...

  6. GreenOpenPaint的实现(三)添加标尺

    标尺对于图像处理程序,特别是需要精确测量的程序来说意义很大.这里进行了专门的研究. 基于现在已经引入的类和定义的变量,主要讲一讲如何调用. 1.添加放大缩小 void CGreenOpenPaintD ...

  7. 什么是OPTEE-OS

    1. 为什么会出现这种技术? 为了安全,例如:保护指纹虹膜的生物特征数据 2. 为了确保数据安全各家公司都做了些什么? Arm公司提出的了trustzone技术,用一根安全总线(称为NS位)来判断当前 ...

  8. kafka生产者和消费者流程

    前言 根据源码分析kafka java客户端的生产者和消费者的流程. 基于zookeeper的旧消费者 kafka消费者从消费数据到关闭经历的流程. 由于3个核心线程 基于zookeeper的连接器监 ...

  9. Coursera SDN M1.2.1 SDN History: Programmable Networks 2

    NOTE Capsules Example 1.Type Field: excute forwarding routine => carry program 2.Previous address ...

  10. 更换Ubuntu14.04主题

    闲暇之余,想玩一玩Ubuntu的主题,想把原来的主题换成Numix主题,说干就干. sudo add-apt-repository ppa:numix/ppa sudo apt-get update ...