1、图书借阅数据库中包含以下关系模式(附关系模式中各属性的数据类型):
图书:书号(char)、书名(char)、作者(char)、出版社(char)、出版日期(date);
学生:学号(char)、姓名(char)、性别(char)、年龄(smallint)、专业(char);
借阅:学号(char)、书号(char)、借阅时间(date)、归还时间(date);
(1)创建存储过程proc1,定义输入变量,输入学生姓名,查询并显示该学生借阅图书的数量,如果输入“*”,查询全部学生的借书数量。
create procedure proc1 @n char(20)
as
if @n='*' select count(*) from 图书借阅表
else
begin
select 姓名,count(*) 借书数量 from 学生表,图书借阅表 where 姓名=@n and 学生表.学号=图书借阅表.学号
group by 姓名
end;
(2)添加“通信工程”专业只能为男生的约束条件ck1。
Alter table 学生表
ADD Constraint ck1 check(性别='男' or 专业<>'信息工程');
用and无法实现
2、范式
(1)符合高一级的范式必定符合低一级的范式,例如符合2NF必定符合1NF
(2)1NF:符合1NF中的每个属性不可再分
1NF→2NF:消除了非主属性对码的部分函数依赖
2NF→3NF:消除了非主属性对码的传递函数依赖