在 Visio 中,使用数据库模型图模板,可创建新模型或将现有数据库逆向转换为模型。
本文介绍如何创建数据库模型以及在创建模型后可以对模型执行的操作。
注意: 数据库模型图仅可在某些版本的 Visio 中可用。 若要了解详细信息,请参阅找不到数据库建模功能?
1:启动数据库模型图
- 你想如何开始?
- 从头开始创建新模型
- 使用现有数据库作为起点
- 导入和优化现有模型
如果最开始没有现成的现有数据库可用,可使用空白数据库模型,然后在其中添加自己的表和关系。
-
选择“文件”>“新建”。
-
在“搜索”框中,输入数据库模型,然后按 Enter。
-
在搜索结果中,双击“数据库模型图”。
-
选择“公制单位”或“美制单位”,然后选择“创建”。
反向工程向导通常会自动打开。
-
选择“取消”以关闭该向导。
-
在“数据库”选项卡的“管理”组中,选择“显示选项”。
-
在“数据库文档选项”对话框中,选择要使用的符号集以及其他表和关系选项,然后选择“确定”。 单击对话框中的“帮助”按钮可获取有关各选项的详细信息。
如果有一个现成数据库需要进行建模,以便更好的理解它或要将其作为新模型的起点,则可以使用反向工程向导来提取该数据库的架构或结构并构建新模型。
启动向导之前:
-
如果要对 Excel 工作簿进行反向工程,请先打开工作簿,并对包含列标题的单元格的组(或区域)进行命名。 如果要使用多个工作表,只需为每个工作表中的这组列单元格命名。 这些区域在反向工程向导中视为表格。 有关如何命名单元格区域的详细信息,请参阅在公式中定义和使用名称。
-
为获得最佳效果,请在运行“反向工程向导”之前,将默认驱动程序设置为要实施反向工程的目标数据库。 此步骤确保向导正确映射本机数据类型,且向导提取的所有代码均正确显示在“代码”窗口中。
启动向导:
-
选择“文件”>“新建”。
-
在“搜索”框中,输入数据库模型,然后按 Enter。
-
在搜索结果中,双击“数据库模型图”。 选择“创建”。
反向工程向导应该会自动打开。
如果向导未打开:在工具栏功能区的“数据库”选项卡的“模型”组中,选择“反向工程”。
-
在“反向工程向导”的第一个屏幕上,执行以下操作:
-
选择数据库管理系统 (DBMS) 的数据库驱动程序。 如果尚未将 Visio 数据库驱动程序与特定 ODBC 数据源关联,请单击“安装”。
注意: 如果要对 Excel 工作表实施反向工程,请选择“ODBC 通用驱动程序”。
-
选择要更新的数据库的数据源。 如果尚未为现有数据库创建数据源,请单击“新建”,立即创建数据源。
创建新源后,其名称会添加到“数据源”列表中。
-
对设置感到满意后,单击“下一步”。
-
-
按照任何特定于驱动程序的对话框中的说明进行操作。
例如,在“连接数据源”对话框中,键入用户名和密码,然后单击“确定”。
注意: 如果使用 ODBC 通用驱动程序,可能会收到一条错误消息,指出反向工程信息可能不完整。 在大多数情况下,这不构成问题,只需单击“确定”,继续执行向导。
-
选中要提取的信息类型的复选框,然后单击“下一步”。
注意: 某些项可能不可用(显示为灰色),因为并非所有数据库管理系统都支持向导可提取的所有类型的元素。
-
选中要提取的表(和视图,如有)的复选框,或单击“全选”以全部提取,然后单击“下一步”。
注意: 如果正在对 Excel 工作表实施反向工程,但未在此列表中看到任何内容,则可能需要对工作表中包含列标题的单元格区域进行命名。 有关详细信息,请参阅在公式中定义和使用名称。
-
如果选中“存储过程”复选框,则选择要提取的过程,或单击“全选”以全部提取,然后单击“下一步”。
-
选择是否要将反向工程项目自动添加到当前页面。
注意: 除了在“表和视图”窗口中列出反向工程项目外,还可以选择让向导自动创建绘图。 如果决定不自动创建绘图,可以将项目从“表和视图”窗口拖动到绘图页面上,手动组建数据库模型。
-
查看所选内容以验证确认正在提取所需信息,然后单击“完成”。
向导提取所选信息并在“输出”窗口显示有关提取过程的备注。
如果拥有现有 VisioModeler 或 PLATINUM ERwin 模型,可将其导入以创建 Visio 数据库模型图。 此功能仅限于 VisioModeler 2.0 或更高版本的词典模型 (.imd) 文件和 PLATINUM ERwin 2.6、3.0 和 3.52 .erx 文件。
-
选择“文件”>“新建”。
-
在“搜索”框中,输入数据库模型,然后按 Enter。
-
在搜索结果中,双击“数据库模型图”。 选择“创建”。
反向工程向导会自动打开。 选择“取消”以关闭该向导。
-
在“数据库”选项卡的“模型”组中,选择“导入”,然后选择模型类型。
-
键入要导入的模型的路径和文件名,或选择“浏览”按钮,找到模型文件,然后选择“打开”。
-
在“导入”对话框中,选择“确定”。
Visio 导入文件并在“输出”窗口中显示其进度。 导入的表显示在“表和视图”窗口中。
-
在“表和视图”窗口中,选择要建模的表,然后将其拖到绘图页上。
2:优化图结构
创建数据库模型图后,开始对其进行优化。 可以添加和自定义模型的三个主要组成部分:
-
实体(或表)、
-
列(描述有关表的事实)和
-
关系(表之间的关联)。 关系可以是一对一、一对多或多对多。
选择下面的标题以打开有关向模型添加功能的说明。
数据库模型图模板随附了两个模具。 当你开始优化图结构时,请使用适合你的模具:
使用“实体”形状在图中创建表格:
-
从“实体关系”或“对象关系”模具中,将“实体”形状拖到绘图上。
-
双击形状以打开“数据库属性”窗口。
-
在“类别”下,单击“定义”并键入表格名称。
-
在“类别”下,单击“列”,键入名称并选择数据类型。
-
为不能具有 NULL 值的列选中“必需”复选框。
-
为对数据库表中的每行进行唯一标识的列选中“PK”(主键)复选框。
-
在“类别”下,单击“索引”、“触发器”、“检查”或“扩展”以创建这些可选元素。
使用“数据库属性”窗口添加或更改列的属性,包括数据类型和主键:
-
在图中双击表格。
-
在“数据库属性”窗口的“类别”下,单击“列”。
-
单击第一个空的“物理名称”单元格,并键入名称。
-
若要更改列的数据类型,单击列的“数据类型”字段,然后选择列表中的数据类型或将其键入列表中。 例如,可以键入 decimal(8,2) 或 char(30)。
-
若要防止出现 NULL 值,选中“必需”复选框。
-
若要将列指定为主键,选中“PK”复选框。
-
若要查看单击“列”类别后所显示的列属性以外的其他列属性,选择相应列,然后单击“编辑”。
关系通过使用主键和外键,让数据库能够将表格中的行与相关表格中的行匹配。 可以在图中显示这些关系。 此外,可以设置它们的基数(例如,一对多)并使用 Crow's feet 表示法、关系表示法或 IDEF1X 表示法来显示基数。 无法在“数据库模型图”模板中使用上述任一表示法显示多对多关系。
在表之间创建关系:
-
请确保两个表在图中均可见。 如果通过反向工程将现有数据库转换为模型,可能需要将一个表或两个表从“表和视图”窗口拖到绘图页上。
-
双击用于关系主键一侧的表。
-
在“数据库属性”窗口的“类别”下,单击“列”。
-
在网格中,单击要用于唯一标识表中每行的列,然后选中“PK”复选框,将其设置为主键。
-
从“对象关系”或“实体关系”模具中,将某个“关系”形状拖放到页面上的空白区域。
-
将较高的一端连接到包含父表的表。
-
将另一端连接到子表。
如果第二个表尚未包含与主键同名的列,则建模器会向第二个表中添加此列作为外键。
注意: 如果关系行消失,在“数据库”选项卡的“管理”组中,单击“显示选项”。 在“关系”选项卡的“显示”下,选中“关系”复选框。
设置关系的基数:
-
双击此关系。
-
在“数据库属性”窗口的“类别”下,单击“杂项”。
-
在“基数”下,选中最适合关系的基数。 对于一对多关系,最佳选择是“大于或等于 0”或“大于或等于 1”。 对于一对一关系,最佳选择是“0 或 1”或“精确为 1”。
3:添加用于搜索和更新数据的功能
若要对图进行其他优化(例如创建索引、检查子句和触发器),请选择下面的标题,以打开有关添加以下任何内容的说明:
运行查询时,索引可以提高数据库的性能或速度。
-
打开数据库模型图。
-
双击要添加索引的表,在“数据库属性”窗口的“类别”列表中,单击“索引”。
-
单击“新建”。
-
在“创建索引”对话框中,为该索引键入一个名称,然后单击“确定”。
-
在“索引类型”中,选择创建唯一或非唯一索引。
-
在“可用列”列表中,选择要包含在此索引中的每个列的名称,然后单击“添加 >”。
-
在“索引列”列表中,选中“Asc”复选框以创建升序排序的索引,或清除复选框以创建降序排序的索引。
数据库模型图随即更新。
可将视图视为已保存的查询。 如果需要从多个表重复访问相同的信息,或者希望在不允许用户更改实际表的情况下向用户公开数据,使用视图会非常方便。
从“实体关系”或“对象关系”模具中,将“视图”形状拖到绘图页上。
也许可以设置表或视图的扩展属性,用于确定其存储位置,具体取决于所使用的数据库管理系统 (DBMS)。
双击要设置扩展属性的表或视图,在“数据库属性”窗口的“类别”列表中,单击“扩展”。
使用 Check 子句可确保列中输入的数据处于特定值范围内。 例如,可以创建一个 Check 子句,要求名为“Age”的列中的数据超过 65。
-
双击表以打开“数据库属性”窗口。
-
在“类别”下,单击“列”然后单击要在其中添加 Check 子句的列。
-
单击“编辑”。
-
在“列属性”对话框的“检查”选项卡上,输入所需的约束。 有关所选内容的详细信息,请参阅列和字段属性对话框(“检查”选项卡)。
Check 子句已添加到“局部代码”下的“代码”窗口中。
使用存储过程和用户定义的函数创建可重复使用的代码包,用于重复执行相同的操作。 用户定义的函数和存储过程的主要区别在于,前者返回一个值,而后者执行代码,不返回值。
-
在“数据库”选项卡的“显示/隐藏”组中,选中“代码”复选框以打开“代码”窗口。
-
单击“全局代码”,然后单击“新建”。
-
在“代码编辑器”的“属性”选项卡上,单击要创建的代码类型,并键入代码名称。
-
在“正文”选项卡上,键入代码,然后单击“确定”。
数据库中发生特定事件时,触发器会引发触发器中定义的 SQL 代码运行。
-
双击表以打开“数据库属性”窗口。
-
在“类别”下,单击“触发器”,然后单击“添加”。
-
在“属性”选项卡上,键入触发器的名称。
-
在“正文”选项卡上,键入代码,然后单击“确定”。
触发器已添加到“局部代码”下的“代码”窗口。
找不到数据库建模功能?
某些版本的 Visio 缺少部分或全部数据库建模功能:
-
Visio Standard 不包含数据库模型图模板。
-
Visio Professional 和 Premium 版本支持数据库模型图模板反向工程功能(即,使用现有数据库在 Visio 中创建模型),但它们不支持正向工程(即使用 Visio 数据库模型生成 SQL 代码)。
-
Visio for Enterprise Architects 中有全套数据库建模功能,包括反向工程和正向工程。 Visio for Enterprise Architects 包含在 MSDN Premium 订阅中,可通过 Visual Studio Professional 和 Visual Studio Team System 基于角色的版本获取。
若要了解拥有的 Visio 版本,请单击“帮助”菜单上的“关于 Microsoft Office Visio”。 版本名称位于对话框中文本的第一行。
如果正在使用 Visio 计划 2 并且希望了解如何将现有数据库工程转换为数据库模型,请参阅对现有数据库进行反向工程。 Visio 支持对 SQL Server 2016 及更早版本进行反向工程。 Visio 不支持SQL Server 2019 或更高版本的反向工程。