文档详情

数据库系统基础教程(第7章)剖析.ppt

发布:2017-06-04约8.56千字共48页下载文档
文本预览下载声明
第7章 约束和触发器 SQL中约束种类 数据库设计质量体现为约束constraints所提供的可靠性保障。约束以表达式或语句的形式存储在数据库中。约束是一种主动性(active)元素,当数据库特定状态发生改变时自动运行。 SQL2提供部分完整性约束:键、参照完整性、域约束、元组约束等。 SQL3提供触发器trigger机制:由特定事件触发某种主动性元素。 7.1 键和外键 键与外键 键key是最重要的约束。每个表都必须确定自己的键。 每个表都可能有多个属性集可作为键,称为“候选键candicate key”。 一个表只能确定一个主键(Primary Key)。 若某个属性说明为Unique,则它是一个候选键。 若关系的某个属性说明为外键,则该属性出现的值,一定会在另一个关系的主键中出现。 主键声明 如何说明表中的主键? SQL语言有两种说明主键的方式。 方式1:Create Table语句中,某属性说明之后加Primary Key 方式2:属性表之后,加Primary Key(属性1,属性2,…) 若主键有多个属性,则只能用方式2。 GUI操作方式更方便直观。 用UNIQUE声明键 如何说明表中的主键? SQL语言有两种说明主键的方式。 方式1:Create Table语句中,某属性说明之后加UNIQUE 方式2:属性表之后,加UNIQUE(属性1,属性2,…) 若用UNIQUE说明键有多个属性,则只能用方式2。 GUI操作方式更方便直观 例子 考虑关系SalesMan的模式(方式1) CREATE TABLE SalesMan( empid VARCHAR (10) PRIMARY KEY, idno VARCHAR (18) UNIQUE, name VARCHAR (30), gender CHAR(1), birthday DATE, address VARCHAR(255), phone VARCHAR(13) ); 例子 考虑关系SalesMan的模式(方式2) CREATE TABLE SalesMan( empid VARCHAR (10), idno VARCHAR (18), name VARCHAR (30), gender CHAR(1), birthday DATE, address VARCHAR(255), phone VARCHAR(13), PRIMARY KEY(empid), UNIQUE(idno) ); 主键和Unique属性之间有何区别和联系 一个表有且仅有一个主键;而Unique属性可有多个或没有。 主键是单个属性,则该属性隐含为Unique。 主键不允许有NULL值,属性为Unique则允许有NULL值。 若主键是多个属性,则每个属性都不可能为Unique。 DBMS对主键往往自动赋予一些特征,如建立索引index等。 强制键约束 什么操作会导致违背键约束? 对表的delete操作不会违背该表的键约束。 insert和update可能违背该表的键约束。 SQL实施主键约束即是在insert和update时检验键值,避免空值或重复键值。 外键约束声明 如何说明外键 两种SQL方式: 方式1:某属性之后加references 被参照表(被参照属性)。 方式2:属性表之后加foreign key 参照属性 references 被参照表(被参照属性)。 其中:被参照属性应是被参照表的Primary Key或unique属性。 例子 例: CREATE TABLE StarsIn( Movietitle VARCHAR(90) NOT NULL, Movieyear INT NOT NULL , StarName VARCHAR(30) NOT NULL, PRIMARY KEY (Movietitle, Movieyear, StarName), FOREIGN KEY (Movietitle, Movieyear) References Movie(title, year), FOREIGN KEY StarName References Stars(name) ); 外键约束声明 是否可定义一个表参照自己? 可以。 例如:salesman(empid, idno, name, managerid, deptid, …) 外键是否可取NULL值? 可以。 维护引用完整性 数据库更新时如何保证参
显示全部
相似文档