634 1 578KB
ASSIGNMENT DBI202 – DATABASEDBI202 SYSTEM – OF FILM WEBSITE July 30, 2022
Prepared By Nguyễn Minh Tú (SE161130) Lecture Lê Hồng Kỳ
DBI202 – DATABASE SYSTEM OF FILM WEBSITE
Table of contents I.
Phát biểu bài toán..........................................................................1
II.
Mô tả nghiệp vụ của hệ thống..........................................................1
III.
Mô hình ER của hệ thống.................................................................2
IV.
Mô hình quan hệ (Chuyển từ mô hình ER).........................................3
V.
Đặc tả yêu cầu dữ liệu (từ điển dữ liệu)............................................3
VI.
Danh sách các ràng buộc dữ liệu......................................................6
VII.
Cài đặt vật lý.................................................................................6
VIII. Kết luận......................................................................................20
I.
Phát biểu bài toán Điện ảnh là một loại hình nghệ thuật thu hút được nhiều khán giả nhất ngày nay. Các bộ phim điện ảnh mới được ra mắt trong một thời gian rất ngắn. Chính vì sự ra mắt của nhiều phim mới nên các bộ phim trước đó được giữ lại rạp trong một khoảng thời gian khá ngắn. Một số khán giả không có thời gian để đi xem phim của mình yêu thích trong khi bộ phim đó sắp được thay thế bởi một bộ phim khác. Điều này đã làm cho một phần đông khán giả bỏ lỡ. Ngày nay, với sự tiến bộ của internet thì các dịch vụ giải trí trên không gian mạng cũng trên đà phát triển theo, cụ thể là dịch vụ website xem phim hiện đang rất phổ biến. Vấn đề đặt ra ở đây là đa phần các bộ phim trên các web xem phim hiện nay chiếm đa số là phim lậu, phim không được mua bản quyền từ tác giả nên ta có thể thấy được chất lượng hình ảnh cũng như nội dung không thể bằng phim được cung cấp chính thức bởi nhà sản xuất. Khi xem những bộ phim không bản quyền với chất lượng thấp cũng như nội dung bị cắt xén đi nhiều phần, Các khách hàng cũng mất một phần cảm xúc khi trải nghiệm. Vì thế không ít người đã chi ra một ít kinh phí để được trải nghiệm những bộ phim bản quyền trên website mà họ đã bỏ lỡ khi nó được ra rạp. Với nhu cầu khá là cần thiết này, chúng tôi đã lập một website xem phim bản quyền. Website cần một hệ thống cơ sở dữ liệu để quản lý các bộ phim, xử lý các hóa đơn mua phim từ các khách hàng và cho phép khách hàng xem phim sau khi giao dịch một cách nhanh chóng nhất.
II.
Mô tả nghiệp vụ của hệ thống
Thực thể Customer sẽ tượng trưng cho người đang sử dụng trang web có nhu cầu xem phim. Mỗi Customer bao gồm các thuộc tính: id customer, customer name, birthday (để quản lý các bộ phim trên 18 tuổi), phone, email, account name, password. Mỗi trang web cần phải được duy trì và quản lý một cách liên tục. Thực thể Admin sẽ tượng trưng cho người quản lí trang web và quản lý các Customer. Các thuộc tính của thực thể sẽ bao gồm: id admin, admin name, password, account name, phone, email. Sản phẩm đến từ trang web là các bộ phim bản quyền mà khách hàng có thể mua để xem bằng cách thực hiện giao dịch. Thực thể Films tượng trưng cho một bộ phim mà Customer sẽ lựa chọn. Các thuộc tính: id film, film name, time, year of manufacture, national, mac 18+, rating, cost. Mỗi bộ phim sẽ được sản xuất bởi một hay nhiều nhà sản xuất cùng tham gia. Thực thể Studio sẽ tượng trưng cho một hãng sản xuất phim. Các thuộc tính: id studio, studio name. Để thuận tiện cho việc tìm kiếm theo yêu cầu về sở thích về các thể loại phim của khách hàng. Thực thể Type of film tượng trưng cho một thể loại phim. Các thuộc tính: id type, name of type. Thực thể Cast sẽ tượng trưng cho diễn viên đóng phim. Các thuộc tính: cast name, birth day cast, nationality. Khi khách hàng lựa chọn một hay nhiều bộ phim mình muốn xem thì sẽ thực hiện những giao dịch, thanh toán để có thể xem trực tiếp những bộ phim bản quyền trên web. Thực thể Invoice sẽ tượng trưng cho hóa đơn sau khi mua phim trên trang web. Các thuộc tính: id invoice, id user, user name, startdate, id film, film name, name of type, cost. Đối với người quản lý trang web, học có thể thực hiện các chức năng: - Xóa thông tin khách hàng theo ID. - Cập nhật thông tin phim theo ID. - Thêm phim - Xóa phim Đối với người dùng (khách hàng) khi sử dụng trang web, họ có thể thực hiện các chức năng: - Tìm kiếm một bộ phim theo tên. - Lọc những bộ phim phù hợp theo Năm sản xuất, Studio, Thể loại, Quốc gia, 18+. - Lọc những bộ phim có giá từ thấp đến cao, từ cao đến thấp. - Thanh toán. 1
III.
Mô hình ER của hệ thống
Mô hình ER của dự án quản lý website xem phim bản quyền
2
IV.
Mô hình quan hệ (Chuyển từ mô hình ER) “
Admin(idAdmin, adName, adAcountName, adPassword, adPhone, adEmail) Customer(idCustomer, idAdmin, customerName, accountName, password, birthday, phone, email) Studio(idStudio, studioName) Type_of_films(idType, typeName) Films(idFilm, filmName, idStudio, idType, timeOfFilm, yearOfManufacture, nationality, [mac18+], rating, cost) Invoice(idInvoice, idCustomer, idFilm, idType, startDate, inCost)
V.
Đặc tả yêu cầu dữ liệu (từ điển dữ liệu)
Table of Admin
Name
Description
Data Type
Length
Values
id admin
Mỗi người quản lý có id riêng của họ để phân biệt với các người quản lý khác
char
15
Number ,Text, Space permitted
admin name
Tên của mỗi khách hàng
nvarchar
50
Text, Space permitted
account name
Tên đăng nhập của người quản lý để đăng nhập vào tài khoản cá nhân
char
50
Text, Space permitted
password
Mật khẩu để đăng nhập vào tài khoản cá nhân
char
50
Number ,Text, Space permitted
phone
Số điện thoại cá nhân
char
12
Number
email
Email cá nhân để xác nhận và gửi thông báo
char
50
Number ,Text, Space permitted
3
Table of Customer
Name
id customer
customer name account name
password birthday
phone email id admin
Description
Mỗi khách hàng có id riêng của họ để phân biệt với các khách hàng khác Tên của mỗi khách hàng Tên đăng nhập của mỗi khách hàng để đăng nhập vào tài khoản cá nhân Mật khẩu để đăng nhập vào tài khoản cá nhân Ngày, tháng, năm sinh để quản lý các bộ phim trên 18 tuổi và gửi các phần quà mỗi khi đến sinh nhật của khách hàng thành viên Số điện thoại cá nhân để xác nhận giao dịch Email cá nhân để xác nhận và gửi thông báo giao dịch Mỗi khách hàng phải có riêng cho mình một người quản lý trên web
Data Type
Length
Values
nvarchar char
50 50
Text, Space permitted Number ,Text, Space permitted
char
50
Number ,Text, Space permitted Local date; dd = 01-31; mm = 01-12; yyyy = 2000-2022
char
12
Number
char
50
Number ,Text, Space permitted
char
15
Number ,Text, Space permitted
Data Type
Length
Values
nvarchar
100
Number ,Text, Space permitted
Data Type
Length
Values
nvarchar
50
Text, Space permitted
char
15
date
Number ,Text, Space permitted
Table of Studio
Name
id studio
studio name
Description
Mỗi hãng sản xuất phim có id riêng của họ để phân biệt với hãng sản xuất khác Tên của mỗi hãng sản xuất
char
50
Number ,Text, Space permitted
Table of Type of film
Name id type
name of type
Description
Mỗi phim có một hay nhiều thể loại, chúng cũng có id riêng để phân biệt với những thể loại phim khác Tên của mỗi thể loại phim
char
15
Number ,Text, Space permitted
4
Table of Films
Name id film
film name id studio id type time year of manufacture national mac 18+ rating cost
Description
Data Type
Length
Values
nvarchar
100
Mã của hãng sản xuất được lấy từ bảng Studio Mã của thể loại phim được lấy từ bảng Type of Films Thời lượng của mỗi bộ phim Năm sản xuất
char
15
char
15
Number ,Text, Space permitted Number ,Text, Space permitted Number ,Text, Space permitted
char
50
Number
char
50
Number
Quốc gia của bộ phim Cho biết bộ phim có tình tiết bạo lực, nhạy cảm,… Mức độ hài lòng của khách hàng khi xem phim Giá của một bộ phim khi khách hàng lựa chọn
char char
50 50
Text, Space permitted Number
int
1
Number
Description
Data Type
Length
Values
var
50
Number ,Text, Space permitted Local date; dd = 01-31; mm = 01-12; yyyy = 2000-2022 Number ,Text, Space permitted Number ,Text, Space permitted
Mỗi bộ phim có id riêng của họ để phân biệt với các phim khác Tên của mỗi bộ phim
char
50
smallmoney
Number ,Text, Space permitted
Number
Table of Invoice
Name
id invoice id customer startdate id film id type cost
Mỗi hóa đơn có id riêng để phân biệt với những hóa đơn khác Mã khách hàng được lấy từ bảng Customer Ngày tạo hóa đơn Mã phim được lấy từ bảng Films id thể loại phim được lấy từ bảng Type of Films Giá của một bộ phim khi khách hàng lựa chọn
var
15
date var
50
nvarchar
15
smallmoney
Number ,Text, Space permitted
Number
5
VI.
Danh sách các ràng buộc dữ liệu
Table
Primary Key
Admin Customer
VII.
id admin id customer
Studio Type of films Films
id studio id type id film
Invoice
id invoice
Foreign Key id admin
id studio id type id customer id film id type
Check Validate NOT NULL, AD[6] NOT NULL, CU[6] NOT NULL, AD[6] NOT NULL, ST[3] NOT NULL, TP[3] NOT NULL, MV[3] NOT NULL, ST[3] NOT NULL, TP[3] NOT NULL, 1[6] NOT NULL, CU[6] NOT NULL, MV[3] NOT NULL, TP[3]
Cài đặt vật lý
Database Diagrams của dự án quản lý website xem phim bản quyền 6
1. Tạo table cùng các ràng buộc, insert dữ liệu. Tạo bảng Admin CREATE TABLE tbl_Admin( [idAdmin] char (50) PRIMARY KEY NOT NULL CHECK([idAdmin] like 'AD[0-9][0-9][09][0-9][0-9][0-9]'), [adName] nvarchar (50) NOT NULL, [adAcountName] char (50) NOT NULL, [adPassword] char (50) NOT NULL, [adPhone] char (12) NOT NULL, [adEmail] char (50), )
Thêm dữ liệu vào bảng Admin INSERT INTO tbl_Admin (idAdmin, adName, adAcountName, adPassword, adPhone, adEmail) VALUES ('AD000001', N'Trần Hùng Trọng', 'adtrong', '123456', '095362563252', '[email protected]'), ('AD000002', N'Lê Thu Anh', 'adanh', '123456', '012345525235', '[email protected]'), ('AD000003', N'Nguyễn Minh Hiếu', 'adhieu', '123456', '01234568531', '[email protected]'), ('AD000004', N'Trần Minh Mạnh', 'admanh', '123456', '02536253689', '[email protected]'), ('AD000005', N'Phạm Thái An', 'adan01', '123456', '012636523252', '[email protected]');
Kết quả
Tạo bảng Customer CREATE TABLE tbl_Customer( [idCustomer] char (50) PRIMARY KEY NOT NULL CHECK([idCustomer] like 'CU[0-9][09][0-9][0-9][0-9][0-9]'), [customerName] nvarchar (50) NOT NULL, [accountName] char (50) NOT NULL, [password] char (50) NOT NULL, [birthday] date NOT NULL check ([birthday] < getDate()), [phone] char (12) NOT NULL, [email] char (50), [idAdmin] char (50) NOT NULL, FOREIGN KEY (idAdmin) REFERENCES tbl_Admin (idAdmin), )
7
Thêm dữ liệu vào bảng Customer INSERT INTO tbl_Customer (idCustomer, customerName, accountName, password, birthday, phone, email, idAdmin) VALUES ('CU000001', N'Nguyễn Minh Hà', 'hano01', '123456', '1999-10-12', '015236523252', '[email protected]', 'AD000001'), ('CU000002', N'Lê Hoài An', 'ano01', '123456', '2000-12-07', '025636525235', '[email protected]', 'AD000001'), ('CU000003', N'Nguyễn Tuấn Trần', 'tranno01', '123456', '1998-02-04', '02536598521', '[email protected]', 'AD000001'), ('CU000004', N'Trần Minh Anh', 'anhno01', '123456', '1999-12-03', '01525333252', '[email protected]', 'AD000003'), ('CU000005', N'Phạm Minh Hạnh', 'hanhno01', '123456', '1990-02-27' ,'014446523252', '[email protected]', 'AD000002'), ('CU000006', N'Nguyễn Tuấn Đạt', 'datno01', '123456', '1999-12-10', '02346523252', '[email protected]', 'AD000002'), ('CU000007', N'Phan lê Ánh Minh', 'minhno01', '123456', '1998-10-12', '015265326252', '[email protected]', 'AD000004'), ('CU000008', N'Mai Anh Phát', 'phatno01', '123456', '1989-10-03', '013265523252', '[email protected]', 'AD000003'), ('CU000009', N'Nguyễn Văn Tài', 'taino01', '123456', '1997-05-12', '015236458952', '[email protected]', 'AD000005'), ('CU000010', N'Mai Tài Phến', 'phenno01', '123456', '2003-11-21', '02563254892', '[email protected]', 'AD000004');
Kết quả
Tạo bảng Studio CREATE TABLE tbl_Studio( [idStudio] char (50) PRIMARY KEY NOT NULL CHECK([idStudio] like 'ST[0-9][0-9] [0-9]'), [studioName] nvarchar (100) NOT NULL )
Thêm dữ liệu vào bảng Studio INSERT INTO tbl_Studio (idStudio, studioName) VALUES ('ST001', N'ADC Media'), ('ST002', N'Phuong Nam Media'), ('ST003', N'SS Films'), ('ST004', N'MVL Studio'), ('ST005', N'NATRA Media'), ('ST006', N'KAKAROT Films'),
8
('ST007', ('ST008', ('ST009', ('ST010',
N'Kunfou Studio'), N'Santasa Media'), N'Hai Au Studio'), N'SCB Studio');
Kết quả
Tạo bảng TypeOfFilm CREATE TABLE tbl_Type_of_film( [idType] char (50) PRIMARY KEY NOT NULL CHECK([idType] like 'TP[0-9][0-9][09]'), [typeName] nvarchar (50) NOT NULL )
Thêm dữ liệu vào bảng TypeOfFilm INSERT INTO tbl_Type_of_film(idType, typeName) VALUES ('TP001', N'Hành động'), ('TP002', N'Phiêu lưu'), ('TP003', N'Kinh dị'), ('TP004', N'Tình cảm'), ('TP005', N'Lãng mạng'), ('TP006', N'Vui nhộn'), ('TP007', N'Kịch tính'), ('TP008', N'Giả tưởng'), ('TP009', N'Khoa học'), ('TP010', N'Tư liệu');
Kết quả
9
Tạo bảng Films CREATE TABLE tbl_Films( [idFilm] char (50) PRIMARY KEY NOT NULL CHECK([idFilm] like 'MV[0-9][0-9][09]'), [filmName] nvarchar (100) NOT NULL, [idStudio] char (50) NOT NULL, FOREIGN KEY (idStudio) REFERENCES tbl_Studio (idStudio), [idType] char (50) NOT NULL, FOREIGN KEY (idType) REFERENCES tbl_Type_of_film (idType), [timeOfFilm] char (50) , [yearOfManufacture] char (50) NOT NULL, [nationality] nvarchar (50) NOT NULL, [mac18+] bit NOT NULL check([mac18+] like 1 or [mac18+] like 0), [rating] int CHECK([rating] like '[0-5]'), [cost] smallmoney NOT NULL )
Thêm dữ liệu vào bảng Films INSERT INTO tbl_Films (idFilm, filmName, idStudio, idType, timeOfFilm, yearOfManufacture, nationality, [mac18+], rating, cost) VALUES ('MV001', N'Công Viên Kỷ Jura', 'ST001', 'TP002', '2:15:00', '2020', N'Mỹ', 0, 4, 120000), ('MV002', N'Doraemon phiêu lưu kí', 'ST003', 'TP002', '1:30:00', '2020', N'Nhật Bản', 0, 4, 100000), ('MV003', N'Đất rừng Phương Nam', 'ST002', 'TP010', '2:00:00', '2007', N'Việt Nam', 0, 3, 100000), ('MV004', N'Nhát chém katana', 'ST003', 'TP001', '2:30:00', '2021', N'Mỹ', 1, 5, 120000), ('MV005', N'50 sắc thái', 'ST004', 'TP005', '2:15:00', '2018', N'Mỹ', 1, 4, 120000), ('MV006', N'John Weeken', 'ST006', 'TP001', '2:30:00', '2019', N'Mỹ', 1, 5, 120000), ('MV007', N'Alone Star', 'ST009', 'TP006', '1:30:00', '2020', N'Anh', 0, 2, 100000), ('MV008', N'Trăng rơi', 'ST010', 'TP008', '2:45:00', '2020', N'Pháp', 0, 4, 120000), ('MV009', N'Hành tinh lạ', 'ST007', 'TP009', '2:30:00', '2020', N'Nga', 0, 5, 120000);
Kết quả
10
Tạo bảng Invoice CREATE TABLE tbl_Invoice( [idInvoice] int IDENTITY(1000000,1) PRIMARY KEY NOT NULL , [idCustomer] char (50) NOT NULL, FOREIGN KEY (idCustomer) REFERENCES tbl_Customer (idCustomer), [idFilm] char (50) NOT NULL, FOREIGN KEY (idFilm) REFERENCES tbl_Films (idFilm), [idType] char (50) NOT NULL, FOREIGN KEY (idType) REFERENCES tbl_Type_of_film (idType), [startDate] date NOT NULL, [inCost] smallmoney NOT NULL )
Thêm dữ liệu vào bảng invoice INSERT INTO tbl_Invoice (idCustomer, idFilm, idType, startDate, inCost) VALUES ('CU000003', 'MV002', 'TP002', '2022-06-07', 100000.00), ('CU000005', 'MV001', 'TP002', '2022-06-17', 120000.00), ('CU000009', 'MV004', 'TP001', '2022-06-27', 120000.00), ('CU000001', 'MV002', 'TP002', '2022-06-27', 100000.00), ('CU000004', 'MV009', 'TP009', '2022-07-01', 120000.00), ('CU000010', 'MV008', 'TP008', '2022-07-07', 120000.00), ('CU000007', 'MV005', 'TP005', '2022-07-07', 120000.00), ('CU000002', 'MV003', 'TP010', '2022-07-12', 100000.00), ('CU000003', 'MV007', 'TP006', '2022-07-13', 100000.00), ('CU000008', 'MV002', 'TP002', '2022-06-07', 120000.00);
Kết quả
11
2. Các thủ tục và hàm để giải quyết nghiệp vụ A. Chức năng từ Admin Chức năng xóa khách hàng theo ID --------PROCEDURE_DELETE_CUSTOMER----------IF (OBJECT_ID('proc_del_customer') is not NULL) DROP PROC proc_del_customer GO CREATE PROC proc_del_customer( @idCus char(50) ) AS DELETE FROM tbl_Customer WHERE @idCus = tbl_Customer.idCustomer
--Test EXEC proc_del_customer 'CU000006'
Kết quả
12
Chức năng thêm một bộ phim vào danh sách --------PROCEDURE_INSERT_FILM----------IF (OBJECT_ID('proc_insert_film') is not NULL) DROP PROC proc_insert_film GO CREATE PROC proc_insert_film( @idFilm char(50), @filmName nvarchar(100), @idStudio char(50), @idType char(50), @timeOfFilm char(50), @yearOfManufacture char(50), @nationality nvarchar(50), @mac18 bit, @rating int, @cost smallmoney) AS INSERT INTO tbl_Films(idFilm, filmName, idStudio, idType, timeOfFilm, yearOfManufacture, nationality, [mac18+], rating, cost) VALUES (@idFilm, @filmName, @idStudio, @idType, @timeOfFilm, @yearOfManufacture, @nationality, @mac18, @rating, @cost) --Test EXEC dbo.proc_insert_film'MV010', N'Ma cây', 'ST007', 'TP003', '2:50:00', '2018', N'Anh', 0, 4, 100000;
Kết quả
Chức năng xóa một bộ phim theo ID --------PROCEDURE_DELETE_FILM----------IF (OBJECT_ID('proc_del_film') is not NULL) DROP PROC proc_del_film GO CREATE PROC proc_del_film( @idFilm char(50) ) AS DELETE FROM tbl_Films WHERE @idFilm = tbl_Films.idFilm
13
--Test EXEC proc_del_film 'MV010'
Kết quả
Chức năng cập nhật một bộ phim theo ID --------PROCEDURE_UPDATE_FILM----------IF (OBJECT_ID('proc_update_film') is not NULL) DROP PROC proc_update_film GO CREATE PROC proc_update_film( @idFilm char(50), @filmName nvarchar(100), @idStudio char(50), @idType char(50), @timeOfFilm char(50), @yearOfManufacture char(50), @nationality nvarchar(50), @mac18 bit, @rating int, @cost smallmoney ) AS UPDATE tbl_Films SET filmName = @filmName, idStudio = @idStudio, idType = @idType, timeOfFilm = @timeOfFilm, yearOfManufacture = @yearOfManufacture, nationality = @nationality, [mac18+] = @mac18, rating = @rating, cost = @cost WHERE idFilm = @idFilm
14
--Test EXEC proc_update_film 'MV010', N'Tình cờ', 'ST001', 'TP002', '2:10:00', '2020', N'Trung Quốc',0, 3, 110000
Kết quả
B. Chức năng cho khách hàng sử dụng Chức năng hiển thị chi tiết hóa đơn --------FUNCTION_DISPLAY_INVOICE_Detail----------IF (OBJECT_ID('fn_get_invoice') is not NULL) DROP FUNCTION fn_get_invoice GO CREATE FUNCTION fn_get_invoice() RETURNS table RETURN ( SELECT inv.idInvoice, inv.idCustomer, cus.customerName, f.filmName, tp.typeName, inv.startDate, DATEADD(mm, 1, inv.startDate) as 'endDate' ,f.cost FROM tbl_Invoice inv INNER JOIN tbl_Customer cus ON cus.idCustomer = inv.idCustomer INNER JOIN tbl_Films f ON f.idFilm = inv.idFilm INNER JOIN tbl_Type_of_film tp ON tp.idType = inv.idType GROUP BY inv.idInvoice, inv.idCustomer, cus.customerName, f.filmName, tp.typeName, inv.startDate, f.cost ) --Test SELECT * from fn_get_invoice() ORDER BY fn_get_invoice.startDate desc
15
Kết quả
Chức năng hiển thị kết quả tìm kiếm một bộ phim theo tên --------FUNCTION_FIND_FILMS_BY_NAME----------IF (OBJECT_ID('fn_find_by_name') is not NULL) DROP FUNCTION fn_find_by_name GO CREATE FUNCTION fn_find_by_name(@name nvarchar(50)) RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE f.filmName = @name GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_find_by_name(N'Công Viên Kỷ Jura')
Kết quả
Chức năng hiển thị kết quả lọc một bộ phim theo thể loại --------FUNCTION_FIND_FILMS_BY_TYPE----------IF (OBJECT_ID('fn_find_by_type') is not NULL) DROP FUNCTION fn_find_by_type GO CREATE FUNCTION fn_find_by_type(@type nvarchar(50)) RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE t.typeName = @type
16
GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_find_by_type(N'Hành động') ORDER BY fn_find_by_type.rating desc
Kết quả
Chức năng hiển thị kết quả lọc một bộ phim theo năm sản xuất --------FUNCTION_FIND_FILMS_BY_YearOfManufacture----------IF (OBJECT_ID('fn_find_by_year') is not NULL) DROP FUNCTION fn_find_by_year GO CREATE FUNCTION fn_find_by_year(@year char(50)) RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE f.yearOfManufacture = @year GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_find_by_year(N'2020') ORDER BY fn_find_by_year.rating desc
Kết quả
Chức năng hiển thị kết quả lọc một bộ phim theo quốc gia --------FUNCTION_FIND_FILMS_BY_National----------IF (OBJECT_ID('fn_find_by_Nation') is not NULL) DROP FUNCTION fn_find_by_Nation GO CREATE FUNCTION fn_find_by_Nation(@nation nvarchar(50)) RETURNS table RETURN (
17
SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE f.nationality = @nation GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * FROM fn_find_by_Nation(N'Mỹ') ORDER BY fn_find_by_Nation.rating desc
Kết quả
Chức năng hiển thị kết quả lọc một bộ phim theo nhãn 18+ --------FUNCTION_FIND_FILMS_BY_Mac18+----------IF (OBJECT_ID('fn_find_by_Mac18') is not NULL) DROP FUNCTION fn_find_by_Mac18 GO CREATE FUNCTION fn_find_by_Mac18(@mac bit) RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE f.[mac18+] = @mac GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_find_by_Mac18(0) ORDER BY fn_find_by_Mac18.rating desc
Kết quả
18
Chức năng hiển thị kết quả lọc một bộ phim theo giá tiền --------FUNCTION_FIND_FILMS_BY_Cost----------IF (OBJECT_ID('fn_find_by_cost') is not NULL) DROP FUNCTION fn_find_by_cost GO CREATE FUNCTION fn_find_by_cost(@cost smallmoney) RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio WHERE f.cost = @cost GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_find_by_cost(120000) ORDER BY fn_find_by_cost.rating desc
Kết quả
Chức năng hiển thị kết quả lọc phim theo giá tiền giảm dần --------FUNCTION_Descending_By_Cost----------IF (OBJECT_ID('fn_desc_by_cost') is not NULL) DROP FUNCTION fn_desc_by_cost GO CREATE FUNCTION fn_desc_by_cost() RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_desc_by_cost() ORDER BY fn_desc_by_cost.cost desc
19
Kết quả
Chức năng hiển thị kết quả lọc phim theo giá tiền tăng dần --------FUNCTION_Ascending_By_Cost----------IF (OBJECT_ID('fn_asc_by_cost') is not NULL) DROP FUNCTION fn_asc_by_cost GO CREATE FUNCTION fn_asc_by_cost() RETURNS table RETURN ( SELECT f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost FROM tbl_Films f INNER JOIN tbl_Type_of_film t ON t.idType = f.idType INNER JOIN tbl_Studio st ON st.idStudio = f.idStudio GROUP BY f.idFilm, f.filmName, t.typeName , st.studioName, f.nationality, f.timeOfFilm, f.yearOfManufacture,f.[mac18+], f.rating, f.cost ) --Test SELECT * from fn_asc_by_cost() ORDER BY fn_asc_by_cost.cost asc
Kết quả
VIII.
Kết luận Với dự án này, chúng tôi đã tạo ra một hệ thống quản lý website xem phim bản quyền với các chức năng cơ bản nhưng tiện dụng cho người dùng, giúp cho nhu cầu giải trí của các khách hàng trở nên thuận tiện hơn. Với những bộ phim bản quyền, khách hàng có thể chi một số tiền rất ít để tận hưởng những phút giây thư giãn bên những người thân yêu mà không cần lo lắng về chất lượng hình ảnh, nội dung bị cắt ghép, không bị ảnh hưởng bởi quảng cáo như những trang web xem phim lậu miễn phí trên mạng. Không chỉ được xem 1 lần, khách hàng có đến 30 ngày để lưu trữ những bộ phim mình đã mua và có thể xem đi xem lại hoặc chia sẻ những bộ phim đó cho người thân và bạn bè. 20