1. 程式人生 > >北大青鳥 SQL第二學期第二章課後題(Library資料庫)

北大青鳥 SQL第二學期第二章課後題(Library資料庫)

--建資料庫
use master
if exists(select * from sysdatabases where name='Library')
drop database Library
go


create database Library
on primary
(
name='Library_data',
filename='D:\sqltwosjk\Library_data.mdf',
size=5mb,
filegrowth=15%
)
log on
(
name='Library_log',
filename='D:\sqltwosjk\Library_log.ldf',
size=1mb,
filegrowth=15%
)
go


--建表
use Library
if exists(select * from sysobjects where name='Book')
drop table Book
go


create table Book
(
BID int not null,
BName varchar(20) not null,
Author varchar(20) not null,
PubComp varchar(20) not null,
PubDate datetime not null,
BCount int not null,
Price money not null
)


use Library
if exists(select * from sysobjects where name='Reader')
drop table Reader
go


create table Reader
(
RID int not null,
RName nvarchar(20) not null,
LendNum int not null,
RAddress nvarchar(50) not null
)


use Library
if exists(select * from sysobjects where name='Borrow')
drop table Borrow
go


create table Borrow
(
RID int not null,
BID int not null,
LendDate datetime not null,
WillDate datetime not null,
ReturnDate datetime not null
)




use Library
if exists(select * from sysobjects where name='Penalty')
drop table Penalty
go


create table Penalty
(
RID int not null,
BID int not null,
PDate datetime not null,
PType int not null,
Amount money not null
)




--建約束
--表1
--主鍵
alter table Book
Add constraint PK_BID primary key(BID)


--BID必須以ISBN開頭
alter table Book
Add constraint CK_BID check(BID like 'ISBN%')


--出版日期小於當前日期
alter table Book
Add constraint CK_PubDate check(PubDate<getdate()) 


--現存數量必須大於等於1
alter table Book
Add constraint CK_BCount check(BCount>=1) 


--單價必須大於0
alter table Book
Add constraint CK_Price check(Price>0) 


--表2
alter table Reader
Add constraint PK_RID  primary key(RID),      --主鍵
       constraint CK_LendNum check(LendNum>=0)      --已借書數量必須大於等於0


--表3
alter table Borrow
Add constraint PK_RID_BID_LendDate primary key(RID,BID,LendDate) --符合主鍵


alter table Borrow
Add  constraint DF_LendDate default(getdate()) for LendDate  --借閱日期預設值為當前日期


alter table Borrow
Add constraint CK_WillDate check(WillDate>LendDate)   ---應歸還日期 必須大於等於借閱日期 


alter table Borrow
Add constraint DF_WillDate default(DateAdd(mm,1,getdate())) for WillDate  --預設值為借閱日期+1個月


alter table Borrow
Add constraint DF_Return default(null) for ReturnDate  --實際歸還日期預設值為空


alter table Borrow
Add constraint FK_RID foreign key(RID) references Reader(RID) --外來鍵


alter table Borrow
Add constraint FK_BID foreign key(BID) references Book(BID)--外來鍵


--表4
alter table Penalty
Add constraint PK_RID_BID_PDate primary key(RID,BID,PDate)


alter table Penalty
Add  constraint DF_PDate default(getdate()) for PDate  --預設值為當前日期


alter table Penalty
Add constraint CK_PType  check (PType in(1,2,3))   --罰款型別1-延期  2-損壞  3-丟失


alter table Penalty
Add constraint CK_Amount check(Amount>0)   --罰款金額必須大於0


alter table Penalty
Add constraint FK_RID2 foreign key(RID) references Reader(RID)--外來鍵


alter table Penalty
Add constraint FK_BID2 foreign key(BID) references Book(BID)--外來鍵

相關推薦

北大青鳥 SQL第二學期第二課後Library資料庫

--建資料庫 use master if exists(select * from sysdatabases where name='Library') drop database Library go create database Library on primary

python 核心程式設計第二版9習題答案自寫

test 9.1 fileload = 'C:/Users/Administrator/Desktop/test/test9.1.txt' f = open(fileload,'r') for eachline in f: for ps in ea

《算法導論》讀書筆記--第1、2課後

秦九韶 ons 全局變量 思考 end exc ray 存在 檢查 第一章 轉自http://www.cnblogs.com/batteryhp/p/4654860.html 思考題 1-1(運行時間的比較)確定時間t內求解的問題的最大規模。 上面是網上提供的答案。

第二次周賽HHDU-1002

問題連結:https://vjudge.net/problem/HDU-1002 問題簡述:求A+B的和,A和B的位數不會超過1000位。 Get:進行高精度運算。用兩個字元陣列接收A和B,再用兩個整型陣列接收字元陣列,兩個整型陣列相加,若位數相加大於10,則進一位,當前位減10(因

第二次周賽GHDU-1061

問題連結:https://vjudge.net/problem/HDU-1061 問題簡述:求n的n次方的個位數。 Get:可以用快速冪,也可以找規律。 方法一:找規律 相關連結:https://blog.csdn.net/feynman1999/article/details/

第二次周賽FHDU-1019

問題連結:https://vjudge.net/problem/HDU-1019 問題簡述:第一行輸入n,接下來有n個測試例項,每一個測試例項先輸入一個數字,代表接下來要輸入幾個數字,求這幾個數字的最小公倍數。(不包括每一個測試例項的第一個數字) Get:兩個數的最小公倍數等於(這兩

第二次周賽DHDU-1013

問題連結:https://vjudge.net/problem/HDU-1013 問題簡述:求數根。(個位的累加) Get:有兩種方法: 1.硬剛(求得每個位上的數,再相加,再判斷) AC程式碼: #include <string> #include <io

第二次周賽CHDU-2046

問題連結:https://vjudge.net/problem/HDU-2046 Get:這是一道遞推求解題,n規模的格子只能從n-1和n-2得來,n-1的時候增加一個格子,只能豎著放,n-2的時候增加兩個格子,只能橫著放(如果豎著放,就跟n-1的時候重複了)。所以f(n)=f(n-1)

第二次周賽BHDU-2044

問題連結:https://vjudge.net/problem/HDU-2044 Get:這是一道遞推求解的題目,可能的路線數是斐波那契數列,只不過前幾項不同:f(0)=0,f(1)=1,f(2)=2,f(3)=3.後面的值由f(n)=f(n-1)+f(n-2)可以求出。需要注意的是,輸

第二次周賽ACodeForces-1A

問題連結:https://vjudge.net/problem/CodeForces-1A 問題簡述:有一個矩形廣場,規模是n*m,現在要用邊長為a的正方形花崗岩石鋪滿廣場,問至少需要多少塊? Point:數字範圍是1 ≤  n, m, a ≤ 10^9,所以用__int64或lon

第二期訓練第六HDU-2019

問題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2019 問題簡述:在n個有序數中插入一個數字,並使新的序列有序。 Point:包含多個測試例項。 AC程式碼: #include <iostream> using na

第二期訓練第五HDU-2010

問題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2010 問題簡述:輸入多組兩個三位數的數字,求在這兩個數字範圍內符合各位數字的立方和等於其本身的數。並將這些數按序輸出。如果沒有這樣的數字,則輸出“no”。 Get:(1)求某個數的冪用:

第二期訓練第四HDU-1004

問題連結:http://acm.hdu.edu.cn/showproblem.php?pid=1004 問題簡述:在放氣球比賽中,有很多不同顏色的氣球,現在要統計哪種顏色的氣球最多。 Point:N=0表示輸入結束。 Get:(1)用char定義的字元不能直接判斷是否相等,要用函

第二期訓練第三HDU-2057

問題連結:http://acm.hdu.edu.cn/showproblem.php?pid=2057 問題簡述:輸入多組資料,每組資料包含兩個十六進位制數字A和B,輸出A+B的結果。 Point:(1)輸入多組十六進位制數字,輸出結果為十六進位制 (2)輸出字母為大寫 (3)定義變

Unix網路程式設計學習筆記課後Chapter 6

6.1 在/usr/include/x86_64-linux-gnu/sys/select.h中檢視fd_set的定義 /* fd_set for select and pselect. */ typedef struct { /* XPG4.2 requires this

Unix網路程式設計學習筆記課後Chapter 4

4.1 如何辨別<netinet/in.h>中定義的INADDR_是主機序還是網路序。 less /usr/include/netinet/in.h 可以發現是按小端序儲存的,Linux的主機序就是小端序。 還有個想法,可以用htonl()去轉換,看結果是不是相等。

Unix網路程式設計學習筆記課後Chapter 3

3.1 因為不同型別的套接字長度不同。IPV4和IPV6套接字長度固定,但Unix域結構和資料鏈路結構是可變長度的,需要一個引數記錄結果的大小,直接傳就是值傳遞了,需要傳一個指標,以實現引用傳遞。 3.2 void指標只能用來傳引數,不能對void型別指標加減和解引用 3.3 匆匆忙

C++ premier 第二課後

課後題 style font 不包含 ron 超過 什麽 spa 類型 2.1:int、 long 、short 類型的區別 short、 int 和 long 類型都表示整型值, 存儲空間的大小不同。一般, short類型為半個機器字長,int 類型為一個機器字長

作業系統概念(Operating System Concepts Ninth Edition恐龍書)第二課後翻譯答案

CHAPTER 2 Chapter 2 is concerned with the operating-system interfaces that users (or at least  programmers) actually see:system calls. The trea

【高編作業】第二課後

2-1message = "Hello World"print(message)2-2message = "one"print(message)message = "two"print(message)2-3name = "Jackson"print("Hello %s, w