Assignment Dbi [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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