创建数据库模型(又称为“实体关系图”)

创建数据库模型(又称为“实体关系图”)

使用数据库模型图模板,可通过使用关系或对象关系建模概念,创建新模型或将现有数据库逆向转换为模型。使用实体关系模具为基于 SQL92 和早期标准的数据库创建模型。使用对象关系模具(带有用于处理类型的其他形状)为基于 SQL99 和更高标准的数据库创建模型。

数据库模型示例

注意: 如果正在使用 Visio Pro for Office 365 并且希望了解如何将现有数据库工程转换为数据库模型,请参阅主题对现有数据库进行反向工程

使用数据库模型图模板,可通过使用关系或对象关系建模概念,创建新模型或将现有数据库逆向转换为模型。使用实体关系模具为基于 SQL92 和早期标准的数据库创建模型。使用对象关系模具(带有用于处理类型的其他形状)为基于 SQL99 和更高标准的数据库创建模型。

本文介绍如何创建数据库模型以及在创建模型后可以对模型执行的操作。

找不到数据库模型功能?

并非每个版本的 Microsoft Visio 都具有数据库模型功能。如果找不到本文介绍的功能,很可能是你的 Visio 版本不包含这些功能。

  • Microsoft Visio Standard 不包含数据库模型图模板。

  • Microsoft Visio Professional 和 Premium 版本支持数据库模型图模板反向工程功能(即,使用现有数据库在 Visio 中创建模型),但它不支持正向工程(即,使用 Visio 数据库模型生成 SQL 代码)。有关详细信息,请参阅主题对现有数据库进行反向工程

  1. 若要启动数据库模型图,请执行下列操作之一:

    从头开始创建新模型图

    如果最开始没有现成的现有数据库可用,可使用空白数据库模型,然后在其中添加自己的表和关系。

    1. 单击“文件”选项卡。

    2. 单击“新建”,单击“软件和数据库”,然后双击“数据库模型图”。

    3. 在“数据库”选项卡的“管理”组中,单击“显示选项”。

    4. 在“数据库文档选项”对话框中,选择要使用的符号集以及其他表和关系选项,然后单击“确定”。

    使用现有数据库作为起点

    如果有一个现成数据库需要进行建模,以便更好的理解它或要将其作为新模型的起点,可以使用反向工程向导来提取该数据库的架构或结构并构建新模型。

    启动向导之前:

    1. 如果要对 Microsoft Excel 工作簿实施反向工程,在启动向导之前,需要打开工作簿并命名包含列标题的单元格组(或区域)。如果要使用多个工作表,只需为每个工作表中的这组列单元格命名。此范围的单元格在向导中视为表格。有关如何为某一区域的单元格命名,请参阅 Excel 帮助中标题为“定义命名单元格引用或区域”的主题。

    2. 为获得最佳效果,请在运行“反向工程向导”之前,将默认驱动程序设置为要实施反向工程的目标数据库。此步骤确保向导正确映射本机数据类型,且向导提取的所有代码均正确显示在“代码”窗口中。

    3. 单击“文件”选项卡。

    4. 单击“新建”,单击“软件和数据库”,然后双击“数据库模型图”。

    5. 在“数据库”选项卡的“模型”组中,单击“反向工程”。

    6. 在“反向工程向导”的第一个屏幕上,执行以下操作:

      1. 选择数据库管理系统 (DBMS) 的数据库驱动程序。如果尚未将 Visio 数据库驱动程序与特定 ODBC 数据源关联,请单击“安装”。

        注意: 如果要对 Excel 工作表实施反向工程,请选择“ODBC 通用驱动程序”。

      2. 选择要更新的数据库的数据源。如果尚未为现有数据库创建数据源,请单击“新建”,立即创建数据源。

        创建新源后,其名称会添加到“数据源”列表中。

      3. 对设置感到满意后,单击“下一步”。

    7. 按照任何特定于驱动程序的对话框中的说明进行操作。

      例如,在“连接数据源”对话框中,键入用户名和密码,然后单击“确定”。

      注意: 如果使用 ODBC 通用驱动程序,可能会收到一条错误消息,指出反向工程信息可能不完整。在大多数情况下,这不构成问题,只需单击“确定”,继续执行向导。

    8. 选中要提取的信息类型的复选框,然后单击“下一步”。

      注意: 某些项可能不可用(显示为灰色),因为并非所有数据库管理系统都支持向导可提取的所有类型的元素。

    9. 选中要提取的表(和视图,如有)的复选框,或单击“全选​​”以全部提取,然后单击“下一步”。

      注意: 如果正在对 Excel 工作表实施反向工程,但未在此列表中看到任何内容,则可能需要对工作表中包含列标题的单元格区域进行命名。

    10. 如果选中“存储过程”复选框,则选择要提取的过程,或单击“全选”以全部提取,然后单击“下一步”。

    11. 选择是否要将反向工程项目自动添加到当前页面。

      注意: 除了在“表和视图”窗口中列出反向工程项目外,还可以选择让向导自动创建绘图。如果决定不自动创建绘图,可以将项目从“表和视图”窗口拖动到绘图页面上,手动组建数据库模型。

    12. 查看所选内容以验证确认正在提取所需信息,然后单击“完成”。

      向导提取所选信息并在“输出”窗口显示有关提取过程的备注。

    导入和优化现有模型

    如果拥有现有 VisioModeler 或 PLATINUM ERwin 模型,可将其导入以创建 Visio 数据库模型图。此功能仅限于 VisioModeler 2.0 或更高版本的词典模型 (.imd) 文件和 PLATINUM ERwin 2.6、3.0 和 3.52 .erx 文件。

    1. 单击“文件”选项卡。

    2. 单击“新建”,单击“软件和数据库”,然后双击“数据库模型图”。

    3. 在“数据库”选项卡的“模型”组中,单击“导入”,然后单击模型类型。

    4. 键入要导入的模型的路径和文件名,或单击“浏览”按钮,找到模型文件,然后单击“打开”。

    5. 在“导入”对话框中,单击“确定”。

      Visio 导入文件并在“输出”窗口中显示其进度。导入的表显示在“表和视图”窗口中。

    6. 在“表和视图”窗口中,选择要建模的表,然后将其拖到绘图页上。

  2. 创建数据库模型图后,开始对其进行优化。可添加表格和视图并进行自定义、创建关系以及对列和数据类型进行自定义。

    表格

    使用“实体”形状在图中创建表格。

    1. 从“实体关系”或“对象关系”模具中,将“实体”形状拖到绘图上。

    2. 双击形状以打开“数据库属性”窗口。

    3. 在“类别”下,单击“定义”并键入表格名称。

    4. 在“类别”下,单击“”,键入名称并选择数据类型。

    5. 为不能具有 NULL 值的列选中“必需”复选框。

    6. 为对数据库表中的每行进行唯一标识的列选中“PK”(主键)复选框。

    7. 在“类别”下,单击“索引”、“触发器”、“检查”或“扩展”以创建这些可选元素。

    使用“数据库属性”窗口添加或更改列的属性,包括数据类型和主键。

    1. 在图中双击表格。

    2. 在“数据库属性”窗口的“类别”下,单击“”。

    3. 单击第一个空的“物理名称”单元格,并键入名称。

    4. 若要更改列的数据类型,单击列的“数据类型​​”字段,然后选择列表中的数据类型或将其键入列表中。例如,可以键入 decimal(8,2)char(30)

    5. 若要防止出现 NULL 值,选中“必需”复选框。

    6. 若要将列指定为主键,选中“PK”复选框。

    7. 若要查看单击“”类别后所显示的列属性以外的其他列属性,选择相应列,然后单击“编辑”。

    关系

    关系通过使用主键和外键,让数据库能够将表格中的行与相关表格中的行匹配。可以在图中显示这些关系。此外,可以设置它们的基数(例如,一对多)并使用 Crow's feet 表示法、关系表示法或 IDEF1X 表示法来显示基数。无法在“数据库模型图”模板中使用上述任一表示法显示多对多关系。

    1. 在表之间创建关系:

      1. 请确保两个表在图中均可见。如果通过反向工程将现有数据库转换为模型,可能需要将一个表或两个表从“表和视图”窗口拖到绘图页上。

      2. 双击用于关系主键一侧的表。

      3. 在“数据库属性”窗口的“类别”下,单击“”。

      4. 在网格中,单击要用于唯一标识表中每行的列,然后选中“PK”复选框,将其设置为主键。

      5. 从“对象关系”或“实体关系”模具中,将某个“关系”形状拖放到页面上的空白区域。

      6. 将较高的一端连接到包含父表的表。

      7. 将另一端连接到子表。

        如果第二个表尚未包含与主键同名的列,则建模器会向第二个表中添加此列作为外键。

        注意: 如果关系行消失,在“数据库”选项卡的“管理”组中,单击“显示选项”。在“关系”选项卡的“显示”下,选中“关系”复选框。

    2. 设置关系的基数:

      1. 双击此关系。

      2. 在“数据库属性”窗口的“类别”下,单击“杂项”。

      3. 在“基数”下,选中最适合关系的基数。对于一对多关系,最佳选择是“大于或等于 0”或“大于或等于 1”。对于一对一关系,最佳选择是“0 或 1”或“精确为 1”。

  3. 要对图表进行其他优化(如创建索引、check 子句和触发器),可以执行以下操作:

    创建索引

    运行查询时,索引可以提高数据库的性能或速度。

    1. 打开数据库模型图。

    2. 双击要添加索引的表,在“数据库属性”窗口的“类别”列表中,单击“索引”。

    3. 单击“新建”。

    4. 在“创建索引”对话框中,为该索引键入一个名称,然后单击“确定”。

    5. 在“索引类型”中,选择创建唯一或非唯一索引。

    6. 在“可用列”列表中,选择要包含在此索引中的每个列的名称,然后单击“添加 >”。

    7. 在“索引列”列表中,选中“Asc”复选框以创建升序排序的索引,或清除复选框以创建降序排序的索引。

      数据库模型图随即更新。

    创建视图

    可将视图视为已保存的查询。如果需要从多个表重复访问相同的信息,或者希望在不允许用户更改实际表的情况下向用户公开数据,使用视图会非常方便。

    从“实体关系”或“对象关系”模具中,将“视图”形状拖到绘图页上。

    设置表和视图的扩展属性

    也许可以设置表或视图的扩展属性,用于确定其存储位置,具体取决于所使用的数据库管理系统 (DBMS)。

    双击要设置扩展属性的表或视图,在“数据库属性”窗口的“类别”列表中,单击“扩展”。

    创建 Check 子句

    使用 Check 子句可确保列中输入的数据处于特定值范围内。例如,可以创建一个 Check 子句,要求名为“Age”的列中的数据超过 65。

    1. 双击表以打开“数据库属性”窗口。

    2. 在“类别”下,单击“”然后单击要在其中添加 Check 子句的列。

    3. 单击“编辑”。

    4. 在“列属性”对话框的“检查”选项卡上,输入所需的约束。

      Check 子句已添加到“局部代码”下的“代码”窗口中。

    创建存储过程和用户定义的函数

    使用存储过程和用户定义的函数创建可重复使用的代码包,用于重复执行相同的操作。用户定义的函数和存储过程的主要区别在于,前者返回一个值,而后者执行代码,不返回值。

    1. 在“数据库”选项卡的“显示/隐藏”组中,选中“代码”复选框以打开“代码”窗口。

    2. 单击“全局代码”,然后单击“新建”。

    3. 在“代码编辑器​​”的“属性”选项卡上,单击要创建的代码类型,并键入代码名称。

    4. 在“正文”选项卡上,键入代码,然后单击“确定”。

    创建触发器

    数据库中发生特定事件时,触发器会引发触发器中定义的 SQL 代码运行。

    1. 双击表以打开“数据库属性”窗口。

    2. “类别”下,单击“触发器”,然后单击“添加”。

    3. 在“属性”选项卡上,键入触发器的名称。

    4. 在“正文”选项卡上,键入代码,然后单击“确定”。

      触发器已添加到“局部代码”下的“代码”窗口。

本文介绍如何创建数据库模型以及在创建模型后可以对模型执行的操作。若要快速开始,在“文件”菜单上,指向“新建”,指向“软件和数据库”,然后单击“数据库模型图”。

找不到数据库模型功能?

最有可能的情况是,你的 Microsoft Office Visio 版本不包含要查找的功能。若要了解拥有的 Visio 版本,请单击“帮助”菜单上的“关于 Microsoft Office Visio”。版本名称位于对话框中文本的第一行。

  • Microsoft Office Visio Standard 不包含数据库模型图模板。

  • Microsoft Office Visio Professional 支持数据库模型图模板反向工程功能(即,使用现有数据库在 Visio 中创建模型),但它不支持正向工程(即,使用 Visio 数据库模型生成 SQL 代码)。

  • 可在 Visio for Enterprise Architects 中找到全套数据库建模功能,包括反向工程和正向工程。Visio for Enterprise Architects 包含在 MSDN Premium 订阅中,可通过 Visual Studio Professional 和 Visual Studio Team System 基于角色的版本获取。

  1. 若要启动数据库模型图,请执行下列操作之一:

    从头开始创建新模型图

    如果最开始没有现成的现有数据库可用,可使用空白数据库模型,然后在其中添加自己的表和关系。

    1. 在“文件”菜单上,指向“新建”,指向“软件和数据库”,然后单击“数据库模型图”。

    2. 在“数据库”菜单上,指向“选项”,然后单击“文档”。

    3. 在“数据库文档选项”对话框中,选择要使用的符号集以及其他表和关系选项,然后单击“确定”。

    使用现有数据库作为起点

    如果有一个现成数据库需要进行建模,以便更好的理解它或要将其作为新模型的起点,可以使用反向工程向导来提取该数据库的架构或结构并构建新模型。

    注意: 启动向导之前:

    1. 如果要对 Microsoft Office Excel 工作簿实施反向工程,在启动向导之前,需要打开工作簿并命名包含列标题的单元格组(或区域)。如果要使用多个工作表,只需为每个工作表中的这组列单元格命名。此范围的单元格在向导中视为表格。有关如何为某一单元格区域命名,请参阅 Microsoft Office Excel 帮助中标题为“定义命名单元格引用或区域”的主题。

    2. 为获得最佳效果,请在运行“反向工程向导”之前,将默认驱动程序设置为要实施反向工程的目标数据库。此步骤确保向导正确映射本机数据类型,且向导提取的所有代码均正确显示在“代码”窗口中。

    3. 在“文件”菜单上,指向“新建”,指向“软件和数据库”,然后单击“数据库模型图”。

    4. 在“数据库”菜单上,单击反向工程”。

    5. 在“反向工程向导”的第一个屏幕上,执行以下操作:

      1. 选择数据库管理系统 (DBMS) 的 Microsoft Office Visio 数据库驱动程序。如果尚未将 Visio 数据库驱动程序与特定 ODBC 数据源关联,请单击“安装”。

        注意: 如果要对 Excel 工作表实施反向工程,请选择“ODBC 通用驱动程序”。

      2. 选择要更新的数据库的数据源。如果尚未为现有数据库创建数据源,请单击“新建”,立即创建数据源。

        创建新源后,其名称会添加到“数据源”列表中。

      3. 对设置感到满意后,单击“下一步”。

    6. 按照任何特定于驱动程序的对话框中的说明进行操作。

      例如,在“连接数据源”对话框中,键入用户名和密码,然后单击“确定”。如果数据源不受密码保护,只需单击“确定”。

      注意: 如果使用 ODBC 通用驱动程序,可能会收到一条错误消息,指出反向工程信息可能不完整。在大多数情况下,这不构成问题,只需单击“确定”,继续执行向导。

    7. 选中要提取的信息类型的复选框,然后单击“下一步”。

      注意: 某些项可能不可用(显示为灰色),因为并非所有数据库管理系统都支持向导可提取的所有类型的元素。

    8. 选中要提取的表(和视图,如有)的复选框,或单击“全选​​”以全部提取,然后单击“下一步”。

      注意: 如果正在对 Excel 工作表实施反向工程,但未在此列表中看到任何内容,则可能需要对工作表中包含列标题的单元格区域进行命名。

    9. 如果在第 5 步选中“存储过程”,选择要提取的过程,或单击“全选”以全部提取,然后单击“下一步”。

    10. 选择是否要将反向工程项目自动添加到当前页面。

      注意: 除了在“表和视图”窗口中列出反向工程项目外,还可以选择让向导自动创建绘图。如果决定不自动创建绘图,可以将项目从“表和视图”窗口拖动到绘图页面上,手动组建数据库模型。

    11. 查看所选内容以验证确认正在提取所需信息,然后单击“完成”。

      向导提取所选信息并在“输出”窗口显示有关提取过程的备注。

    导入和优化现有模型

    如果拥有现有 VisioModeler 或 PLATINUM ERwin 模型,可将其导入以创建 Visio 数据库模型图。此功能仅限于 VisioModeler 2.0 或更高版本的词典模型 (.imd) 文件和 PLATINUM ERwin 2.6、3.0 和 3.52 .erx 文件。

    1. 在“文件”菜单上,指向“新建”,指向“软件和数据库”,然后单击“数据库模型图”。

    2. 在“数据库”菜单上,指向“导入”,然后单击“导入 <模型类型>”。

    3. 键入要导入的模型的路径和文件名,或单击“浏览”按钮,找到模型文件,然后单击“打开”。

    4. 在“导入”对话框中,单击“确定”。

      Visio 导入文件并在“输出”窗口中显示其进度。导入的表显示在“表和视图”窗口中。

    5. 在“表和视图”窗口中,选择要建模的表,然后将其拖到绘图页上。

  2. 创建数据库模型图后,开始对其进行优化。可添加表格和视图并进行自定义、创建关系以及对列和数据类型进行自定义。

    表格

    使用“实体”形状在图中创建表格。

    1. 从“实体关系”或“对象关系”模具中,将“实体”形状拖到绘图上。

    2. 双击形状以打开“数据库属性”窗口。

    3. 在“类别”下,单击“定义”并键入表格名称。

    4. 在“类别”下,单击“”,键入名称并选择数据类型。

    5. 为不能具有 NULL 值的列选中“必需”复选框。

    6. 为对数据库表中的每行进行唯一标识的列选中“PK”(主键)复选框。

    7. 在“类别”下,单击“索引”、“触发器”、“检查”或“扩展”以创建这些可选元素。

    使用“数据库属性”窗口添加或更改列的属性,包括数据类型和主键。

    1. 在图中双击表格。

    2. 在“数据库属性”窗口的“类别”下,单击“”。

    3. 单击第一个空的“物理名称”单元格,并键入名称。

    4. 若要更改列的数据类型,单击列的“数据类型​​”字段,然后选择列表中的数据类型或将其键入列表中。例如,可以键入 decimal(8,2)char(30)

    5. 若要防止出现 NULL 值,选中“必需”复选框。

    6. 若要将列指定为主键,选中“PK”复选框。

    7. 若要查看单击“”类别后所显示的列属性以外的其他列属性,选择相应列,然后单击“编辑”。

    关系

    关系通过使用主键和外键,让数据库能够将表格中的行与相关表格中的行匹配。可以在图中显示这些关系。此外,可以设置它们的基数(例如,一对多)并使用 Crow's feet 表示法、关系表示法或 IDEF1X 表示法来显示基数。无法在“数据库模型图”模板中使用上述任一表示法显示多对多关系。

    1. 在表之间创建关系:

      1. 请确保两个表在图中均可见。如果通过反向工程将现有数据库转换为模型,可能需要将一个表或两个表从“表和视图”窗口拖到绘图页上。

      2. 双击用于关系主键一侧的表。

      3. 在“数据库属性”窗口的“类别”下,单击“”。

      4. 在网格中,单击要用于唯一标识表中每行的列,然后选中“PK”复选框,将其设置为主键。

      5. 从“对象关系”或“实体关系”模具中,将某个“关系”形状拖放到页面上的空白区域。

      6. 将较高的一端连接到包含父表的表。

      7. 将另一端连接到子表。

        如果第二个表尚未包含与主键同名的列,则建模器会向第二个表中添加此列作为外键。

        注意: 如果关系行消失,在“数据库”菜单上,指向“选项”,然后单击“文档”。在“关系”选项卡的“显示”下,选中“关系”复选框。

    2. 设置关系的基数:

      1. 双击此关系。

      2. 在“数据库属性”窗口的“类别”下,单击“杂项”。

      3. 在“基数”下,选中最适合关系的基数。对于一对多关系,最佳选择是“大于或等于 0”或“大于或等于 1”。对于一对一关系,最佳选择是“0 或 1”或“精确为 1”。

  3. 要对图表进行其他优化(如创建索引、check 子句和触发器),可以执行以下操作:

    创建索引

    运行查询时,索引可以提高数据库的性能或速度。

    1. 打开数据库模型图。

    2. 双击要添加索引的表,在“数据库属性”窗口的“类别”列表中,单击“索引”。

    3. 单击“新建”。

    4. 在“创建索引”对话框中,为该索引键入一个名称,然后单击“确定”。

    5. 在“索引类型”中,选择创建唯一或非唯一索引。

    6. 在“可用列”列表中,选择要包含在此索引中的每个列的名称,然后单击“添加 >”。

    7. 在“索引列”列表中,选中“Asc”复选框以创建升序排序的索引,或清除复选框以创建降序排序的索引。

      数据库模型图随即更新。

    创建视图

    可将视图视为已保存的查询。如果需要从多个表重复访问相同的信息,或者希望在不允许用户更改实际表的情况下向用户公开数据,使用视图会非常方便。

    从“实体关系”或“对象关系”模具中,将“视图”形状拖到绘图页上。

    设置表和视图的扩展属性

    也许可以设置表或视图的扩展属性,用于确定其存储位置,具体取决于所使用的数据库管理系统 (DBMS)。

    双击要设置扩展属性的表或视图,在“数据库属性”窗口的“类别”列表中,单击“扩展”。

    创建 Check 子句

    使用 Check 子句可确保列中输入的数据处于特定值范围内。例如,可以创建一个 Check 子句,要求名为“Age”的列中的数据超过 65。

    1. 双击表以打开“数据库属性”窗口。

    2. 在“类别”下,单击“”然后单击要在其中添加 Check 子句的列。

    3. 单击“编辑”。

    4. 在“列属性”对话框的“检查”选项卡上,输入所需的约束。有关所选内容的详细信息,请参阅列和字段属性对话框(“检查”选项卡)

      Check 子句已添加到“局部代码”下的“代码”窗口。

    创建存储过程和用户定义的函数

    使用存储过程和用户定义的函数创建可重复使用的代码包,用于重复执行相同的操作。用户定义的函数和存储过程的主要区别在于,前者返回一个值,而后者执行代码,不返回值。

    1. 在“数据库”菜单上,指向“视图”,然后单击“代码”以打开“代码”窗口。

    2. 单击“全局代码”,然后单击“新建”。

    3. 在“代码编辑器​​”的“属性”选项卡上,单击要创建的代码类型,并键入代码名称。

    4. 在“正文”选项卡上,键入代码,然后单击“确定”。

    创建触发器

    数据库中发生特定事件时,触发器会引发触发器中定义的 SQL 代码运行。

    1. 双击表以打开“数据库属性”窗口。

    2. “类别”下,单击“触发器”,然后单击“添加”。

    3. 在“属性”选项卡上,键入触发器的名称。

    4. 在“正文”选项卡上,键入代码,然后单击“确定”。

      触发器已添加到“局部代码”下的“代码”窗口。

另请参阅

在数据库模型图中定义关系

向数据库模型图添加表和列

在数据库模型图中设置和编辑数据类型

对现有数据库进行反向工程

扩展你的 Office 技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×