Visio2010建立ER图并直接导出为SQL语句
Visio2010建立ER图并直接导出为SQL语句
建立数据库时我们需要考虑数据之间的关系,为了理清数据之间的关系我们需要对数据进行统一的整理。对于较复杂的数据库我们需要建立数据库模型,具体可分为两步:首先对数据库进行结构分析并使用树、表等描述数据,然后分析数据库的操作方法,规定数据库的增删改查操作,这两个步骤就构成了我们通常所说的数据库模型。
数据库模型有多重分类,通常所说的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语句的更多相关文章
- Mysql中文乱码以及导出为sql语句和Excel问题解决
Mysql中文乱码以及导出为sql语句和Excel问题解决 这几天基于Heritrix写了一个爬虫,用到mysql,在导入导出数据时,遇到一些乱码问题,好不容易解决了,记录一下,以备查看.一.导出数据 ...
- 【转】用PowerDesigner对现有的数据库反向工程建立E-R图
转自:http://www.cnblogs.com/oceanshare/archive/2010/02/10/1667071.html 由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对 ...
- 用PowerDesigner对现有的数据库反向工程建立E-R图
由于早期的一个项目在数据库设计建立时没有输出为E-R图,偶在对此项目进行二次改造升级时则使用了PD对原有的数据库进行反向工程,即根据数据源将数据库的的所有表生成为E-R图结构,我使用的是PD 15,反 ...
- Visio2010新建E-R图
visio2010没有内置E-R图的模板,需要自己配置模具.步骤如下: 1.文件->新建->基本流程图->右键菱形->添加到新模具->命名为E-R图. 2.更多形状-&g ...
- 将Excel导出为SQL语句
需求说明:公司做项目前进行需求分析,确定表结构后需要建表,如果照着表格去敲,那就太麻烦了,所以想到了自动生成SQL语句. 思路大概就是:解析Excel,拼接SQL语句,输出SQL文件. 第三方jar包 ...
- ACCESS表与CSV文件相互导入、导出的SQL语句
一.将ACCESS表导出为CSV文件:Select * INTO [TEXT;FMT=CSV;DELIMITED;HDR=YES;DATABASE=E:\temp\].test.csv FROM Sh ...
- 在EA中将画出的ER图转换成SQL脚本
在进行数据库设计的时候,想着正好安装着EA软件呢,看能不能用EA画ER模型.结果发现不仅能画.并且还能进行整套数据库设计(生成SQL脚本). 以下以机房收费系统用户--学生为例.学生能够查看剩余金额. ...
- 关于使用Draw.io画数据库E-R图的说明
背景简介 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. diagrams.net是用于构建图表 ...
- Oracle导出的sql执行出错
建的表如果有constraint的话sql语句中会有create unique index...而在前面的建表语句中,这个index实际上已经建好了. 所以导出的sql语句,应该将后面的create ...
随机推荐
- SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行(转)
我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法.但是这样做实现起来非常复杂,而在SqlSe ...
- ref out 区别
1.使用ref型参数时,传入的参数必须先被初始化.对out而言,必须在方法中对其完成初始化. 2.使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字.以满足匹配. 3.out适 ...
- 2.8 The Object Model -- Enumerables
在Ember.js中,枚举是包含许多子对象的任何对象,并允许你使用Ember.Enumerable API和那些子对象一起工作.在大部分应用程序中最常见的可枚举是本地JS数组,Ember.js扩展到符 ...
- 结巴分词中TFIDF的原理
之前了解TFIDF只是基于公式,今天被阿里面试官问住了,所以深入讨论下TFIDF在结巴分词中原理. 概念 TF-IDF(term frequency–inverse document frequenc ...
- bzoj1630 / bzoj2023 [Usaco2005 Nov]Ant Counting 数蚂蚁
Description 有一天,贝茜无聊地坐在蚂蚁洞前看蚂蚁们进进出出地搬运食物.很快贝茜发现有些蚂蚁长得几乎一模一样,于是她认为那些蚂蚁是兄弟,也就是说它们是同一个家族里的成员.她也发现整个 ...
- Sybase数据库第三方软件安装
Sybase数据库第三方软件安装 1,安装软件:IQNC160011P_1-20011253.ZIP
- linux history记录格式修改
#保存一万条命令记录 sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile #在/etc/profile的文件尾部添加如下行数配置信息 ### ...
- KALI视频学习31-35
(三十一)Kali漏洞利用之SET Social Enginnering Toolkit(SET)是一个开源.Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库.是开源的社会工程学套 ...
- .Net web 关于表单标题
今天跟以前同事学到一个好东西,就是后台web界面表单标题展示的一个方法,新学到的一个方法...赶紧分享一下 在model 属性上加 [DisplayName("标题"), Req ...
- linuxI/O重定向
假设有这么一段python3程序: import sys ")sys.stderr.write("stderr1 ") 现在想要把程序的输出以及错误信息都存在文件中. 一 ...