ex09完整性定义参考答案

更新时间:2023-05-30 23:41:35 阅读: 评论:0

实验九  完整性定义
1 实验目的与要求
(1)充分理解关系数据库中关于数据库完整性的概念。
(2)掌握实体完整性的定义方法。
(3)掌握参照完整性定义的方法。
(4)掌握用户自定义完整性的方法。
2 实验内容
重新创建BookDB数据库中5张基本表,要求完成以下完整性约束:
(1) 分别为BookClass表、Book表、Reader表建立主键,要求该约束为列级约束。
脚本:
BookClass表:
classNo        char(3)      not null primary key,            --分类号
Book表:
bookNo        char(10)    not null primary key,            --图书编号
Reader表:
readerNo      char(8)      not null primary key,            --读者编号
(2) 给Reader表创建元组级约束,要求读者编号共8位,以“R”开头,后续四位为当前系统时间的年份,最后三位为流水号,如“R2008001”。
脚本:
constraint readerNoCK  CHECK(reader贝多芬传读后感No   like
      '[R]'+convert(arxivchar(4),year(getdate()))+'[0-9][0-9][0-9]')
(3) 给Reader表中读者性别建立列级约束,要求性别为女或男。
脚本:
  Sex  char(2)  null  CHECK(x IN('男','女')),        /*性  别*/
(4) 为Reader表创建列级约束,要求分别设置借书数量设置默认值0,身份证号要求唯一。
borrownum          numeric(3)  DEFAULTnot null,    --借书数量
identitycard          char(18)  not null unique,        --身份证号
(5) 为Reader表创建元组级约束,要求读者借书数量不得超过8本。
查询脚本:
constraint borrownumCK CHECK( borrownum>=0 and borrownum<=8)
(6) 为Book表创建列级约束,要求图书单价在10元至80元之间。
脚本:
price numeric(7, 2)  CHECK (price>=10.00 AND price<=80.00) null,  /*单价*/
(7) 为Book表创建列级约束,要求图书编号共10位,以“B”开头,后续四位为当前系统时间的年份,最后五位为流水号,如“B200101001”。
脚本:
bookNo char(10) constraint bookNoCK 
CHECK(bookNo like'[B]'+convert(char(4),year(getdate()))+
'[0-9][0-9][0-9][0-9][0-9]') not星期一到星期天的英文 null,
(8) 为Book表创建表级约束,要求定义Book表的外键约束。
脚本:
constraint BookFK FOREIGN KEY(classNo)references Bookclass(classNo)
(9) 为Borrow表创建表级约束,要求图书归还日期大于借阅日期。
脚本:
constraint Borrowck check(returnDate>borrowDate),
(10) 为Borrow表创建列级约束,要求借阅日期的默认值为系统当前日期。
脚本:
borrowDate  datetime  DEFAULT getdat()  not null,      --借阅日期
(11) 为Borrow表创建表级约束,要求定义所有主键和外键约束。
脚本:
constraint Borrowpk primary key CLUSTERED(readerNo,bookNo,borrowDate),
常用英语口语CONSTRAINT BorrowFK1 FOREIGN KEY (readerNo) REFERENCES Reader (readerNo),
CONSTRAINT BorrowFK2 FOREIGN KEY (bookNo) REFERENCES Book (bookNo)
beenden完整脚本:
t nocount on
t dateformat ymd
u master
go
 
/*create databa*/
if exists(lect * from sysdatabas where name='BookDB')
    drop databa BookDB
go
create databa BookDB
on primary
(name='BookDB',
filename='d:\sqlWork\BookDB.mdf',
size=3bowl的音标,
  maxsize=10,
  filegrowth=1)
log on constantly
(name=Booklog,
  filename='d:\sqlWork\BookLog.ldf',
thickening  size=1,
  maxsize=5,
  filegrowth=1)
go
/*data mydataba*/
u BookDB
go
u BookDB
/*图书分类表*/
print 'creat table BookClass'
go
CREATE TABLE BookClass(
classNo    char(3)        not null primary key,    /*图书分类号*/
className    varchar(20)    not null                /*图书分类名称*/bbm   
)
go
/*图书表*/
print 'create Book'
go
create table Book(
bookNo        char(10)    not null primary key,    /*图书编号*/
  check(bookNo like '[B]'+convert(char(4),year(getdate()))
+'[0-9][0-9][0-9][0-9][0-9]'), 
  classNo        char(3)        not null,            /*分类号*/
  bookName        varchar(40)    not null,        /*图书名称*/
  authorName        varchar(8)    not null,            /*作者姓名*/
  publishingName    varchar(20)    null,        /*出版社名称*/
publishingNo            char(17)    null,        /*出版社号*/
price                numeric(7,2)    null
        check(price between 10 and 80),            /*单价*/
publishingDate    datetime    null,              /*出版日期*/
  shopDate        datetime    null,                /*入库时间*/
shopNum        numeric(3)    null,                    /*入库数量*/ 
  constraint BookFK foreign key(classNo) references BookClass(classNo)
)
Go
/*读者表*/
print 'create Reader'
go
create table Reader(
readerNo        char(8)        not null primary key,2017年高考    /*读者编号*/
  check(readerNo like '[R]'+convert(char(4),year(getdate()))
+'[0-9][0-9][0-9]'), 
readerName        varchar(8)    not null,                  /*姓名*/
x                char(2)        null                    /*性别*/
      check(x in('女','男')),
  identifycard            char(18)    unique  null,      /*身份证号*/
  workUnit        varchar(50)    null,                    /*工作单位*/
borrowCount  tinyint  default 0 null,              /*借书数量*/
  constraint borrownumCK check(borrowcount<=8)       
)
go
/*借阅表*/
print 'create Borrow'
go
create table Borrow(
readerNo        char(8)        not null,                /*读者编号*/
  bookNo        char(10)    not null,                      /*图书编号*/
  borrowDate    datetime    default getdate() not null,    /*借阅日期*/
  shouldDate    datetime    not null,                      /*应归还日期*/
  returnDate    datetime        null,                      /*归还日期*/
  constraint BorrowPK primary key
clustered(readerNo,bookNo,borrowDate),
  constraint BorrowFk1 foreign key(readerNo)

本文发布于:2023-05-30 23:41:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/128669.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:lect练习
标签:要求   约束   完整性   图书   创建   列级   读者   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图