文章目录
- 前言
- 一、创建逻辑模型
- 二、生成SQL脚本
- 三、常用其他操作
- 1、Domains的使用
- 2、生成数据库设计文档
- 3、使用宏把Attribute name复制到Definition
- 总结
前言
以前一直使用PowerDesigner做数据库模型设计,由于工作需要,要求使用易博龙ER/Studio做数据库模型设计。因为发现网上关于ER/Studio中文使用教程比较少,学习官方文档还需要一定的时间和门槛,故自己就想总结了一篇快速入门文档,以便来者。(如果您有一定数据库设计基础,并想深入了解ER/Studio建议您学习官方文档)
本文使用的ER/Studio版本:ER/Studio Version 8.0.2
一、创建逻辑模型
1、打开ER/Studio后,选择:File>New,打开如下界面,选择Draw a new data model。
如上图:1表示新创建数据模型,2表示逆向数据库中已存在的模型,3表示导入erx文件或sql脚本生成数据模型。
2、空白处点击右键,选择insert Entity,如下图就完成实体表的添加。
3、在实体表上点击右键,选择Edit Entity,编辑实体表。
4、点击下图椭圆处展开,按下图红框处填写表实体的相应的属性值。
5、创建关联关系
如上图红框处,ER/Studio提供5种逻辑关联关系,我们经常会用到的是第二种和第三种,如上图从左到右分别为:
(1)Identifying Relationship
1对多,父实体的主键是子实体的外键,且该外键为子实体的主键。 也就是说需要提供外键给另外一张表作联合主键。
(2)non-Identifying,mandatory relationship
1对多,父实体的主键是子实体的外键,且外键不为空(强制外键) 。
(3)non-Identifying,optional relationship
1对多,父实体的主键是子实体的外键,且外键可为空(可选外键)。
(4)one-to-to relationship
1对1,父实体的主键是子实体的外键,且外键可为空。
(5)Non-specific Relationship
多对多,父实体和子实体是多对多的关系。 (多对多的关系建议引入中间表)
6、下图为实体创建第三种关系non-Identifying,optional relationship。
二、生成SQL脚本
1、首先生成物理模型,才能生成SQL脚本,如下图:选择Model>Generate Physical Model
2、这里目标数据库选择PostgreSQl 8.0,当然你也可以选择Mysql、Oracle、DB2、Sql Server等数据库平台,以便生成对应的SQL脚本。
3、如下图,选中生成的物理模型,然后选择:Database>Generate Database
4、按照下图操作,最后点击finish即完成sql脚本的生成。(按下图操作生成表注释、字段注释)
5、生成最终脚本如下图。
三、常用其他操作
至此,你已经学会使用ER/Studio设计数据库模型了。如果继续往下看,你花费的时间将超过5分钟。
1、Domains的使用
Domains是用于建立标准,重用属性/列时使用。我们在设计数据库时往往会需要定义几个标准字段,例如主键ID,创建时间,如果将他们创建为Domains,那么无论在哪里绑定都会是统一的类型、规则、约束等。这既便于统一标准也便于进行修改。
1、如下图,左下角切换至Data Dictionary,然后Domains上右键,选择New Domains
2、按下图填写对应的属性信息。
3、在实体表中进行绑定
2、生成数据库设计文档
1、如下图,选择Tools>Generate Reports
2、按照下图进行操作。
3、生成word文档如下
3、使用宏把Attribute name复制到Definition
1、把以下代码保存为xx.bas文件放到ER/Studio安装目录下的Macros的文件夹下,ER/Studio就可以自动加载到Macros选项卡中。ER/Studio Version 8.0.2默认目录为:C:\ProgramData\Embarcadero\ERStudio_8.0\Macros
Dim EntCount As Integer
Dim ColCount As Integer
Dim MyDiagram As Diagram
Dim MyModel As Model
Dim MyEntity As Entity
Dim ColArray() As String
Function getColumns(TableName As String )
Dim Indx As Integer
Dim count As Integer
count = 1
Indx = 0
Set MyEntity = MyModel.Entities.Item(TableName)
ColCount = MyEntity.Attributes.Count
ReDim ColArray(0 To ColCount) As String
For count=1 To ColCountFor Each MyAttribute In MyEntity.AttributesIf MyAttribute.SequenceNumber = count ThenIf MyModel.Logical = True ThenIf MyAttribute.HasLogicalRoleName = True ThenColArray(Indx) = MyAttribute.LogicalRoleNameElseColArray(Indx) = MyAttribute.AttributeNameEnd IfElseIf MyAttribute.HasRoleName = True ThenColArray(Indx) = MyAttribute.RoleNameElseColArray(Indx) = MyAttribute.ColumnNameEnd IfEnd IfIf MyAttribute.Definition="" ThenMyAttribute.Definition = ColArray(Indx)End IfIndx= Indx +1End IfNext MyAttributeNext count
End FunctionSub Main
Debug.Clear
Set MyDiagram = DiagramManager.ActiveDiagram
Set MyModel = MyDiagram.ActiveModel
Dim Indx As Integer
Indx = 0
EntCount = MyModel.Entities.Count - 1
ReDim TableArray(0 To EntCount) As String
For Each MyEntity In MyModel.EntitiesIf MyModel.Logical = True ThenTableArray(Indx) = MyEntity.EntityNameElseTableArray(Indx) = MyEntity.TableNameEnd IfMyEntity.Definition = TableArray(Indx)getColumns(TableArray(Indx))Indx = Indx +1
Next MyEntityEnd Sub
2、打开ER/Studio如下图,选择Macro Shortcuts>NameToDefinition
总结
判别一个关系是Non-Identifying还是Identifying只要区分子实体的主键,看是否需要父实体的外键来共同作为主键,需要则为Identifying,如果子实体自己的主键就可唯一标识则它为Non-Identifying。