DataUml Design 教程3-模型与数据库同步
上一节我们已经建立好了数据模型,那么怎么让数据模型和数据库进行同步呢?模型同步到数据库非常简单,只需要模型绑定到数据库即可。DataUml Design目前支持和Oracle与MS Server数据库进行同步。
模型绑定到数据库这里就不再讲解了,不懂的请看上一节内容。
1、同步数据表(模型同步到数据库)
同步原则:①先同步主表,后同步子表。②数据库中表不存在则创建新表,表存在则修改表。
这里我们同步顺序为:供应商信息->采购订单->采购明细
1)、选择“供应商信息”单击右键选择“同步数据表(保存到数据库)”如图3-1,然后弹出提示对话框“同步到数据表之后不可撤消,是否要同步到数据表?”,选择“是”。数据表同步到数据库中。

以下是同步数据表的日志
供应商信息表
[供应商信息]:开始同步到数据表
[供应商信息]:创建表"Suppliers"成功
[供应商信息]:添加表"Suppliers"备注成功
[供应商信息]:创建主键"PK_Suppliers(ID)"成功
[供应商信息]:同步到数据表结束
采购订单表
[采购订单]:开始同步到数据表
[采购订单]:创建表"PurchaseOrder"成功
[采购订单]:添加表"PurchaseOrder"备注成功
[采购订单]:添加字段"ID"备注成功
[采购订单]:添加字段"StorageType"备注成功
[采购订单]:添加字段"OrderID"备注成功
[采购订单]:添加字段"AgentsOrderNo"备注成功
[采购订单]:添加字段"OrderTime"备注成功
[采购订单]:添加字段"SuppliersCode"备注成功
[采购订单]:添加字段"OrderState "备注成功
[采购订单]:添加字段"Buyer"备注成功
[采购订单]:添加字段"OperationTime"备注成功
[采购订单]:添加字段"OperationUser"备注成功
[采购订单]:创建主键"PK_PurchaseOrder(ID)"成功
[采购订单]:创建唯一键"UK_OrderNo(OrderID)"成功
[采购订单]:创建外键"fk_Suppliers_PurchaseOrder(ID)->Suppliers(ID);"成功
[采购订单]:同步到数据表结束
采购明细表
[采购单明细]:同步到数据表结束
[采购单明细]:开始同步到数据表
[采购单明细]:创建表"PurchaseOrderItem"成功
[采购单明细]:添加表"PurchaseOrderItem"备注成功
[采购单明细]:创建主键"PK_PurchaseOrderItem(ID)"成功
[采购单明细]:创建外键"fk_Order_Item(OrderID)->PurchaseOrder(OrderID);"成功
[采购单明细]:同步到数据表结束
同步完成之后,数据模型会记录和数据表绑定的信息。
大家可以用PLSQL看看数据库中是否已创建了表。如下图

图为“采购订单”的键信息
模型中类和数据表绑定之后,选中类右键菜单中“清除同步信息”和“检查同步状态”变成可用。如图3-2

图3-2
如果修改了模型中类的属性,只需选择类右键“同步数据表” 菜单即可。DataUml Design自动会用SQL语句来更新数据表结构。
2、检查同步状态
下面以“采购订单”为例:
1)、模型新增个字段
在“采购订单”中新增一个字段“备注”,然后选中类,单击鼠标右键选择“检查同步状态”菜单,出现如下提示:
[采购订单]:开始检查
[采购订单]:数据表中不存在字段【Remark】
[采购订单]:检查结束
说明数据表中不存在字段Remark
2)、模型修改字段属性
在“采购订单”中修改字段“采购员”的长度为51、默认值为gust、备注为“采购员备注”,然后单击鼠标右键选择“检查同步状态”菜单,出现如下提示:
[采购订单]:开始检查
[采购订单]:数据表中字段【Buyer】的长度与模型的字段长度不一致
[采购订单]:数据表中字段【Buyer】备注与模型备注不一致
[采购订单]:数据表中字段【Buyer】的默认值与模型的默认值不一致
[采购订单]:数据表中不存在字段【Remark】
[采购订单]:检查结束
3)、模型删除一个字段
在“采购订单”中删除“代理订单号”字段,然后单击鼠标右键选择“检查同步状态”菜单,出现如下提示:
[采购订单]:开始检查
[采购订单]:模型中不存在属性为【AGENTSORDERNO】的字段
[采购订单]:数据表中字段【Buyer】的长度与模型的字段长度不一致
[采购订单]:数据表中字段【Buyer】备注与模型备注不一致
[采购订单]:数据表中字段【Buyer】的默认值与模型的默认值不一致
[采购订单]:数据表中不存在字段【Remark】
[采购订单]:检查结束
4)、模型中增加表唯一键
在“采购订单”中添加唯一键名UK_test,然后单击鼠标右键选择“检查同步状态”菜单,出现如下提示:
[采购订单]:开始检查
[采购订单]:模型中不存在属性为【AGENTSORDERNO】的字段
[采购订单]:数据表中字段【Buyer】的长度与模型的字段长度不一致
[采购订单]:数据表中字段【Buyer】备注与模型备注不一致
[采购订单]:数据表中字段【Buyer】的默认值与模型的默认值不一致
[采购订单]:数据表中不存在字段【Remark】
[采购订单]:数据表唯一键信息与模型唯一键信息不一致
[采购订单]:检查结束
修改模型中“采购订单”结构时,并没有同时修改数据表结构,为了让他们同步,这时可以利用“同步数据表”操作来完成,具体操作如下:
选中修改了的类结构,单击鼠标右键选择“同步数据表”菜单,出现如下提示:
[采购订单]:开始同步到数据表
[采购订单]:更新表字段"Buyer"数据类型和长度nvarchar2(51)成功
[采购订单]:更新表字段"Buyer"的备注"采购员备注"成功
[采购订单]:更新表字段"Buyer"默认值gust成功
[采购订单]:添加表字段"Remark"成功
[采购订单]:表主键:PK_PURCHASEORDER(ID)
[采购订单]:表唯一键:UK_ORDERNO(ORDERID);
[采购订单]:创建唯一键"UK_test"成功
[采购订单]:表的外键信息为:[PurchaseOrder(ID)->SUPPLIERS(ID)]
[采购订单]:数据表列"AGENTSORDERNO"与模型不匹配,使用高级操作可删除不匹配的列
"同步数据表"操作不会删除数据表中的列,要删除数据表中的列请使用“同步高级操作”功能。
3、同步高级操作
同步高级操作会删除数据表中的列,不管数据表中有没有数据,都会删除,还可以删除数据表的所有外键。如下图3-3

图3-3
我们还是以“采购订单”为例,前面操作中删除了“采购订单”结构中的“代理订单号”,而数据表中存在“代理订单号”这一列,这时我们可以用高级操作来完成它。
选中“采购订单”,鼠标右键菜单中单击“同步数据高级操作”的子菜单“删除多余数据列”,提示信息如下:
[采购订单]:同步到数据表结束
[采购订单]:删除数据列"AGENTSORDERNO"成功
[采购订单]:删除数据列完毕
此时数据库中“采购订单表”的数据列“代理订单号”也删除了,我们可以用“检查同步状态”功能看看模型和数据表是否信息一致。
4、同步模型(数据库同步到模型)
当模型中的类和数据库中的表绑定了的时候,如果你不知道模型中的类结构是否最新的信息,想要以数据库中的表结构信息为准,这时你可以把数据表中的结构同步到模型中的类当中去。
同步模型分为两种方式:完全同步和追加同步。如图:3-4
①完全同步:以数据库中的表结构为准,完全更新到模型中的类结构当中去。此时模型类和数据表结构信息完全一致。如果模型中的类结构字段和数据库中表的字段不匹配,会自动删除模型类中不匹配的字段。
②追加同步:以数据库中的表结构为准,完全更新到模型中的类结构当中去。此时模型类和数据表结构信息可以不一致,模型中类的结构信息会大于或等于数据表结构的信息。如果模型中的类结构字段和数据库中表的字段不匹配,系统不会删除模型类中不匹配的字段,只会以追加的方式更新或添加新的信息。

图3-4
下面我们来举个例子
1)、删除模型中“供应商信息”类。
2)、添加一个新类到模型中。如图3-5

图3-5
3)、选中新添加的类,鼠标右键选择“同小模型...”中的子菜单“完全同步”,此时会弹出一个对话框,让你选择一张表,如图3-6,这里我们选择Suppliers(供应商信息)表。

图3-6
4)、点击“确定”之后,可以看到同步过来的数据表结构信息,如图3-7

图3-7
5、清除同步信息
模型中的类和数据库中的表是绑定在一起的,如果想清除绑定信息,选中模型中的类,右键选择“清除同步信息”即可。
为何要有“清除同步信息” 这个功能呢?
如果模型中的类和数据库中的表绑定了,但数据库中的表被删除了,如果再想同步模型到数据表中就会出错,系统会提示找不到数据表,此时可以用“清除同步信息” 功能来清除绑定信息,然后模型同步到数据库中去的时候系统会创建一张新表。
DataUml Design 教程3-模型与数据库同步的更多相关文章
- DataUml Design 教程1-初识
DataUml Design 是面向开发人员使用的一个永久免费的软件,提高软件的开发效率和代码的规范度.它主要包括三大功能,数据模型.代码生成和UML建模,数据模型功能类似于PowerDesi ...
- DataUml Design 教程7 - 数据库生成模型
DataUml Design支持数据库生成模型,并支持外键关系,能够根据外键自动生成类与类之间的关系. 目前DataUML Design支持MS Server.MY SQL.Oracle和Access ...
- DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)
从DataUML Design正式公布到如今有两个月了.因为近期比較忙,到如今才公布1.1版本号. 以后本人会一直坚持不断完好DataUML Design软件,希望广大程序员们多多支持. 一.1.1版 ...
- DataUml Design 教程5-代码模板介绍(甚于T4模板技术)
DataUml Design 代码模板全然基于C#语言来编写的. 不懂写模板的能够请教作者,随时欢迎. 以下是一段模板代码,这段代码能够获取一个类结构的全部信息. <#@ ...
- DataUml Design 教程6-DataUML Design 1.1版本正式发布(支持PD数据模型)
从DataUML Design正式发布到现在有两个月了,由于最近比较忙,到现在才发布1.1版本.以后本人会一直坚持不断完善DataUML Design软件,希望广大程序猿们多多支持. 一.1.1版本新 ...
- DataUml Design 教程2-实体建模
DataUml Design 实体建模基于UML类图标准来设计,支持一对一.一对多.多对多关联.模型与开发语言和数据库绑定.1.新建数据模型 1).选择“数据模型” 节点,点击鼠标右键,在菜单中 ...
- DataUml Design 教程4-代码生成
DataUml Design 生成代码非常灵活,它是基于模板形式生成代码,如果不懂类结构的话写模型就比较困难了.这里我只讲解下如何生成代码,代码模板规则下一节将介绍. 1 ...
- python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码 ...
- 阿里Canal框架数据库同步-实战教程
一.Canal简介: canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 二.背景介绍: ...
随机推荐
- Scala实战高手****第3课:在IDE下开发第一个Scala程序纯傻瓜式彻底透彻解析
- 两道Java面试题!
body { font-family: 微软雅黑; font-size: 14px; line-height: 2; } html, body { color: inherit; background ...
- [Android Traffic] android 流量计算方法
android流量简介 流量统计文件:路径/proc/net/dev 打开文件,其中 lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量. 在/sys/class/net/下 ...
- struts2设置文件上传大小
利用struts2想要设置或者限制上传文件的大小,可以在struts.xml配置文件里面进行如下配置: <constant name="struts.multipart.maxSize ...
- Android Studio NDK 新手教程(5)--Java对象的传递与改动
概述 本文主要Java与C++之间的对象传递与取值.包括传递Java对象.返回Java对象.改动Java对象.以及性能对照. 通过JNIEnv完毕数据转换 Java对象是存在于JVM虚拟机中的,而C+ ...
- Spark(八) -- 使用Intellij Idea搭建Spark开发环境
Intellij Idea下载地址: 官方下载 选择右下角的Community Edition版本下载安装即可 本文中使用的是windows系统 环境为: jdk1.6.0_45 scala2.10. ...
- 【CI】系列一:总体环境规划
上周花了点时间把CI环境再次给搞起来了,但是觉得在实体机中总觉得不是很安心,安全性不足,另外没有做备份,安全性.扩展性等都不足,且不好迁移. 因为目前只给了我一台PC及,配置其实也不怎么样.但是却需要 ...
- Unity3D使用TCP/IP协议,传递protocol buffer消息protobuf-net
原文:http://my.oschina.net/faint/blog/296785 第一部分 dll 1 下面大多数内容,都是使用c#编译的dll来实现的. 2 编译为dll后,要拖放到unity3 ...
- ant Form 常用 api
经过 Form.create 包装的组件将会自带 this.props.form 属性,this.props.form 提供的 API 如下: 注意:使用 getFieldsValue getFiel ...
- oracle新建一个表空间和用户来測试
首先对表空间作例如以下说明 暂时表空间:是在做大数据量排序时.分组操作时用的.正常这些都是在内存中完毕的.但在大数据量排序处理时.内存不够用的情况下就会用到暂时表空间,这里是不存放表的,有点类似于操作 ...