5分钟入门ER/Studio

article/2025/5/14 18:00:52

文章目录

  • 前言
  • 一、创建逻辑模型
  • 二、生成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
如上图: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。


http://chatgpt.dhexx.cn/article/2gQTs5n5.shtml

相关文章

嘀咕电影微信小程序

最近开发了一个电影类微信小程序,一起来看看把! 一、小程序分为首页,影院,我的三大模块 二、点击首页的影院热映和即将上映的电影列表,可以跳转到对应的电影详情页 三、点击电影详情页的领券购票,可以选择…

在附近小程序中展示你的小程序-微信小程序开发-视频教程21

在上一节课程中, 我们虽然申请开通附近小程序, 也得到了微信的审核通过, 但我们的小程序还不会主动展示到附近小程序列表中, 需要我们到后台进行相应的设置。 公众号跟小程序后台设置类似, 这里我们以公众号后台设置为…

微信小程序获取地理位置最佳实现

定位 微信小程序获取用户当前位置需要用户的授权,可以直接调用 wx.getLocation,微信会弹出授权提示,如果用户曾经拒绝过授权则不会弹窗。 根据微信官方文档: 授权 部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范…

微信小程序逆向分析

文章目录 微信小程序逆向分析行为监控分析文件特征wxapkg解密思路重新监控解密分析尾部部分解密解密例程分析找到xorKey 首部1024字节解密解密例程分析AES_Key生成例程分析分组模式以及iv 微信小程序逆向分析 WeChatAppEx.exe 版本:2.0.6609.4 以融智云考学生端为…

小程序发展简史

2017年元月9日微信正式推出第一个版本的小程序以来,大众对小程序经历了“热情->失望->质疑->回归->井喷爆发”的几个阶段。无疑小程序是个划时代的应用。它免安装,轻巧、免卸载、多入口的特性,从一诞生并自带光环。目前大分部主流…

微信小程序复习题

文章目录 填空题选择题判断题分析题(20)分析代码显示效果 页面设计题(40) 填空题 微信小程序创始人是 张小龙 ,英文缩写 Mini Program小程序是一种无需下载和无需安装即可使用的应用,它实现了应用“ 触手可…

小程序获取附近IBeacon设备

实现逻辑: 该功能实现需要使用以下API: wx.startBeaconDiscovery(OBJECT):开始搜索附近的iBeacon设备 wx.stopBeaconDiscovery(OBJECT):停止搜索附近的iBeacon设备 wx.onBeaconUpdate(CALLBACK):监听 iBeacon 设备…

微信小程序面试题大全

1、简述微信小程序的相关文件类型? WXML 搭建页面的结构WXSS 页面样式文件js 逻辑处理,网络请求json 配置当前页面标题和引入组件等app.js 可以在里边监听生命周期函数、声明全局变量app.json 小程序的全局配置(页面路径、网络超时时间、底部…

微信小程序常见问题汇总

1、如何避免微信小程序中 app.js中 onshow事件的n次触发的问题? 问题 在开发中,遇到了一个小难题,就是app.js中 onshow事件总是会因调用其它API而触发,例如:wx.chooseImage,wx.makephonecall、wx. previewImage等。 解决办法 目…

怪兽充电小程序

第一首先看中心点上有个小图标 实现方式&#xff0c;我们可以使用map 结合一个图片覆盖物实现&#xff0c;在结合定位 <map id"myMap" show-locationenable-poienable-building :latitude"latitude":longitude"longitude":markers"marke…

扫盲篇 | 你真的懂附近的小程序吗?

“附近的小程序”功能是指用户进入微信小程序界面以后,可以直接看到所在地周围5公里左右的所有“小程序”。 包括实体店,服务店,商场等,微信小程序上线之初就曾提及该功能,而它几乎成了零售领域最期待的一项功能。 所以许多行业人士指出,小程序会给零售行业发展带来巨大…

有哪些常见的微信小程序推广引流方法?

如何对小程序进行推广引流。只有如此&#xff0c;才能为小程序获取到更多忠实用户&#xff0c;使小程序实现更大的价值。今天就为大家介绍一下微信小程序常见有效的推广方式。 1、附近的小程序&#xff08;免费&#xff09; 在小程序后台&#xff0c;开通“附近的小程序”&am…

微信附近的人小程序怎么开(开通附近小程序的方法)

1、进入微信公众号平台进入&#xff0c;输入小程序账号和密码&#xff0c;点击登录&#xff1b; 2、在左侧菜单中找到“附近的小程序”&#xff0c;点击开通。&#xff08;个体小程序不支持开通&#xff09; 3、验证管理员身份后按照要求填写资料&#xff0c;点击定位&#xf…

C语言/C++初学 问题

编程及C/C初学者 FAQ 本文原为本人在论坛所发若干帖&#xff0c;意在集中解决新手学习C/C语言时将遭遇到的各类问题&#xff0c;网友反馈情况良好&#xff0c;集合修订后作为个人作品贴于此处。 本贴主要分析概念原理和解决方案&#xff0c;不讨论具体程序语法&#xff0c;立足…

matlab2c使用c++实现matlab函数系列教程-randint函数

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法&#xff1a; 1、下载动态链接库 2、将Matlab2c.dll拷贝到exe同目录下 3、将Matlab2c.h、Matlab2c.lib放…

MATLAB只randint函数

srandint(M,N,range); 生成MxN的矩阵&#xff0c;矩阵中元素的取值为小于range的整数。 M4; N3; range3; srandint(M,N,range) 注意&#xff1a; randi函数生成元素取值为1&#xff1a;M的N*range的矩阵。

python中randint_python中randint函数的用法是什么?_后端开发

php的数据库怎么安装?_后端开发 安装步骤:1、在官网上下载数据库软件,然后双击下载好的数据库软件,打开后点击右下角的“下一步”,选择第一个选项“我接受”;2、默认勾选所有插件;3、选择安装数据库位置,点击“安装”;4、点击“完成”,这时php数据库就安装成功了。 …

Random.Randint 函数--Numpy

Numpy.Random.Randint 函数功能&#xff1a; Return random integers from low (inclusive) to high (exclusive)。 Return random integers from the “discrete uniform” distribution of the specified dtype in the “half-open” interval [low, high). If high is None…

Random库中的8个函数

random库包括两类函数&#xff0c;常用共8个 基本随机函数&#xff1a;seed() 、random()&#xff1b;扩展随机函数&#xff1a;randint()、getrandbits()、uniform()、randrange()、choice()、shuffle() 基本随机函数&#xff1a; seed()函数&#xff1a;初始化给定的随机数…

maven下载安装及IDEA配置、使用maven导出项目jar包并部署到服务器上

目录 1.下载安装 2.增加maven镜像仓库和修改仓库下载位置 镜像配置 修改仓库下载位置 3.小试&#xff1a;在idea中创建一个新maven项目 4.IDEA上配置maven 5.maven导出项目jar包 6.导出的项目jar包部署到服务器上 1.下载安装 &#xff08;1&#xff09;进入下载地址Ma…