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

数据库模型有多重分类,通常所说的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脚本。

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

visio 生成mysql脚本_Visio2010建立ER图并直接导出为SQL语句相关推荐

  1. mysql导出excel出乱码_Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]...

    一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内 ...

  2. PowerDesigner生成带中文注释的ER图

    PowerDesigner生成带中文注释的ER图 前言:参考资料 本文结合自己的需求和遇到问题,参考以下三篇文章,终于解决问题,谢谢三篇文章的作者! 第一篇:https://blog.csdn.net ...

  3. mysql 导入数据库sql语句_mysql中导入数据与导出数据库sql语句

    本文章来详细介绍关于mysql中导入数据与导出数据库sql语句,在mysql中常用的导入与导出数据的命令有source与mysqldump大家可参考. 1.例1:连接到本机上的MYSQL 首先在打开D ...

  4. mysql 下 计算 两点 经纬度 之间的距离 含具体sql语句

    mysql取字段逗号分隔的第一个 cover字段为:(admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B,admin/LUpiEMD1Pk6U6B) 取逗号分隔第一个词 ...

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

    Mysql中文乱码以及导出为sql语句和Excel问题解决 参考文章: (1)Mysql中文乱码以及导出为sql语句和Excel问题解决 (2)https://www.cnblogs.com/zhao ...

  6. pd 生成mysql 脚本_powerdesigner 生成数据库脚本

    PowerDesigner导出所有SQL脚本 操作:Database=>Generate Database PowerDesigner怎么导出建表sql脚本 1 按照数据库类型,切换数据库. D ...

  7. pd 生成mysql 脚本_PowerDesigner 如何生成数据库更新脚本

    最近在学习使用PowerDesigner 这个数据库设计工具,发现真的很强大,可以做很多事情,其中就涉及到如果数据库要进行更新了怎么办,主要是增加表,最麻烦的是修改字段名称,增加字段等操作,遇到主要的 ...

  8. sql2005生成sql2000脚本的时候出现“User.UserType: NoLogin 不是SQL Server 2005 的有效选项“ 的解决方案...

    网上搜得解决办法如下: 原文地址:http://www.cnblogs.com/finesite/archive/2009/08/16/1547007.html 背景: 以前在虚拟主机的数据库上曾在线 ...

  9. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  10. mysql增删改查大全_MySQL数据库增删改查SQL语句(2018整理集合大全)

    查看数据库 show databases; 使用数据库 use 数据库名; 创建数据库 CREATE DATABASE 数据库名; 删除数据库 DROP DATABASE 数据库名; 创建表 crea ...

最新文章

  1. 牛客网NOIP赛前集训营-普及组(第一场)
  2. 程序员,请您不要老是熬夜
  3. 洛谷【p2817】 宋荣子的城堡
  4. 深入理解并行编程-分割和同步设计(四)
  5. 你了解分层架构吗?给被PetShop“毒害”的朋友(转)
  6. [转载]QMessageBox 用法_vortex_新浪博客
  7. 32 开漏输出 高电平_关于各种IO输出类型详解
  8. 安卓设置屏幕方向后,恢复自动旋转
  9. vs2012安装VA插件
  10. 小丸工具箱\FFmpeg踩坑记录
  11. [原创]AM3352 + TPS65910 调试方法+调试记录
  12. android前置拍照镜像代码,在Android中镜像前置摄像头
  13. 微信web中IOS系统手机摇一摇功能实现及问题解决
  14. Caffe 理解blob之SyncedMen类同步CPU和GPU
  15. 电子科技大学858通信考研最新情况分析
  16. Unity抗锯齿设置
  17. 原来何恺明提出的MAE还是一种数据增强
  18. C语言小熊代码,用C语言写个可爱小熊
  19. 用python嵌套循环语句实现99乘法法则_Python 之 循环语句 ---99乘法表Python版
  20. 一些可以用于串口的一些通信协议

热门文章

  1. matlab可以拼图么,拼图matlab程序希望有人可以给我讲解一下!!有偿求标注
  2. Unity3D Timeline 工作流
  3. python和vba哪个难_VBA和Python到底哪个比较难学?
  4. 手机电脑同屏_把手游变成端游的同屏神器,就是这款Onebit“X9”了!
  5. 计算机辅助英语教学电子版,计算机辅助英语教学探究.pdf
  6. ea211css和cst,djm与ea211发动机对比
  7. linux开发arm音量加减代码,arm-linux学习:最简驱动模块(示例代码)
  8. hashmap 遍历_HashMap面试必问的数据结构相关知识总结
  9. Spring Could+Ant Design Pro表格数据加载
  10. 未分配利润与利润表不一致_财务报表中未分配利润和净利润不一样,这正常吗?...