电影院数据库设计(案例)

时间:2021-10-20 12:24:27
//邱于涵 2017年5月5日13:26:43 QQ:1031893464
use master
go
---创建电影数据库filmDB
--查询是否有filmDB这个数据库
if exists(SELECT * FROM sysdatabases where name='filmDB')
drop database filmDB
CREATE DATABASE filmDB
ON
(
----主数据文件的描述
name='fileDB_data',--逻辑名称
filename='D:\SQLDB\filmDB\fileDB_DATA.mdf',--物理名称
size=10MB,--数据文件初始大小
filegrowth=15% --增长率
)
LOG ON(
---日志文件的描述
name='fileDB_log',
filename='D:\SQLDB\filmDB\fileDB_log.ldf',
size=5mb,
filegrowth=10%
)
--
use filmDB
go
--创建电影信息表
CREATE TABLE filmInfo(
filmID char(16) not null primary key , --电影编号
filmName nvarchar(50) not null, --n unicode 电影名称
typeID char(2) not null, --电影类别编号
advFile nvarchar(255), ---varchar 是可变长度 char 不可变
actor nvarchar(255),
director nvarchar(50),
ticketPrice numeric(6,2) not null --一共六位,有两位是小数,四位是整数,也就是上千
)
--电影类别表
CREATE TABLE filmType(
typeID char(2) primary key,
typeName varchar(20) not null
)
--为电影信息表创建外键
alter table filmInfo
add constraint FK_filminfotypeid
FOREIGN KEY(typeID) references filmType(typeID)
--为filminfo 创建约束
alter table filmInfo
add constraint ck_filmInfo1
check(filmID like 'GH[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][1-5][0-9][0-9][0-9][0-9][0-9]') --GHYYYYMMDDxxxxxx(GH年月日(八位),级别(1位),库存编号(5位))
--广告文件字段添加check约束
alter table filmInfo
add constraint ck_filmInfo_2
CHECK(advFile like '%.jpg' or advFile like '%.gif')
--设置 票价的 default 约束
alter table filmInfo
add constraint ck_filmInfo_3
default(100) for ticketPrice
--设置票价50到300(需求)
alter table filmInfo
add constraint ck_filmInfo_4
CHECK(ticketPrice>=50 and ticketPrice<=300)
--电影类别表 增加check约束
alter table filmType
add constraint ck_filmType3
CHECK(typeID like '[A-Z][A-Z]')
--创建放映信息表
CREATE TABLE playInfo
(
playID int primary key identity(1,1),
filmID char(16) not null,
startTime DATETIME NOT NULL,
endTime DATETIME NOT NULL
)
--为playInfo创建外键
alter table playInfo
add constraint FK_playinfo_1
FOREIGN KEY(filmID) REFERENCES filmInfo(filmID)
--出票信息表
CREATE TABLE ticketInfo
(
seatID varchar(8) not null,
playID int NOT NULL,
finalPrice numeric(6,2) NOT NULL
)
--ticketInfo最终票价约束
alter table ticketInfo
add constraint ck_ticketInfo2
CHECK(finalPrice >=0 and finalPrice <=300)
--默认值约束
alter table ticketInfo
add Constraint ck_ticketInfo3
default(100) for finalPrice
--插入数据 电影类别表
INSERT INTO filmType(typeID,typeName)VALUES('AQ','爱情片')
INSERT INTO filmType(typeID,typeName)VALUES('DH','动画片')
INSERT INTO filmType(typeID,typeName)VALUES('GF','功夫片')
INSERT INTO filmType(typeID,typeName)VALUES('XJ','喜剧片')
INSERT INTO filmType(typeID,typeName)VALUES('ZZ','战争片')
INSERT INTO filmType(typeID,typeName)VALUES('QT','其他')
--电影信息表
INSERT INTO filmInfo (filmID,filmName,typeID,advFile,actor,director,ticketPrice)VALUES('GH20070518300005','唐伯虎点秋香','XJ','qiuxiang.gif','周星驰,巩俐等','李力持',80.00)
INSERT INTO filmInfo (filmID,filmName,typeID,advFile,actor,director,ticketPrice)VALUES('GH20080318300005','猫和老鼠','DH','cat.jpg','','威廉·汉纳及约瑟夫·巴',80.00)
--update filmInfo set ticketPrice=60.00 where filmID='GH20080318300005'
INSERT INTO filmInfo (filmID,filmName,typeID,advFile,actor,director,ticketPrice)VALUES('GH20080618400001','倚天屠龙记','GF','tulong.gif','李连杰,邱淑贞','王晶',198.00)