-- =============================================
-- zhen:模仿pubs庫 《圖書館庫》
-- 12:51 2011/12/7
-- ylb, tech
-- 感謝貢獻者:lgz
-- =============================================
USE master
GO
-- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sysdatabases
WHERE name = N'fpubs'
)
DROP DATABASE fpubs
GO
CREATE DATABASE fpubs
GO
use fpubs
go
-- =============================================
-- zhen:1,圖書表
-- =============================================
create table titles
(
title_id varchar(6) primary key , --編號【PK】
title varchar(80) not null, --標題
[type] char(12) default('undecided') not null, --類型
pub_id char(4) null, --出版社編號【FK】
price money null, --單價
advance money null, --預付款
royalty int null,
ytd_se int null,
notes varchar(200) null, --備註
pubdate datetime default(getdate()) not null --上架日期
)
go
-- =============================================
-- zhen:2,做者表
-- =============================================
create table authors
(
au_id varchar(11) primary key check([au_id] like '[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]'), --編號【pk】
au_iname varchar(40) not null, --姓
au_fname varchar(20) not null, --名
phone char(12) default'(未知的)' not null, -- 手機號碼
address varchar(40), --地址
city varchar(20), --城市
[state] char(5), --洲
zip char(5) check([zip] like '[0-9][0-9][0-9][0-9][0-9]'), --郵編
[contract] bit --是否在簽約中;0;不在;1:在。
)
-- =============================================
-- zhen:3,圖書-做者表
-- =============================================
create table titleauthor
(
au_id varchar(11) foreign key references authors(au_id), --做者編號[FK]
title_id varchar(6) foreign key references titles(title_id), --圖書編號[FK]
au_ord tinyint null, --
royaltyper int null,
primary key(au_id,title_id) --設置聯合主鍵[PK]
)
--drop table titleauthor
go
-- =============================================
-- zhen:4,storesn. 貯藏;備用品;商店(store的複數)v. 儲存;供應;容納(store的三單形式)
-- =============================================
create table stores
(
stor_id char(4) primary key not null, --商店編號[PK]
stor_name varchar(40) null, --商店名稱
stor_address varchar(40) null, --商店地址
city varchar(20) null, --所在城市
state char(2) null, --所在州
zip char(5) null --郵編
)
-- =============================================
-- zhen:5,discounts優惠,折價
-- =============================================
create table discounts
(
discounttype varchar(40) not null, --折扣類型
stor_id char(4) foreign key references stores(stor_id) , --商店編號[FK]
lowqty smallint null, --數量下限
highqty smallint null, --數量上限
discount decimal(4,2) not null , --折扣
)
--drop table discounts
-- =============================================
-- zhen:6,jobs 工做(job的複數形式)
-- =============================================
create table jobs
(
job_id smallint primary key not null, --工做編號[FK]
job_desc varchar(50) DEFAULT ('New Position - title not formalized yet') not null, --工做描述
min_lvl tinyint CHECK ([min_lvl] >= 10) not null, --
max_lvl tinyint CHECK ([max_lvl] <= 250) not null --
)
--drop table jobs
-- =============================================
-- zhen:7,publishers--出版社
-- =============================================
create table publishers
(
pub_id char(4) primary key CHECK([pub_id] = '1756' or ([pub_id] = '1622' or ([pub_id] = '0877' or ([pub_id] =
'0736' or [pub_id] = '1389'))) or [pub_id] like '99[0-9][0-9]'), --出版社編號[PK]
pub_name varchar(40) null, --出版社名稱
city varchar(20) null, --所在城市
state char(2) null, --所在州
country varchar(30) DEFAULT ('USA') null --所在國家
)
--drop table publishers
-- =============================================
-- zhen:8,pub_info出版社詳細
-- =============================================
create table put_info
(
pub_id char(4) primary key not null, --出版社編號[PK]
logo image null, --標誌圖
pr_info char(4) foreign key references publishers(pub_id) null --出版信息[FK]
)
--drop table put_info
-- =============================================
-- zhen:9,employee僱員;從業員工
-- =============================================
create table employee
(
emp_id int primary key CHECK([emp_id] like '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' or [emp_id] like
'[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]') not null, --職工編號
fname varchar(20) not null, --職工名
minit char(1) null, --
lname varchar(30) not null, --職工姓
job_id smallint DEFAULT(1) foreign key references jobs(job_id) not null, --工做編號[FK]
job_lvl tinyint DEFAULT (10) null, --
pub_id char(4) DEFAULT ('9952') foreign key references publishers(pub_id) not null, --出版社編號[FK]
hire_date datetime DEFAULT (getdate()) not null --工做日期
)
--drop table employee
-- =============================================
-- zhen:10,roysched
-- =============================================
--drop table roysched
create table roysched
(
title_id varchar(6) foreign key references titles(title_id), --書編號[FK]
lorange int null, --低
hirange int null, --高
royalty int null --版權
)
-- =============================================
-- zhen:11,salesadj. 銷售的,售貨的;有關銷售的n. 銷售額;銷售(sale的複數)
-- =============================================
create table sales
(
stor_id char(4) foreign key references stores(stor_id), --商店編號[FK]
ord_num varchar(20), --訂單編碼
ord_date datetime not null, --訂購日期
qty smallint not null, --數量
payyterms varchar(12) not null, --付款方式
title_id varchar(6) foreign key references titles(title_id) not null, --書編號[FK]
primary key (stor_id,ord_num,title_id) --設置聯合主鍵[PK]
)
--drop table sales
-- =============================================
-- zhen:12,usersn. 使用者;受限用戶(user的複數)
-- =============================================
create table users
(
uid char(10) primary key not null, --用戶名【PK】
uname char(10) not null, --
ups char(10) not null, --
gender char(2) DEFAULT ('男') null, --性別
age int CHECK (([age] >= 15 and [age] <= 80)) null, --年齡
upower char(10) DEFAULT ('Guest') null, --
sex char(2) null --性別
)
--drop table users
--print '建立圖書館庫成功!'