我们提供海南网站维护服务,以实惠、方便、快捷著称!一次服务,终身朋友! ·付款帐号 ·联系我们
海南网站维护
网站维护热线: 网站维护咨询热线 网站维护:
网站建设: 网站建设
首页
维护介绍
维护套餐
案例分享
维护申请
维护反馈
维护知识
行业动态
联系我们
建站服务请点这里>>
网站维护申请
当前位置:首页 > 维护知识

使用 DB2 对象:创建约束

来源:维护啦 作者:www.weihula.com 人气: 2016-7-22
内容提示:约束使 DBMS 能够防止不正确的或意外的数据输入表中,从而确保表中数据的完整性。

  约束使 DBMS 能够防止不正确的或意外的数据输入表中,从而确保表中数据的完整性。DB2 中使用以下约束实施数据完整性:
  主键(Primary key)
  用来确保一个列或一组列的值的惟一性。每个表只能有一个主键。
  外键(Foreign key)或称为引用约束(referential constraint)
  用来在两个表之间建立引用关系,这两个表通常称为子表和父表,用来建立引用关系的操作在 REFERENCE 子句中定义。当在父表或子表中插入/删除/更新的数据满足预定义的条件时,就执行这个操作。外键总是应该引用父表中的主键或惟一键。
  惟一键(Unique key)
  用来确保一个列或一组列的值的惟一性。与主键相反,一个表可以有多个惟一键。惟一键还使外键能够引用主键之外的数据列。每当定义主键或惟一键时,就会创建惟一索引。
  检查约束(Check constraint)
  在表级上针对一个或多个表列定义检查约束,它们可以对这些表列实施指定的规则,使这些列中插入或更新的数据满足检查约束中预先定义的条件。与其他约束不同,检查约束可以在某些操作期间临时关闭,比如 LOAD,在对约束进行检查之前,表处于检查未决状态。
  可以在创建表时创建约束,也可以使用 ALTER TABLE 语句或 GUI 界面在以后添加约束。
  以下练习演示如何创建和使用这些约束。它还演示如何使用 Command Editor 执行一些日常管理任务:
  1、在 Control Center 主菜单中,点击 Tools > Command Editor。出现 Command Editor 窗口。使用这个编辑器编辑 DB2 命令,执行它们,然后查看返回的 DB2 或 SQL 消息。
  2、首先在 AUTHOR 表中添加另一个列,然后在这个表上添加一个主键。添加以下命令并点击图1 所示的绿色执行按钮:
  图1 Command Editor —— 修改表

  在添加主键时,由于 AUTHOR_ID 上已经有了一个惟一索引, DB2 要在幕后创建一个惟一索引。 DB2 为这个主键使用现有的索引,并返回 SQL0598W。
  3、在 Command Editor 中,还可以选择将现有命令保存到文件中,或者用接下来要编辑或运行的新命令替换它们。
  4、将 Command Editor 窗口中的命令替换为以下命令:

  CONNECT TO HWLD;
  CREATE TABLE HWLD.MODULE
  ( MODULE_ID INT NOT NULL,
  MODULE_NAME CHAR(20) NOT NULL,
  PRIMARY KEY (MODULE_ID),
  CONSTRAINT MID_UNIQ UNIQUE
  (MODULE_ID, MODULE_NAME),
  CONSTRAINT MID_CHECK CHECK (MODULE_ID >= 0)
  )
  IN TBSP_DATA1 INDEX IN TBSP_INDEX1;
  CONNECT RESET;

  5、这个 CREATE TABLE 命令在创建表期间创建一个主键约束、一个惟一键约束和一个检查约束。检查约束要求数据列 MODULE_ID 中的值都是正数。图2显示预期的运行结果:
  图 2. Command Editor —— 创建表

  可以使用 CREATE TABLE 向导完成同样的任务。
  6、现在,已经创建了两个表。表 HWLD.AUTHOR 包含 Hello World 模块的所有作者信息。表 HWLD.MODULE 包含所有 Hello World 系列模块信息。现在,创建另一个表 HWLD.PARTICIPANT,它包含所有参与者的信息,包括姓名、部门(可选)、参与的模块和测试分数。
  表 HWLD.PARTICIPANT 应该具有以下的表定义:

  (PAR_NAME VARCHAR(50) NOT NULL,
  PAR_ID BIGINT NOT NULL,
  PAR_AREA CHAR(20),
  MODULE_ID INT,
  PAR_TEST_SCORE INT)

  7、注意以下条件:
每个人可以多次测试多个模块
测试分数应该在 0 到 100 之间
HWLD.PARTICIPANT 中的 MODULE_ID 应该引用 HWLD.MODULE 中的 MODULE_ID。当从表 HWLD.MODULE 中删除一个模块时,将 PARTICIPANT 表中对应的 MODULE_ID 设置为 NULL,所以 NULL 值在这里不会是无效的 MODULE_ID 值。
当在 HWLD.PARTICIPANT 表中插入一行时,如果它的 MODULE_ID 在 HWLD.MODULE 中不存在,那么插入失败。
当更新表 HWLD.MODULE 中的一个模块时,如果 HWLD.PARTICIPANT 表中存在着引用这个 MODULE_ID 的记录,那么更新失败。
  8、添加以下约束来实施前面的条件:
列 PAR_TEST_SCORE 上的检查约束确保它的值在 0 到 100 之间
MODULE_ID 上的外键引用 HWLD.MODULE 中的 MODULE_ID,并设置 ON DELETE SET NULL,ON UPDATE RESTRICT(注意,关于插入的第 4 条规则在默认情况下已经实施了)。
  可以在创建表 HWLD.PARTICIPANT 时创建这些约束。
  9、在 Control Center 中,从 Tables 视图启动 Create New Table 向导。选择 HWLD 作为表模式,输入 PARTICIPANT 作为表名,并添加注释。点击 Next。
  10、在 Columns 页面上,点击 Add 添加第一个列。指定 PAR_NAME VARCHAR(50) NOT NULL 并选择 VARCHAR 作为数据类型。
  11、点击 OK。在 Columns 页面上,添加第二个列 PAR_ID BIGINT NOT NULL。点击 OK。添加第三个列 PAR_AREA CHAR(20)。注意,这个列允许 NULL 值。
  12、同样,添加第四个列 MODULE_ID INT 和第五个列 PAR_TEST_SCORE INT。它们的数据类型都是 INTEGER,都允许 NULL 值。
  13、检查已经添加的列。
  图3. Create Table 向导 —— 列

  14、点击 Next。再次点击 Next 跳过 Data Partitions 页面。
  15、与前面创建的两个表相似,表 HWLD.PARTICIPANT 也为数据和索引使用单独的表空间。选择 TBSP_DATA1 作为数据的表空间,选择 TBSP_INDEX1 作为索引的表空间。点击 Next。
  16、在 Keys 页面上,点击 Add Foreign。输入 PMID_FOR 作为外键名。
  图4. Create Table 向导 —— 添加外键

  17、选择 HWLD.MODULE 作为父表。在 Available columns 中选择 MODULE_ID,并点击 > 将它添加为外键。对于 On delete 选择 SET NULL,对于 On update 选择 RESTRICT。点击 OK。应该会看到定义了以下约束:
  图5. Create Table 向导 —— 键

  点击 Next。(在这里,可以创建不同类型的键,比如惟一键和主键。在这个练习中,只创建一个外键。)
  18、再次点击 Next 跳过 Dimensions 页面。
  19、在 Define Check Constraints 页面上,点击 Add 启动 Add Check Constraint 向导。
  20、输入 PAR_SCORE_CHECK 作为检查约束名。添加以下代码作为检查条件: PAR_TEST_SCORE BETWEEN 0 and 100
  选择两个约束属性。
  21、输入注释。点击 OK 添加这个约束。点击 Finish。在 DB2 Message 窗口中应该会返回 DB20000。关闭它。
  22、检查新创建的 PARTICIPANT 表是否显示在 Control Center 中。
  回顾 HWLD.PARTICIPANT,考虑您是否能够想出可以用约束实现的其他条件。(提示:当前的实现对于参与者以及分配给他们的参与者 ID 没有要求惟一性;实现这一条件有两种方法。一种是将当前的 HWLD.PARTICIPANT 表分割成两个表,对参与者 ID 实施惟一性约束,并建立引用参与者 ID 的外键。您能想出另一种方法吗?)
  下图总结了前面创建的三个表以及在其中添加的约束。
  图6. 刚创建的表及其约束

【声明】本文章系本站编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请与本站联系,我们将在第一时间删除内容!
上一篇 上一篇:初学:ASP内建对象Response
下一篇 下一篇:使用 DB2 对象:创建模式、表和视图
返回维护知识
维护动态 网站维护案例 更多动态 维护动态
积木人展览展示
海德睿工程
创际门窗
天津雷公
利君云商
维护动态 行业动态 更多动态 维护动态
谷歌悄然删去人工智能团队网页中
谷歌Colab推出数据科学助手
天价域名再现:ai.com挂牌
京东云发布八大领先智算产品 五
全球开源大模型榜单揭晓,阿里通
维护动态 网站维护知识 更多动态 维护动态
网站中木马了怎么办,怎么清除?
企业建设网站的好处
网站维护的工作内容有哪些?
制作网站需要关注这些核心要素
网站优化中十分影响排名的是什么
网站维护申请 网站维护申请点此进入 网站维护意见反馈 反馈意见

网站维护电话咨询

返回顶部
关于我们 | 案例分享 | 维护套餐 | 维护申请 | 意见反馈 | 维护知识 | 行业动态 | 联系方式
2025 © 网站维护 www.weihula.com 版权所有