07 250418

1

  • 数据的正确性和相容性
  • 防止不合语义的数据进入数据库。

3

是数据模型的组成部分,约束数据库中数据的语义

4

定义、检查、违约处理

5

  • 外键是否可以取空值:依赖应用环境语义而定
  • 在被参照关系中删除元组时,若参照关系有若干元组的外键值与被删除的被参照关系的主键值相同
  • 在参照关系中插入元组时,若被参照关系不存在相应的元组
  • 修改被参照关系中的主键,若主键在参照关系中已经被引用

6

create table DEPT(
	deptNo int PRIMARY KEY,
	deptName varchar(10),
	manager varchar(10),
	phoneNumber varchar(12)
);

create table EMP(
	empNo int PRIMARY KEY,
	empName varchar(10),
	age int,
	job varchar(10),
	salary int,
	deptNo int,
	constraint c1 check(age <- 60),
	constraint FK_deptNo foreign key(deptNo) REFERENCES DEPT(deptNo)
);

7

  • 违反实体完整性:通常拒绝执行
  • 违反参照完整性:
    • 外键是否可以取空值:依赖应用环境语义而定
    • 在被参照关系中删除元组时,若参照关系有若干元组的外键值与被删除的被参照关系的主键值相同,此时的违约反应可以是:
      • 级联删除(CASCADES):一起也都给删了
      • 受限删除(RESTRICTED):删一部分
      • 置空值删除(NULLIFIES):相关的值置空
    • 在参照关系中插入元组时,若被参照关系不存在相应的元组,则违约反应可以是:
      • 受限插入
      • 递归插入
    • 修改被参照关系中的主键,若主键在参照关系中已经被引用,则违约反应可以是:
      • 级联修改
      • 受限修改
      • 置空值修改
  • 违反用户定义的完整性:通常拒绝执行

8

create trigger t1 before insert on Male
begin
	declare sum int;
	delect (select count(*) from Male + select count(*) from Female) into sum;
	if sum=50 then
		signal sqlstate '45000' set message_text - 'Total gusts cannot exceed 50';
	endif;
end;
create trigger t2 before insert on Female
begin
	declare sum int;
	delect (select count(*) from Male + select count(*) from Female) into sum;
	if sum=50 then
		signal sqlstate '45000' set message_text - 'Total gusts cannot exceed 50';
	endif;
end;

1

数据库的安全是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏等恶意人为破坏问题

6

grant all privileges on table 学生,班级 to U1 with grant option;
grant select,update(家庭住址) on table 学生 to U2;
grant select on table 班级 to public;
grant select, update on table 学生 to R1;
grant R1 to U1 with admin option;
Built with MDFriday ❤️