1. 程式人生 > 資料庫 >資料庫課程設計

資料庫課程設計

資料庫課程設計題目:影城網上售票系統

關係模式:

1.顧客(使用者名稱,使用者姓名,使用者性別,身份證號,手機號)(使用者名稱為主鍵)

2.電影院(影院名稱,地點,電話號碼)

3.影院名稱(影廳編號,影廳型別,可容納人數)

4.電影(電影名稱,導演,主演,型別,圖片)

5.電影票(使用者姓名,影廳編號,放映編號,座位號)

6.放映關係(放映編號,影院名稱,電影名稱,放映日期,放映時間,價格,影廳編號)

1.資料含義:

CustomerID  :使用者名稱

CustomerName:使用者姓名

CustomerSex:性別

CustomerIDNumber:身份證號

CustomerPhone:手機號

CinemaName:影院姓名

CinemaAddress:影院地點

CustomerPhone:影院電話號碼

CinemaID :影廳編號    主鍵

CinemaType :影廳型別

CinemaNumber :可容納人數

FilmID:電影名稱

FilmDirector:導演

FilmStar:主演

FilmType:型別

FilmPicture:圖片

FilmNumber:放映編號

SeatNumber:座位號

 4.1.1 資料庫建立

     寫出建立的SQL語句,文件中顯示SQL語句建立成功的截圖。

資料庫的建立可分為兩種模式:

一種為利用SQL Server Management Studio 建立資料庫,另一種為用SQL語句建立資料庫。

首先,先用第一種方法來建立資料

我是在學校機房裡面整的,就沒把檔案儲存到C盤,路徑可以自己選擇。

第二種方法:

用SQL語句建立資料庫,

 

程式碼如下:

CREATE  DATABASE XSCJ

ON RRIMARY

{

}

 

 

程式碼:1.

CREATE TABLE Customer (
  CustomerID nvarchar(10) NOT NULL PRIMARY KEY,
  CustomerName nvarchar(11) NOT NULL,
  CustomerSex nvarchar(11) NOT NULL,
  CustomerIDNumber nvarchar(11) NOT NULL,

  CustomerPhone nvarchar(11) NOT NULL,
);

2.CREATE TABLE Cinema (
    CinemaName  nvarchar(10) NOT NULL PRIMARY KEY,
    CinemaAddress  nvarchar(11) NOT NULL,
    CustomerPhone nvarchar(11) NOT NULL,
);

3.CREATE TABLE CinemaId (
  CinemaID  nvarchar(10) NOT NULL PRIMARY KEY,
  CinemaType  nvarchar(11) NOT NULL,
  CinemaNumber  nvarchar(11) NOT NULL,
);

4.CREATE TABLE Film(
    FilmID nvarchar(10) PRIMARY KEY,
    FilmDirector nvarchar(10) NOT NULL,
    FilmStar nvarchar(10) NOT NULL,
    FilmType nvarchar(10) NOT NULL,
    FilmPicture nvarchar(10) NOT NULL,
);

 

5.CREATE TABLE FilmTicket (
    CustomerName nvarchar(10) PRIMARY KEY,
    CinemaID nvarchar(10) NOT NULL,
    FilmNumber nvarchar(10) NOT NULL,
    SeatNumber nvarchar(10) NOT NULL,
    
)

6.CREATE TABLE ShowRelationship(
    FilmNumber nvarchar(10) NOT NULL,
    CinemaName nvarchar(10) NOT NULL,
    FilmID nvarchar(10) NOT NULL,
    FilmDate nvarchar(10) NOT NULL,
    FilmTime nvarchar(10) NOT NULL,
    FilmPrice nvarchar(10) NOT NULL,
    CinemaID nvarchar(10) NOT NULL,
)

 

檢視的建立:

1.

CREATE VIEW CustomerView (
    客戶編號,
    客戶姓名,
    客戶性別,
    身份證號,
    手機號
)
AS
SELECT CustomerID, CustomerName, CustomerSex, CustomerIDNumber
, CustomerPhone
FROM Customer

2.

CREATE VIEW CinemaView (
    影院名稱,
    地點,
    電話號碼
)
AS
SELECT CinemaName, CinemaAddress, CustomerPhone
FROM Cinema

3.

CREATE VIEW FilmTicketView (
    使用者姓名,
    影廳編號,
    放映編號,
    座位號
)
AS
SELECT CustomerName, CinemaID , FilmNumber,SeatNumber
FROM FilmTicket

4.

CREATE VIEW ShowRelationshipTicketView (
    放映編號,
    影院名稱,
    電影名稱,
    放映日期,
    放映時間,
    價格,
    影廳編號
)
AS
SELECT FilmNumber,CinemaName,FilmID,FilmDate,FilmTime,FilmPrice,CinemaID 
FROM ShowRelationship

 

主鍵約束的建立:

USE File

GO

ALTER TABLE ShowRelationship

ADD CONSTRAINT PK_FileNumber  PRIMARY KEY(FileNumber)

GO

 

1.刪除Cinema表中的主鍵約束:

DEFAULT約束的建立:(預設值的約束)

1.為客戶表Customer中的性別欄位CustomerSex設定預設值為“男”:

2.然後通過SQL語句先使Customer表中的預設值取消

USE File

GO

ALTER TABLE CinemaId

ADD CONSTRAINT DF_CinemaNumber  DEFAULT 100 FOR CinemaNumber

GO

 

外來鍵約束的建立:

 

 

UNIQUE約束的建立:

USE Film

GO

ALTER TABLE Customer

ADD CONSTRAINT UN_CustomerPhone UNIQUE(CustomerPhone)

GO

 

CHECK約束的建立:

USE Film

GO

ALTER TABLE CinemaId

ADD CONSTRAINT CK_CinemaType CHECK(CinemaType='大' or CinemaType='小')

GO

 

 

索引的建立:

1.使用SQL語言在Customer表中的CustomerID列按升序建立索引IX_Customer_CustomerID。

2.

USE Film
GO
CREATE INDEX IX_Customer_CustomerID ON Customer(CustomerID) 
GO

儲存過程的建立:

1.在Film資料庫中建立名為P_Customer的儲存過程,要求查詢每個顧客的姓名,性別,身份證號,手機號。

SQL語句:

USE Film
GO
CREATE PROCEDURE P_Customer
AS
SELECT Customer.CustomerName,Customer.CustomerSex,Customer.CustomerIDNumber,Customer.CustomerPhone
FROM Customer,FilmTicket 
WHERE Customer.CustomerName = FilmTicket.CustomerName 

2.

建立名稱為P_Customer2的儲存過程.要求輸入某個電影的電影名稱,能夠查詢到該電影的放映名稱

USE Film
GO
CREATE PROCEDURE P_Customer2 @Film_FilmID nvarchar(20)
AS
SELECT ShowRelationship.FilmTime 
FROM  Film,ShowRelationship
WHERE Film.FilmID = ShowRelationship.FilmID 

3.

建立名稱為P_Customer4 的儲存過程.要求輸入某個日期,能得到該日期下,影院的放映電影名稱

USE Film
GO
CREATE PROCEDURE P_Customer4 @FilmDate nvarchar(20)
AS
SELECT ShowRelationship.FilmID  
FROM   ShowRelationship 
WHERE ShowRelationship.FilmDate = @FilmDate

 

觸發器的建立:

1.在資料庫的表ShowRelationshipTicketView上,建立觸發器T1_insert,插入價格滿足取值為30,40,50,60,70的售票記錄

USE Film
GO
CREATE trigger T1_insert
ON ShowRelationship
FOR INSERT
AS
DECLARE @ShowRelationship_FilmPrice smallint
select @ShowRelationship_FilmPrice = ShowRelationship.FilmPrice
from ShowRelationship
if @ShowRelationship_FilmPrice not in(30,40,50,60,70)
    rollback
go

2.建立資料庫的insert觸發器T2_insert,在向Customer表中輸入一條記錄的同時輸入這個顧客的購票資訊到FilmTicket 表

USE Film
GO
CREATE trigger T2_insert
ON Customer
FOR INSERT
AS
DECLARE @Customer_CustomerName char(10)
select @Customer_CustomerName = CustomerName from inserted
insert into FilmTicket(CustomerName,CinemaID) Values(@Customer_CustomerName,'2000000') 
select * 
from Customer
go

3.建立資料庫的DELETE觸發器T3_delete,在刪除一個顧客的顧客資訊的同時刪除這個顧客的購票資訊記錄。

USE Film
GO
CREATE trigger T3_delete
ON Customer
FOR delete
AS
DECLARE @Customer_CustomerName nvarchar(10)
select @Customer_CustomerName = CustomerName from deleted
delete from Customer where CustomerName = @Customer_CustomerName
delete from FilmTicket  where CustomerName = @Customer_CustomerName
select * 
from Customer
go

五:資料庫的操作

1.資料的操縱

1.1表結構的修改:

1.向FilmTicket表中新增Price欄位

alter table FilmTicket 
add Price nvarchar(10)

修改FilmTicket表中的Price欄位,使之非空

alter table FilmTicket 
alter column Price nvarchar(10) not null

2.資料插入:

1.向資料庫的CinemaId 表中插入記錄('01','大','50')

INSERT
INTO CinemaId 
Values('01','大','50')

2.向資料庫的Cinema 表中插入記錄('萬達','萬達廣場','17788887777')

INSERT
INTO Cinema 
Values('萬達','萬達廣場','17788887777')

3.資料更新:

 1.將Film資料庫中影廳編號為‘01’的房間,房間型別改成'小'

USE Film
GO
UPDATE CinemaId
set CinemaType ='小'
where CinemaID ='01'
go

2.將Film資料庫中影院名稱為萬達的影院,電話號碼改成15566664444

USE Film
GO
UPDATE Cinema
set CustomerPhone  ='15566664444'
where CinemaName  ='萬達'
go

3.資料刪除:

1.在Cinema表中,刪除影院名稱為‘萬達’,且聯絡電話為‘15566664444’的記錄

USE Film
GO
delete from Cinema
where CinemaName  ='萬達' and  CustomerPhone  ='15566664444'
go

2.在CinemaId表中,刪除影廳編號為‘01’的記錄

USE Film
GO
delete from CinemaId
where CinemaID   ='01'
go

5.2資料查詢:

5.2.1單表查詢

1.查詢Customer表中性別為男的姓名和手機號

select *

From CinemaId

Where CinemaType='大'

2.

select *

From CinemaId

Where CinemaNumber=30

 

3.

select *

From CinemaId

Where CinemaID=01

5.2.2多表查詢

1.

Select Customer.CustomerName,CustomerPhone,SeatNumber,FilmTicket.Price

From Customer,FilmTicket

Where Customer.CustomerName = FilmTicket.CustomerName and Customer.CustomerName = (

   Select Customer.CustomerName

   From Customer,FilmTicket

   Where Customer.CustomerName = '小李'

)

 

2.

Select Customer.CustomerName,CustomerSex,CustomerPhone,SeatNumber,FilmTicket.Price

From Customer,FilmTicket

Where Customer.CustomerName = FilmTicket.CustomerName and Customer.CustomerName = (

  Select Customer.CustomerName

   From Customer,FilmTicket

   Where Customer.CustomerPhone='12233334444'

)

 

3.

Select Customer.CustomerName,CustomerSex,CustomerPhone,SeatNumber,CinemaID,FilmTicket.Price

From Customer,FilmTicket

Where Customer.CustomerName = FilmTicket.CustomerName and Customer.CustomerName = (

  Select Customer.CustomerName

   From Customer,FilmTicket

   Where FilmTicket.SeatNumber='0722'

)