在数据库模型图中保持参照完整性

应用对象
Visio 高级版 2010 Visio 2010 Visio 2007

注意

数据库模型图仅可在某些版本的 Visio 中可用。 若要了解详细信息,请参阅找不到数据库建模功能?

了解引用完整性规则

引用完整性规则可防止数据库用户意外中断相关列之间的映射。

假设您有一个名为 Books 的数据库,其中包含两个名为 Titles 和 Authors 的表。 在本示例中,每个游戏只有一个作者,但每个作者可以有多个游戏,从而创建所谓的一对多关系。 关系“one”端的表称为 父表。 “多”侧的表称为 子表

为了收集有关每本书及其作者的信息,查询使用键将“标题”表中的每本书与“作者”表中的作者进行匹配。 Authors) (父表必须具有唯一标识每一行的 主键 。 “游戏”表必须有一个列,用于保存每个游戏的 AuthorID。 此列称为 外键。 主键标识每个作者,外键标识哪些书籍由哪个作者撰写。

如果用户更改父表中作者的 AuthorID,而不更新 Titles 表中的 AuthorID,则 Titles 表中的书籍将不再具有有效的作者。

您可以设置引用完整性规则来执行所需操作,而不必更改这两个表中的 AuthorID。 您可以选择让数据库模型在父表中更改或删除键时执行特定操作。

注意

术语“父级”和“子级”用于表示类别中完全不同的含义,这些类别是使用 “父级到类别”、“ 类别”和“ 类别到子级 ”形状创建的。 有关类别的详细信息,请参阅 在数据库模型图中定义类别

设置操作以实现引用完整性

  1. 双击要为其设置参照操作的关系。

  2. 在“数据库属性窗口的”类别“下,单击”引用操作“

  3. 单击希望数据库对子表中的相应值执行的操作。 可从以下操作中进行选择:

    • 无操作 当父表主键中的值更改或删除时,子表外键中的相应值保持不变。
    • 级联 当更改或删除父表主键中的值时,将更改或删除子表外键中的相应值以匹配主键。
    • 设置为 NULL 当更改或删除父表主键中的值时,子表外键中的相应值将设置为 NULL。
    • 设置默认值 更改或删除父表主键中的值时,子表外键中的相应值设置为你选择的默认值。
    • 不强制 此操作将关闭此关系的引用完整性规则。

注意

如果禁用了“设置 NULL”和“设置默认值”选项,则关系很可能在关系的“数据库属性窗口的”杂项“选项卡上设置为”可选“。

设置列的默认值

若要使用 “设置默认值 ”操作,必须为列提供默认值。

  1. 双击图中的表以打开“数据库属性窗口。
  2. “类别”下,单击“ ”,单击要为其创建默认值的列,然后单击“ 编辑”
  3. “列属性”对话框的“定义”选项卡上,输入默认值。

使用表示法显示参照完整性

您可以设置文档选项以隐藏或显示模型中关系线旁边的参考完整性表示法。

引用完整性表示法中的字母是什么意思?

引用完整性表示法显示由冒号分隔的两个字母的关系,格式为 [在父表中执行的操作]:[子表中的结果]。 例如,d:C 表示在父表中删除某些内容时,更改将级联到子表。

父表中的操作用小写字母表示:

  • u 父表中的数据已更新。
  • d 父表中的数据将被删除。

子表中的结果用大写字母表示:

  • R 无操作 不要更改子表。
  • C Cascade 在子表中复制更改。
  • D 设置默认值 在子表中插入之前为该列设置的默认值。
  • N 设置 Null 将子表设置为 NULL。
  • (空白) 不要对此关系强制执行参照完整性。

注意

这些设置会影响实际数据库而不是模型中发生的情况。 在从现有数据库进行反向工程的模型中,可以看到数据库在引用完整性方面的设计方式。 在从头开始创建的模型中,可以使用这些设置来记录您希望建模的数据库的行为方式。

在 Visio 2010 中显示参照完整性

  1. 在“数据库”选项卡的“管理”组中,单击“显示选项”。
  2. “关系”选项卡的“显示”下,选中“参照操作”检查框。

找不到数据库建模功能?

某些版本的 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 计划 2,并且想要了解如何将现有数据库工程为数据库模型,请参阅主题反向工程现有数据库