Tải bản đầy đủ (.pdf) (30 trang)

Bài tập lớn hệ cơ sở dữ liệu – đề 1

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (146.6 KB, 30 trang )

TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN HỆ CƠ SỞ DỮ LIỆU – ĐỀ 1

Người hướng dẫn: Cô Trần Thị Bích Vân
Người thực hiện: Giang Vinh Kiệt – 51800420
Khố: 22

THÀNH PHỐ HỒ CHÍ MINH, 2020-2021

1


TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN HỆ CƠ SỞ DỮ LIỆU – ĐỀ 1

Người hướng dẫn: Cô Trần Thị Bích Vân
Người thực hiện: Giang Vinh Kiệt – 51800420
Khố: 22

THÀNH PHỐ HỒ CHÍ MINH, 2020-2021

2


PHẦN 1: TẠO CSDL TRÊN SQL SERVER:


I.
Tạo bảng dữ liệu với các thuộc tính và ràng buộc
1. Người (ID, CMND, tên, giới tính, ngày sinh, nơi sinh)
SET DATEFORMAT DMY;
CREATE TABLE NGUOI(
ID VARCHAR(20),
CMND VARCHAR(10),
TEN NVARCHAR(50),
GIOITINH CHAR(1), --0 Là Nam, 1 là nữ-NGAYSINH DATE,
NOISINH NVARCHAR(50),
PRIMARY KEY(ID),
CONSTRAINT CHECK_ID CHECK ((CAST(LEFT(ID,2) AS
VARCHAR)) LIKE '%TS' OR (CAST(LEFT(ID,2) AS VARCHAR))
LIKE '%NS'),
CONSTRAINT GIATRIGIOITINH CHECK (GIOITINH IN
('0' , '1')),
CONSTRAINT CMND_KHONGTRUNG UNIQUE(CMND)
)
2. Thí sinh (mã thí sinh, địa chỉ, điện thoại, giới thiệu)
CREATE TABLE THISINH(
MATHISINH VARCHAR(20),
DIACHI NVARCHAR(50),
DIENTHOAI CHAR(10),
GIOITHIEU NVARCHAR(4000),
PRIMARY KEY(MATHISINH),
CONSTRAINT CHECK_MATHISINH CHECK
((CAST(LEFT(MATHISINH,2) AS VARCHAR)) LIKE '%TS'),
CONSTRAINT FK_THISINH_MATHISINH FOREIGN
KEY(MATHISINH) REFERENCES NGUOI(ID)
)

3. Nghệ sỹ (mã nghệ sỹ, nghệ danh, thành tích, MCFlag, CSFlag,
NSFlag)
CREATE TABLE NGHESI(
MANGHESI VARCHAR(20),
NGHEDANH NVARCHAR(50),
THANHTICH NVARCHAR(4000),
MCFLAG CHAR(1),

3


4.

5.

6.

7.

NSFLAG CHAR(1),
CSFLAG CHAR(1),
PRIMARY KEY(MANGHESI),
CONSTRAINT CHECK_MANGHESI CHECK
((CAST(LEFT(MANGHESI,2) AS VARCHAR)) LIKE '%NS'),
CONSTRAINT CHECK_MC CHECK(MCFLAG IN( '0' , '1')),
CONSTRAINT CHECK_CS CHECK(CSFLAG IN( '0' , '1')),
CONSTRAINT CHECK_NS CHECK(NSFLAG IN( '0' , '1')),
CONSTRAINT FK_NGHESI_MANGHESI FOREIGN
KEY(MANGHESI) REFERENCES NGUOI(ID)
)

Chương trình MC dẫn (mã MC, chương trình đã dẫn)
CREATE TABLE CHUONGTRINHMC(
MAMC VARCHAR(20),
CHUONGTRINHDADAN NVARCHAR(50),
PRIMARY KEY(MAMC,CHUONGTRINHDADAN),
CONSTRAINT FK_CHUONGTRINHMC_MAMC FOREIGN
KEY(MAMC) REFERENCES NGHESI(MANGHESI)
)
Album ca sỹ (mã ca sỹ, album)
CREATE TABLE ALBUMCASI(
MACASI VARCHAR(20),
ALBUM NVARCHAR(50),
PRIMARY KEY(MACASI,ALBUM),
CONSTRAINT FK_ALBUMCASI_MACASI FOREIGN
KEY(MACASI) REFERENCES NGHESI(MANGHESI)
)
Bài hát (mã bài hát, tựa bài hát)
CREATE TABLE BAIHAT(
MABAIHAT VARCHAR(20),
TUABAIHAT NVARCHAR(50) NOT NULL,
CONSTRAINT CHECK_MABAIHAT CHECK
((CAST(LEFT(MABAIHAT,2) AS VARCHAR)) LIKE '%BH'),
PRIMARY KEY(MABAIHAT)
)
Thể loại (mã thể loại, tên thể loại)
CREATE TABLE THELOAI(
MATHELOAI VARCHAR(20),
TENTHELOAI NVARCHAR(50) NOT NULL,

4



CONSTRAINT KHONGTRUNG_TENTHELOAI
UNIQUE(TENTHELOAI),
CONSTRAINT CHECK_MATHELOAI
CHECK((CAST(LEFT(MATHELOAI,2)AS VARCHAR)) LIKE
'%TL'),
PRIMARY KEY(MATHELOAI)
)
8. Bài hát thuộc thể loại (mã bài hát, mã thể loại)
CREATE TABLE BAIHATTHUOCTHELOAI(
MABAIHAT VARCHAR(20),
MATHELOAI VARCHAR(20),
PRIMARY KEY(MABAIHAT,MATHELOAI)
)
ALTER TABLE BAIHATTHUOCTHELOAI
ADD CONSTRAINT FK_MABAIHAT_BAIHATTHUOCTHELOAI
FOREIGN KEY(MABAIHAT) REFERENCES
BAIHAT(MABAIHAT)
ALTER TABLE BAIHATTHUOCTHELOAI
ADD CONSTRAINT
FK_MATHELOAI_BAIHATTHUOCTHELOAI FOREIGN
KEY(MATHELOAI) REFERENCES THELOAI(MATHELOAI)
9. Nhạc sỹ sáng tác (Mã nhạc sỹ, mã bài hát, thông tin sáng tác)
CREATE TABLE NHACSISANGTAC(
MANHACSI VARCHAR(20),
MABAIHAT VARCHAR(20),
THONGTINSANGTAC CHAR(1),
PRIMARY KEY(MANHACSI,MABAIHAT),
CONSTRAINT FK_MANHACSI_NHACSISANGTAC

FOREIGN KEY(MANHACSI) REFERENCES
NGHESI(MANGHESI),
CONSTRAINT FK_MABAIHAT_NHACSISANGTAC
FOREIGN KEY(MABAIHAT) REFERENCES
BAIHAT(MABAIHAT),
CONSTRAINT CHECK_THONGTINSANGTAC
CHECK(THONGTINSANGTAC IN ('1','2','3'))
)
10. Tỉnh thành (mã tỉnh thành, tên tỉnh thành)
CREATE TABLE TINHTHANH(
MATINHTHANH VARCHAR(20),
TENTINHTHANH NVARCHAR(50) NOT NULL,

5


PRIMARY KEY(MATINHTHANH),
CONSTRAINT KHONGTRUNG_TENTINHTHANH
UNIQUE(TENTINHTHANH)
)
ALTER TABLE TINHTHANH
ADD CONSTRAINT CHECK_MATINHTHANH
CHECK(CAST(LEFT(MATINHTHANH,2) AS VARCHAR) LIKE
'%TT')
11. Nhà sản xuất (mã nhà sản xuất, tên nhà sản xuất)
CREATE TABLE NHASX(
MANHASX VARCHAR(20),
TENNHASX NVARCHAR(50),
PRIMARY KEY(MANHASX),
CONSTRAINT CHECK_MANHASX

CHECK(CAST(LEFT(MANHASX,3)AS VARCHAR) LIKE
'%NSX')
)
12. Kênh truyền hình (mã kênh, tên kênh)
CREATE TABLE KENHTRUYENHINH(
MAKENH VARCHAR(20),
TENKENH NVARCHAR(50) NOT NULL,
PRIMARY KEY(MAKENH),
CONSTRAINT CHECK_MAKENH
CHECK(CAST(LEFT(MAKENH,2) AS VARCHAR) LIKE '%TH')
)
13. Mùa thi (mã mùa thi, ngày tháng năm bắt đầu, ngày tháng năm
kết thúc, giải thưởng, địa điểm vòng nhà hát, địa điểm vòng bán
kết, địa điểm vòng gala, mã giám đốc âm nhạc, mã giám khảo 1,
mã giám khảo 2, mã giám khảo 3, mã MC)
CREATE FUNCTION AUTO_MT()
RETURNS VARCHAR(5)
AS
BEGIN
DECLARE @MT VARCHAR(5)
IF (SELECT COUNT(MAMUATHI) FROM MUATHI) = 0
SET @MT = '0'
ELSE
SELECT @MT = MAX(RIGHT(MAMUATHI,3))
FROM MUATHI
SELECT @MT = CASE

6



WHEN @MT >= 0 AND @MT < 9 THEN 'MT00'
+ CONVERT(CHAR,CONVERT(INT,@MT) + 1)
WHEN @MT >= 9 THEN 'MT0' +
CONVERT(CHAR,CONVERT(INT,@MT) + 1)
WHEN @MT >= 100 THEN 'MT' +
CONVERT(CHAR,CONVERT(INT,@MT) + 1)
END
RETURN @MT
END
GO
SET DATEFORMAT DMY
CREATE TABLE MUATHI(
MAMUATHI VARCHAR(20) NOT NULL CONSTRAINT
MT DEFAULT [dbo].AUTO_MT(),
NGAYTHANGNAMBD DATE,
NGAYTHANGNAMKT DATE,
CONSTRAINT CK_MUATHI
CHECK((MONTH(NGAYTHANGNAMBD)NGNAMKT)) OR
(DAY(NGAYTHANGNAMBD)GIAITHUONG NVARCHAR(4000),
DIADIEMVONGNHAHAT NVARCHAR(500),
DIADIEMVONGBANKET NVARCHAR(500),
DIADIEMVONGGALA NVARCHAR(500),
MAGIAMDOCAMNHAC VARCHAR(20),
MAGIAMKHAO1 VARCHAR(20),
MAGIAMKHAO2 VARCHAR(20),
MAGIAMKHAO3 VARCHAR(20),
MAMC VARCHAR(20),
PRIMARY KEY (MAMUATHI)

)
ALTER TABLE MUATHI
ADD CONSTRAINT FK_MUATHI_MAMC FOREIGN
KEY(MAMC) REFERENCES NGHESI(MANGHESI)
14. Giữ bản quyền mùa thi (mã mùa thi, mã nhà sản xuất)
CREATE TABLE GIUBANQUYENMUATHI(
MAMUATHI VARCHAR(20),
MANHASX VARCHAR(20),
PRIMARY KEY(MAMUATHI,MANHASX),

7


CONSTRAINT
FK_MAMUATHI_GIUBANQUYENMUATHI FOREIGN
KEY(MAMUATHI) REFERENCES MUATHI(MAMUATHI),
CONSTRAINT FK_MANHASX_GIUBANQUYENMUATHI
FOREIGN KEY(MANHASX) REFERENCES
NHASX(MANHASX)
)
15. Phát sóng(mã mùa thi, mã kênh, thơng tin phát sóng)
CREATE TABLE PHATSONG(
MAMUATHI VARCHAR(20),
MAKENH VARCHAR(20),
THONGTINPHATSONG NVARCHAR(50),
PRIMARY KEY(MAMUATHI,MAKENH),
CONSTRAINT FK_MAMUATHI_PHATSONG FOREIGN
KEY(MAMUATHI) REFERENCES MUATHI(MAMUATHI),
CONSTRAINT FK_MAKENH_PHATSONG FOREIGN
KEY(MAKENH) REFERENCES

KENHTRUYENHINH(MAKENH),
CONSTRAINT CHECK_THONGTINPHATSONG
CHECK(THONGTINPHATSONG IN ('1','2','3'))
)
16. Vòng thi (STT vòng thi, mã mùa thi, tên vòng thi, thời gian bắt
đầu, thời gian kết thúc, loại vịng thi)
--HÀM STT VỊNG THI-CREATE PROC STTVT @MAMUATHI
VARCHAR(20),@TENVONGTHI
NVARCHAR(50),@THOIGIANBATDAU DATETIME,
@THOIGIANKETTHUC DATETIME, @LOAIVONGTHI
CHAR(1)
AS
DECLARE @STTVONGTHI INT
IF(SELECT COUNT(STTVONGTHI) FROM VONGTHI WHERE
MAMUATHI = @MAMUATHI) = 0
BEGIN
SET @STTVONGTHI = '000'
END
ELSE
BEGIN

8


SET @STTVONGTHI = (SELECT TOP 1
STTVONGTHI FROM VONGTHI WHERE MAMUATHI =
@MAMUATHI ORDER BY STTVONGTHI DESC)
END
DECLARE @STT INT
SET @STT = CAST(RIGHT(@STTVONGTHI,3) AS INT ) + 1

IF @STT < 10
BEGIN
SET @STTVONGTHI = CAST(@STT AS CHAR(1))
END
IF @STT < 100
BEGIN
SET @STTVONGTHI = CAST(@STT AS CHAR(2))
END
ELSE
BEGIN
SET @STTVONGTHI = CAST(@STT AS CHAR(3))
END
INSERT INTO VONGTHI
VALUES(@STTVONGTHI,@MAMUATHI,@TENVONGTHI,@T
HOIGIANBATDAU,@THOIGIANKETTHUC,@LOAIVONGTHI)
GO
--Bảng 16-CREATE TABLE VONGTHI(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
TENVONGTHI NVARCHAR(50),
THOIGIANBATDAU DATETIME,
THOIGIANKETTHUC DATETIME,
LOAIVONGTHI CHAR(1),
PRIMARY KEY(STTVONGTHI,MAMUATHI),
CONSTRAINT FK_MAMUATHI_VONGTHI FOREIGN
KEY(MAMUATHI) REFERENCES MUATHI(MAMUATHI),
CONSTRAINT CHECK_TIMESTART_TIMEEND
CHECK(THOIGIANBATDAU < THOIGIANKETTHUC),
CONSTRAINT CHECK_LOAIVONGTHI
CHECK(LOAIVONGTHI IN ('1','2','3','4'))

)
17. Thí sinh tham gia vịng thi (STT vịng thi, mã mùa thi, mã thí
sinh, kết quả)

9


CREATE TABLE THISINHTHAMGIAVONGTHI(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
KETQUA CHAR(1),
PRIMARY
KEY(STTVONGTHI,MAMUATHI,MATHISINH),
CONSTRAINT
FK_STTVONGTHI_THISINHTHAMGIAVONGTHI FOREIGN
KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGTHI(STTVONGTHI,MAMUATHI),
CONSTRAINT
FK_MATHISINH_THISINHTHAMGIAVONGTHI FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH),
CONSTRAINT CHECK_KETQUA CHECK(KETQUA IN ('1','0','1','2','3','SAVE'))
)
18. Vòng thử giọng (STT vòng thi, mã mùa thi, mã tỉnh thành, địa
điểm)
CREATE TABLE VONGTHUGIONG(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATINHTHANH VARCHAR(20),
DIADIEM NVARCHAR(50),

PRIMARY KEY(STTVONGTHI,MAMUATHI),
CONSTRAINT FK_VONGTHUGIONG FOREIGN
KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGTHI(STTVONGTHI,MAMUATHI),
CONSTRAINT FK_MATINHTHANH_VONGTHUGIONG
FOREIGN KEY(MATINHTHANH) REFERENCES
TINHTHANH(MATINHTHANH)
)
19. Thí sinh tham gia vịng thử giọng (STT vịng thi, mã mùa thi, mã
thí sinh, GK1, GK2, GK3)
CREATE TABLE THISINHTHAMGIAVONGTHUGIONG(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
GK1 CHAR(1),
GK2 CHAR(1),

10


GK3 CHAR(1),
CONSTRAINT
FK_MATHISINH_THISINHTHAMGIAVONGTHUGIONG
FOREIGN KEY(MATHISINH) REFERENCES
THISINH(MATHISINH),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHTHAMGIAVONGTH
UGIONG FOREIGN KEY(STTVONGTHI,MAMUATHI)
REFERENCES VONGTHUGIONG(STTVONGTHI,MAMUATHI),
CONSTRAINT CHECK_GK1 CHECK(GK1 IN ('0','1')),

CONSTRAINT CHECK_GK2 CHECK(GK2 IN ('0','1')),
CONSTRAINT CHECK_GK3 CHECK(GK3 IN ('0','1'))
)
20. Thí sinh hát tại vòng thử giọng (STT vòng thi, mã mùa thi, mã thí
sinh, mã bài hát)
CREATE TABLE THISINHHATTAIVONGTHUGIONG(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
MABAIHAT VARCHAR(20),
PRIMARY
KEY(STTVONGTHI,MAMUATHI,MATHISINH,MABAIHAT),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHHATTAIVONGTHUG
IONG FOREIGN KEY(STTVONGTHI,MAMUATHI)
REFERENCES VONGTHUGIONG(STTVONGTHI,MAMUATHI),
CONSTRAINT
FK_MATHISINH_THISINHHATTAIVONGTHUGIONG
FOREIGN KEY(MATHISINH) REFERENCES
THISINH(MATHISINH),
CONSTRAINT
FK_MABAIHAT_THISINHHATTAIVONGTHUGIONG FOREIGN
KEY(MABAIHAT) REFERENCES BAIHAT(MABAIHAT)
)
21. Vòng nhà hát (STT vòng thi, mã mùa thi, HatNhomFlag)
CREATE TABLE VONGNHAHAT(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
HATNHOMFLAG CHAR(1),
PRIMARY KEY(STTVONGTHI,MAMUATHI),


11


CONSTRAINT CHECK_HATNHOMFLAG
CHECK(HATNHOMFLAG IN ('0','1'))
)
ALTER TABLE VONGNHAHAT
ADD CONSTRAINT
FK_STTVONGTHI_MAMUATHI_VONGNHAHAT FOREIGN
KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGTHI(STTVONGTHI,MAMUATHI)
22. Thí sinh hát tại vòng nhà hát (STT vòng thi, mã mùa thi, mã thí
sinh, mã bài hát)
CREATE TABLE THISINHHATTAIVONGNHAHAT(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
MABAIHAT VARCHAR(20),
PRIMARY
KEY(STTVONGTHI,MAMUATHI,MATHISINH,MABAIHAT),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHHATTAIVONGNHAH
AT FOREIGN KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGNHAHAT(STTVONGTHI,MAMUATHI),
CONSTRAINT
FK_MATHISINH_THISINHHATTAIVONGNHAHAT FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH),
CONSTRAINT
FK_MABAIHAT_THISINHHATTAIVONGNHAHAT FOREIGN

KEY(MABAIHAT) REFERENCES BAIHAT(MABAIHAT)
)
23. Nhóm ca (mã nhóm, tên nhóm, mã thí sinh 1, mã thí sinh 2, mã
thí sinh 3, mã thí sinh 4)
CREATE TABLE NHOMCA(
MANHOM VARCHAR(20),
TENNHOM NVARCHAR(50),
MTS1 VARCHAR(20) NOT NULL,
MTS2 VARCHAR(20) NOT NULL,
MTS3 VARCHAR(20) NOT NULL,
MTS4 VARCHAR(20) NOT NULL,
PRIMARY KEY(MANHOM),
CONSTRAINT MATS1_KHONGTRUNG UNIQUE(MTS1),
CONSTRAINT MATS2_KHONGTRUNG UNIQUE(MTS2),

12


CONSTRAINT MATS3_KHONGTRUNG UNIQUE(MTS3),
CONSTRAINT MATS4_KHONGTRUNG UNIQUE(MTS4),
CONSTRAINT CHECK_MANHOM CHECK
((CAST(LEFT(MANHOM,2) AS VARCHAR)) LIKE '%NC')
)
24. Nhóm ca hát bài hát (mã nhóm, mã bài hát, STT vòng thi, mã
mùa thi)
CREATE TABLE NHOMCAHATBAIHAT(
MANHOM VARCHAR(20),
MABAIHAT VARCHAR(20),
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),

PRIMARY KEY(MANHOM,MABAIHAT),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_NHOMCAHATBAIHAT
FOREIGN KEY (STTVONGTHI,MAMUATHI) REFERENCES
VONGNHAHAT(STTVONGTHI,MAMUATHI),
CONSTRAINT FK_MANHOM_NHOMCAHATBAIHAT
FOREIGN KEY(MANHOM) REFERENCES
NHOMCA(MANHOM),
CONSTRAINT FK_MABAIHAT_NHOMCAHATBAIHAT
FOREIGN KEY(MABAIHAT) REFERENCES
BAIHAT(MABAIHAT)
)
25. Vòng bán kết (STT vòng thi, mã mùa thi, Nam_Nữ)
CREATE TABLE VONGBANKET(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
NAM_NU CHAR(1), ---1 VÒNG BTH,0 LÀ VÒNG NAM
HÁT,1 LÀ VÒNG NỮ HÁT-PRIMARY KEY(STTVONGTHI,MAMUATHI),
CONSTRAINT CHECK_NAM_NU CHECK(NAM_NU IN ('1','1','0'))
)
ALTER TABLE VONGBANKET
ADD CONSTRAINT
FK_STTVONGTHI_MAMUATHI_VONGBANKET FOREIGN
KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGTHI(STTVONGTHI,MAMUATHI)

13


26. Thí sinh tham gia vịng bán kết (STT vịng thi, mã mùa thi, mã

thí sinh, MSBC, tổng số tin nhắn)
CREATE TABLE THISINHTHAMGIAVONGBANKET(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
MSBC CHAR(10),
TONGSOTINNHAN INT,
PRIMARY
KEY(STTVONGTHI,MAMUATHI,MATHISINH),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHTHAMGIAVONGBA
NKET FOREIGN KEY(STTVONGTHI,MAMUATHI)
REFERENCES VONGBANKET(STTVONGTHI,MAMUATHI),
CONSTRAINT
FK_MATHISINH_THISINHTHAMGIAVONGBANKET FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH)
)
27. Thí sinh hát tại vịng bán kết (mã thí sinh, mã bài hát, STT vòng
thi, mã mùa thi)
CREATE TABLE THISINHHATTAIVONGBANKET(
MATHISINH VARCHAR(20),
MABAIHAT VARCHAR(20),
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
PRIMARY KEY(MATHISINH,MABAIHAT),
CONSTRAINT
FK_MATHISINH_THISINHHATTAIHVONGBANKET FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH),
CONSTRAINT
FK_MABAIHAT_THISINHHATTAIVONGBAMKET FOREIGN

KEY(MABAIHAT) REFERENCES BAIHAT(MABAIHAT),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHHATTAIVONGBANK
ET FOREIGN KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGBANKET(STTVONGTHI,MAMUATHI),
CONSTRAINT MABAIHAT_KHONGTRUNG_27
UNIQUE(MABAIHAT),
CONSTRAINT MAMUATHI_KHONGTRUNG_27
UNIQUE(MAMUATHI)

14


)
28. Vòng gala (STT vòng thi, mã mùa thi, chủ đề, mã người hướng
dẫn, HatDoiFlag)
CREATE TABLE VONGGALA(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
CHUDE NVARCHAR(50) NOT NULL,
MANGUOIHUONGDAN VARCHAR(20),
HATDOIFLAG CHAR(1), --1 LÀ HÁT ĐÔI-PRIMARY KEY(STTVONGTHI,MAMUATHI),
CONSTRAINT FK_MANGUOIHUONGDAN_VONGGALA
FOREIGN KEY(MANGUOIHUONGDAN) REFERENCES
NGHESI(MANGHESI) ,
CONSTRAINT CHUDE_KHONGTRUNG_28
UNIQUE(CHUDE),
CONSTRAINT CHECK_HATDOIFLAG_28
CHECK(HATDOIFLAG IN ('1','0'))
)

ALTER TABLE VONGGALA
ADD CONSTRAINT
FK_STTVONGTHI_MAMUATHI_VONGGALA FOREIGN
KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGTHI(STTVONGTHI,MAMUATHI)
29. Thí sinh tham gia vịng gala (STT vịng thi, mã mùa thi, mã thí
sinh, MSBC, tổng số tin nhắn)
CREATE TABLE THISINHTHAMGIAVONGGALA(
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
MATHISINH VARCHAR(20),
MSBC CHAR(10),
TONGSOTINNHAN INT,
PRIMARY
KEY(STTVONGTHI,MAMUATHI,MATHISINH),
CONSTRAINT
FK_MATHISINH_THISINHTHAMGIAVONGGALA FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHTHAMGIAVONGGA

15


LA FOREIGN KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGGALA(STTVONGTHI,MAMUATHI)
)
30. Thí sinh hát tại vịng gala (mã thí sinh, mã bài hát, STT vịng thi,
mã mùa thi)
CREATE TABLE THISINHHATTAIVONGGALA(

MATHISINH VARCHAR(20),
MABAIHAT VARCHAR(20),
STTVONGTHI INT NOT NULL,
MAMUATHI VARCHAR(20),
PRIMARY KEY(MATHISINH,MABAIHAT),
CONSTRAINT
FK_MATHISINH_THISINHHATTAIVONGGALA FOREIGN
KEY(MATHISINH) REFERENCES THISINH(MATHISINH),
CONSTRAINT
FK_MABAIHAT_THISINHHATTAIVONGGALA FOREIGN
KEY(MABAIHAT) REFERENCES BAIHAT(MABAIHAT),
CONSTRAINT
FK_STTVONGTHI_MAMUATHI_THISINHHATTAIVONGGALA
FOREIGN KEY(STTVONGTHI,MAMUATHI) REFERENCES
VONGGALA(STTVONGTHI,MAMUATHI)
)
II.
Tạo Index
Người dùng cơ sở dữ liệu thường hay truy vấn những thông tin như sau:
a. Thơng tin các vịng thi dựa trên tên của vịng thi. (Ví dụ: gala 1,
gala 2,…).
CREATE INDEX THONGTINVONGTHI
ON VONGTHI(LOAIVONGTHI)
b. Thơng tin thí sinh dựa vào CMND.
CREATE INDEX THONGTINTS
ON NGUOI(CMND)
c. Thông tin mùa giải dựa vào ngày tháng năm bắt đầu. Dựa trên
mục đích truy vấn trên, bạn hãy tạo những index thích hợp để
tăng tốc độ truy xuất cơ sở dữ liệu.
CREATE INDEX THONGTINMUA

ON MUATHI(NGAYTHANGNAMBD)
PHẦN 2: STORE PROCEDURE, FUNCTION, TRIGGER:
I.
Store Procedure/Function
II.
Trigger

16


2. Viết trigger kiểm tra thơng tin mã số bình chọn cho thí sinh
trong các vịng bán kết và gala phải khơng được trùng lắp trong
một vịng thi.
CREATE TRIGGER CAU2 ON
THISINHTHAMGIAVONGBANKET
FOR INSERT,UPDATE
AS
BEGIN
DECLARE @MABC CHAR(10)
SET @MABC = (SELECT MSBC FROM inserted)
DECLARE @MAMUATHI VARCHAR(20)
SET @MAMUATHI = (SELECT MAMUATHI FROM
inserted)
IF (SELECT COUNT(*) FROM
THISINHTHAMGIAVONGBANKET WHERE
MAMUATHI=@MAMUATHI AND MSBC = @MABC) >=2
BEGIN
PRINT N'MSBC BỊ TRÙNG LẮP'
ROLLBACK TRAN
END

END
PHẦN 3: THAO TÁC CƠ SỞ DỮ LIỆU:
I.
Insert:
SET DATEFORMAT DMY
INSERT INTO NGUOI VALUES
('TS2012000001','301301301',N'NGUYỄN
NGÂN','1','05/07/2000',N'HỒ CHÍ MINH'),
('TS2012000002','303303303',N'LÊ DUẪN','0','05/09/1998',N'HẢI
PHỊNG'),
('TS2014000001','203203203',N'NGUYỄN
DU','0','07/07/1999',N'LONG AN'),
('TS2014000002','302302302',N'LÊ TUYẾT','1','06/12/1994',N'ĐÀ
NẴNG'),
('NS000001','201201201',N'TRẦN HÙNG','0','07/03/1970',N'HÀ
NỘI'),
('NS000002','202202202',N'NGUYỄN TN','0','01/11/1985',N'CẦN
THƠ'),
('NS000003','304304304',N'BẠCH LIÊN','1','05/02/1984',N'AN
GIANG'),

17


('NS000004','204204204',N'HUYẾT NGUYỆT','1','03/02/1988',N'ĐÀ
LẠT');
--Bảng 2-INSERT INTO THISINH VALUES
('TS2012000001',N'24 TÂN PHONG, QUẬN 7','0982548546',N'LÀ
CA SĨ TÀI NĂNG HÁT ĐƯỢC NHIỀU THỂ LOẠI'),
('TS2012000002',N'125 LÊ VĂN LƯƠNG, NHÀ

BÈ','0764326532',N'BIẾT CHƠI NHIỀU NHẠC CỤ'),
('TS2014000001',N'282 LÊ VĂN LƯƠNG, QUẬN
7','0887865923',N'CHƠI TỐT PIANO'),
('TS2014000002',N'299 MAI VĂN VĨNH, QUẬN
7','0355032512',N'CHƠI ĐƯỢC BEATBOX, SỞ TRƯỜNG RAP');
--Bảng 3-INSERT INTO NGHESI VALUES
('NS000001',N'LỆ QUYÊN',N'ĐẠT GIẢI NHẤT TIẾNG HÁT
TRUYỀN HÌNH NĂM 1992','1','1','0'),
('NS000002',N'TÁO',N'ĐẠT GIẢI DANH HIỆU NHẠC SĨ TÂM
TRẠNG','1','1','1'),
('NS000003',N'ANH TÚ',N'ĐẠT GIẢI GIỌNG CA VÀNG NĂM
2004','1','1','0'),
('NS000004',N'TRẤN THÀNH',N'NGHỆ SĨ HÀI CỦA NĂM
2018','1','0','0');
--Bảng 4-INSERT INTO CHUONGTRINHMC VALUES
('NS000001',N'HÁT CÙNG BOLERO'),
('NS000002',N'TÂM TRẠNG NỮA ĐÊM'),
('NS000003',N'BUỔI TRƯA VUI VẺ'),
('NS000004',N'RAP VIỆT')
--Bảng 5-INSERT INTO ALBUMCASI VALUES
('NS000001',N'TÌNH XƯA'),
('NS000002',N'BLUE TEQUILA'),
('NS000003',N'CUỘC SỐNG EM ỔN KHÔNG'),
('NS000004',N'CÁNH HỒNG PHAI');
--Bảng 6-INSERT INTO BAIHAT VALUES
('BH000001',N'BLUE TEQUILA'),
('BH000002',N'DÁNG EM'),
('BH000003',N'BÔNG HOA ĐẸP NHẤT'),
('BH000004',N'ANH BIẾT MÀ');


18


--Bảng 7-INSERT INTO THELOAI VALUES
('TL001',N'NHẠC BALLAD'),
('TL002',N'NHẠC BOLERO'),
('TL003',N'NHẠC TÌNH CẢM'),
('TL004',N'NHẠC TRẺ')
--Bảng 8-INSERT INTO BAIHATTHUOCTHELOAI VALUES
('BH000001','TL001'),
('BH000002','TL003'),
('BH000003','TL003'),
('BH000004','TL003');
--Bảng 9-INSERT INTO NHACSISANGTAC VALUES
('NS000002','BH000001','3'),
('NS000002','BH000003','1'),
('NS000002','BH000004','3'),
('NS000002','BH000002','2')
--Bảng 10-INSERT INTO TINHTHANH VALUES
('TT01',N'HÀ NỘI'),
('TT02',N'HỒ CHÍ MINH'),
('TT03',N'HẢI PHỊNG'),
('TT04',N'ĐÀ NẴNG'),
('TT46',N'LONG AN'),
('TT51',N'AN GIANG'),
('TT55',N'CẦN THƠ'),
('TT42',N'LÂM ĐỒNG');
--Bảng 11-INSERT INTO NHASX VALUES
('NSX001',N'ĐÔNG TÂY'),
('NSX002',N'PHƯƠNG NAM'),

('NSX003',N'ĐIỀN QUÂN'),
('NSX004',N'MTP')
--Bảng 12-INSERT INTO KENHTRUYENHINH VALUES
('TH001',N'TH VĨNH LONG I'),
('TH002',N'TH VĨNH LONG II'),
('TH003',N'TH LONG AN'),

19


('TH004',N'TH VTV')
--Bảng 13-SET DATEFORMAT DMY
INSERT INTO
MUATHI(NGAYTHANGNAMBD,NGAYTHANGNAMKT,GIAIT
HUONG,DIADIEMVONGNHAHAT,DIADIEMVONGBANKET,DI
ADIEMVONGGALA,MAGIAMDOCAMNHAC,MAGIAMKHAO1,
MAGIAMKHAO2,MAGIAMKHAO3,MAMC)
VALUES
('02/02/2012','02/04/2012',N'MỘT GIẢI NHẤT, MỘT GIẢI NHÌ,
HAI GIẢI BA VÀ 5 GIẢI KHUYẾN KHÍCH',N'NHÀ VĂN HĨA
QUẬN 1',N'NHÀ VĂN HĨA QUẬN 1',N'NHÀ HÁT HỊA
BÌNH','GD001','NS000001','NS000003','NS000004','NS000002')
INSERT INTO
MUATHI(NGAYTHANGNAMBD,NGAYTHANGNAMKT,GIAIT
HUONG,DIADIEMVONGNHAHAT,DIADIEMVONGBANKET,DI
ADIEMVONGGALA,MAGIAMDOCAMNHAC,MAGIAMKHAO1,
MAGIAMKHAO2,MAGIAMKHAO3,MAMC)
VALUES
('05/04/2012','05/08/2012',N'MỘT CÚP VƠ ĐỊCH,3 GIẢI NHÌ VÀ 5
GIẢI KHUYẾN KHÍCH',N'NHÀ VĂN HĨA QUẬN 1',N'NHÀ VĂN

HĨA QUẬN 1',N'NHÀ HÁT HỊA
BÌNH','GD001','NS000005','NS000003','NS000002','NS000001')
INSERT INTO
MUATHI(NGAYTHANGNAMBD,NGAYTHANGNAMKT,GIAIT
HUONG,DIADIEMVONGNHAHAT,DIADIEMVONGBANKET,DI
ADIEMVONGGALA,MAGIAMDOCAMNHAC,MAGIAMKHAO1,
MAGIAMKHAO2,MAGIAMKHAO3,MAMC)
VALUES
('10/09/2014','20/12/2014',N'MỘT CÚP VƠ ĐỊCH,2 GIẢI NHÌ, 3
GIẢI KHUYẾN KHÍCH VÀ 1 GIẢI CA SĨ TRIỂN VỌNG CỦA
MÙA',N'NHÀ VĂN HÓA QUẬN 1',N'NHÀ VĂN HÓA QUẬN
1',N'NHÀ HÁT HỊA
BÌNH','GD002','NS000001','NS000004','NS000001','NS000003')
INSERT INTO
MUATHI(NGAYTHANGNAMBD,NGAYTHANGNAMKT,GIAIT
HUONG,DIADIEMVONGNHAHAT,DIADIEMVONGBANKET,DI
ADIEMVONGGALA,MAGIAMDOCAMNHAC,MAGIAMKHAO1,
MAGIAMKHAO2,MAGIAMKHAO3,MAMC)
VALUES

20


('01/02/2014','01/04/2014',N'MỘT GIẢI QUÁN QUÂN, MỘT GIẢI
Á QUÂN, BA GIẢI KHUYẾN KHÍCH',N'NHÀ VĂN HĨA QUẬN
1',N'NHÀ VĂN HĨA QUẬN 1',N'NHÀ HÁT HỊA
BÌNH','GD002','NS000003','NS000004','NS000002','NS000001')
--Bảng 14-INSERT INTO GIUBANQUYENMUATHI VALUES
('MT001','NSX001'),
('MT002','NSX004'),

('MT003','NSX002'),
('MT004','NSX003')
--Bảng 15-INSERT INTO PHATSONG VALUES
('MT001','TH001',N'3'),
('MT002','TH001',N'3'),
('MT003','TH002',N'3'),
('MT004','TH002',N'3')
--Bảng 16-GO
EXEC STTVT 'MT001',N'VÒNG THỬ GIỌNG','02/02/2011
07:00','12/02/2011 17:00','1'
EXEC STTVT 'MT001',N'VÒNG NHÀ HÁT','15/02/2011
07:00','22/02/2011 17:00','2'
EXEC STTVT 'MT001',N'VÒNG BÁN KẾT','25/02/2011
07:00','28/02/2011 17:00','3'
EXEC STTVT 'MT001',N'VÒNG GALA','05/03/2011
07:00','12/03/2011 17:00','4'
EXEC STTVT 'MT002',N'VÒNG THỬ GIỌNG','02/02/2012
07:00','12/02/2012 17:00','1'
EXEC STTVT 'MT002',N'VÒNG NHÀ HÁT','15/02/2012
07:00','22/02/2012 17:00','2'
EXEC STTVT 'MT002',N'VÒNG BÁN KẾT','25/02/2012
07:00','28/02/2012 17:00','3'
EXEC STTVT 'MT002',N'VÒNG GALA','05/03/2012
07:00','12/03/2012 17:00','4'
EXEC STTVT 'MT003',N'VÒNG THỬ GIỌNG','02/02/2013
07:00','12/02/2013 17:00','1'

21



EXEC STTVT 'MT003',N'VÒNG NHÀ HÁT','15/02/2013
07:00','22/02/2013 17:00','2'
EXEC STTVT 'MT003',N'VÒNG BÁN KẾT','25/02/2013
07:00','28/02/2013 17:00','3'
EXEC STTVT 'MT003',N'VÒNG GALA','05/03/2013
07:00','12/03/2013 17:00','4'
EXEC STTVT 'MT004',N'VÒNG THỬ GIỌNG','02/02/2014
07:00','12/02/2014 17:00','1'
EXEC STTVT 'MT004',N'VÒNG NHÀ HÁT','15/02/2014
07:00','22/02/2014 17:00','2'
EXEC STTVT 'MT004',N'VÒNG BÁN KẾT','25/02/2014
07:00','28/02/2014 17:00','3'
EXEC STTVT 'MT004',N'VÒNG GALA','05/03/2014
07:00','12/03/2014 17:00','4'
--Bảng 17-INSERT INTO THISINHTHAMGIAVONGTHI VALUES
(1,'MT002','TS2012000001',1),
(2,'MT002','TS2012000001',1),
(3,'MT002','TS2012000001',2),
(4,'MT002','TS2012000001',2),
(1,'MT004','TS2014000001',1),
(2,'MT004','TS2014000001',1),
(3,'MT004','TS2014000001',3),
(4,'MT004','TS2014000001',1);
--Bảng 18-INSERT INTO VONGTHUGIONG VALUES
(1,'MT001','TT01',N'NHÀ HÁT THÀNH PHỐ'),
(1,'MT002','TT01',N'NHÀ HÁT THÀNH PHỐ'),
(1,'MT003','TT01',N'NHÀ HÁT THÀNH PHỐ'),
(1,'MT004','TT01',N'NHÀ HÁT THÀNH PHỐ');
--Bảng 19-INSERT INTO THISINHTHAMGIAVONGTHUGIONG VALUES
(1,'MT002','TS2012000002','1','1','0'),

(1,'MT002','TS2012000001','1','1','1'),
(1,'MT004','TS2014000002','0','1','1'),
(1,'MT004','TS2014000001','1','0','1');

22


--Bảng 20-INSERT INTO THISINHHATTAIVONGTHUGIONG VALUES
(1,'MT002','TS2012000002','BH000001'),
(1,'MT002','TS2012000001','BH000002'),
(1,'MT004','TS2014000002','BH000003'),
(1,'MT004','TS2014000001','BH000004')
--Bảng 21-INSERT INTO VONGNHAHAT VALUES
(2,'MT001','1'),
(2,'MT002','1'),
(2,'MT003','1'),
(2,'MT004','0')
--Bảng 22-INSERT INTO THISINHHATTAIVONGNHAHAT VALUES
(2,'MT002','TS2012000002','BH000001'),
(2,'MT002','TS2012000001','BH000002'),
(2,'MT004','TS2014000002','BH000003'),
(2,'MT004','TS2014000001','BH000004')
--Bảng 23-INSERT INTO NHOMCA VALUES
('NC201201',N'NHÓM NICE',
'TS2012000001',
'TS2012000002',
'TS2012000003',
'TS2012000004')
--Bảng 24-INSERT INTO NHOMCAHATBAIHAT VALUES
('NC201201','BH000001',2,'MT002')

--Bảng 25-INSERT INTO VONGBANKET VALUES
(3,'MT001','0'),
(3,'MT002','0'),
(3,'MT003','0'),
(3,'MT004','0')

23


--Bảng 26-INSERT INTO THISINHTHAMGIAVONGBANKET VALUES
(3,'MT002','TS2012000002','TS0000002',1000),
(3,'MT002','TS2012000001','TS0000001',1000),
(3,'MT004','TS2014000002','TS0000002',800),
(3,'MT004','TS2014000001','TS0000001',990)
--Bảng 27-INSERT INTO THISINHHATTAIVONGBANKET VALUES
('TS2012000001','BH000002',3,'MT002'),
('TS2014000001','BH000004',3,'MT004')
--Bảng 28-INSERT INTO VONGGALA VALUES
(4,'MT001',N'KHÚC TÌNH CA','NS000001',0),
(4,'MT002',N'CÁNH ÉN MÙA XUÂN','NS000002',0),
(4,'MT003',N'TÌNH CA MÙA ĐƠNG','NS000001',0),
(4,'MT004',N'TÌNH CA','NS000002',0)
--Bảng 29-INSERT INTO THISINHTHAMGIAVONGGALA VALUES
(4,'MT002','TS2012000002','TS0000002',1000),
(4,'MT002','TS2012000001','TS0000001',9020),
(4,'MT004','TS2014000002','TS0000002',8003),
(4,'MT004','TS2014000001','TS0000001',10002)

II.


III.

--Bảng 30-INSERT INTO THISINHHATTAIVONGGALA VALUES
('TS2012000002','BH000001',4,'MT002'),
('TS2012000001','BH000002',4,'MT002'),
('TS2014000002','BH000003',4,'MT004'),
('TS2014000001','BH000004',4,'MT004')
Update:
UPDATE THISINHTHAMGIAVONGGALA
SET TONGSOTINNHAN = 10000
WHERE MATHISINH = 'TS2012000001'
Delete:
DELETE THISINH
WHERE MATHISINH = 'TS2012000001'

24


PRINT N'CÂU III PHẦN 3: VIỆC XÓA DỮ LIỆU THÀNH CƠNG
KHI MÃ TS2012000001 KHƠNG CĨ LIÊN QUAN RÀNG BUỘC
TỚI CÁC BẢNG KHÁC NẾU CĨ THÌ SẼ KHƠNG XĨA ĐƯỢC'
IV. Select:
a. Tìm thí sinh (CMND, tên, địa chỉ, điện thoại) qn quân mùa
giải 2012 (năm bắt đầu của mùa thi là 2012).
SELECT
NGUOI.CMND,NGUOI.TEN,THISINH.DIACHI,THISINH.DIENT
HOAI FROM
THISINHTHAMGIAVONGGALA,NGUOI,THISINH,MUATHI
WHERE TONGSOTINNHAN = (SELECT
MAX(TONGSOTINNHAN) FROM

THISINHTHAMGIAVONGGALA)
AND YEAR(NGAYTHANGNAMBD)=2012
AND THISINHTHAMGIAVONGGALA.MATHISINH =
THISINH.MATHISINH
AND THISINH.MATHISINH = NGUOI.ID
b. Cho biết mùa thi nào (mã mùa thi, năm bắt đầu, năm kết thúc)
có tổng lượng tin nhắn cho các thí sinh trong tất cả các vịng thi
bán kết và chung kết nhiều nhất kèm theo số lượng tin nhắn của
mùa thi đó.
SELECT TOP 1
T1.MAMUATHI,YEAR(MUATHI.NGAYTHANGNAMBD) AS
N'NĂM BẮT ĐẦU',YEAR(MUATHI.NGAYTHANGNAMKT)
AS N'NĂM KẾT THÚC',
(T1.TONGSOTINNHAN+T2.TONGSOTINNHAN) AS N'TỔNG SỐ
TIN NHẮN' FROM THISINHTHAMGIAVONGBANKET
AS T1,THISINHTHAMGIAVONGGALA
AS T2,MUATHI
WHERE T1.MAMUATHI = T2.MAMUATHI AND
MUATHI.MAMUATHI = T1.MAMUATHI
ORDER BY (T1.TONGSOTINNHAN+T2.TONGSOTINNHAN)
DESC
PHẦN 4: PHÂN QUYỀN TRUY CẬP
I.
Tạo user (0.25đ) Đăng nhập vào CSDL bằng user có quyền admin.
Tạo các user sau:
1. User Nhanvien (Nhân viên chịu trách nhiệm nhập liệu).
SP_ADDLOGIN 'NHANVIEN','NV','BTL'
SP_ADDUSER
'NHANVIEN','NHANVIENCHIUTRACHNHIEMNHAPLIEU'


25


×