Câu hỏi ôn tập cơ sở dữ liệu | Đại học Văn Lang

Có thể có một bảng View không có chứa dữ liệu nào không? Bảng View có chứa dữ liệu thật không? Nếu xoá toàn bộ dữ liệu trong bảng View, dữ liệu trong bảng nguồn có mất đi hết dữ liệu không? Bảng View có thể dùng được với các câu lệnh Select, Insert, Update, Delete không? Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

Môn:
Trường:

Đại học Văn Lang 1 K tài liệu

Thông tin:
13 trang 12 giờ trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

Câu hỏi ôn tập cơ sở dữ liệu | Đại học Văn Lang

Có thể có một bảng View không có chứa dữ liệu nào không? Bảng View có chứa dữ liệu thật không? Nếu xoá toàn bộ dữ liệu trong bảng View, dữ liệu trong bảng nguồn có mất đi hết dữ liệu không? Bảng View có thể dùng được với các câu lệnh Select, Insert, Update, Delete không? Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời đọc đón xem!

432 216 lượt tải Tải xuống
1
PHN TR C NGHI M (2 m) điể
Chương 2: Khung nhìn
1. Bảng View có chứa dữ liệu thật không?
2. Có thể có một bảng View không có chứa dữ liệu nào không?
3. Nếu xoá toàn bộ dữ liệu trong bảng View, dữ liệu trong bảng nguồn có mất đi hết dữ liệu không?
Lúc có lúc không
4. Bảng View có thể dùng được với các câu lệnh Select, Insert, Update, Delete không?
Lúc có lúc không
5. Khi xoá một hàng trong bảng View thì hàng dữ liệu đó trong bảng nguồn có bị xoá đi không?
Lúc có lúc không
6. Có thể thông qua bảng View để thêm mới một hàng dữ liệu trong bảng nguồn được không?
Lúc có lúc không
7. View là gì?
Là một bảng ảo trong cơ sở dữ liệu có nội dung được định nghĩa thông qua một câu lệnh SQL nào
đó.
8. Câu lệnh nào sau đây dùng để loại bỏ VIEW V1 khỏi cơ sở dữ liệu?
DROP VIEW V1
9. Từ khóa nào sau đây dùng để ngăn cản các thao tác cập nhật dữ liệu (thêm, sửa) tác động trực tiếp
vào View có làm ảnh hưởng dữ liệu đối với View có sử dụng mệnh đề WHERE trong câu lệnh
SELECT?
WITH CHECK OPTION
Chương 3: Stored Procedure & Trigger
1. Khi muốn thực thi một Store Procedure tên P1 có một biến X kiểu số nguyên ta thực hiện lệnh
sau:
EXEC P1 5
2. Cho hai Table TOUR VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình
sau:
Cho biết ý nghĩa của Procedure sau:
CREATE PROC P3
AS
SELECT A.MATOUR ,LOTRINH, SUM(SONGUOI*GIATOUR) DOANHTHU
FROM TOUR A, TTDK B
WHERE A.MATOUR=B.MATOUR
GROUP BY A.MATOUR, LOTRINH
ORDER BY DOANHTHU
Tính doanh thu của các tour
3. Trigger dùng Instead Of có thể định nghĩa nhiều trigger cho mỗi thao tác trên cùng 1 bảng không?
Sai
4. Hai bảng nào được phép dùng trong UPDATE Trigger?
Bảng inserted và bảng deleted
2
5. Cho hai Table TOUR VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình sau:
Cho bi ết kết quả khi thực thi Procedure P1 sau:
CREATE PROC P1
AS
SELECT SUM(SONGUOI) TONGSONGUOI
FROM TOUR A, TTDK B
WHERE A.MATOUR=B.MATOUR AND A.MATOUR =’T1’
Tất cả các câu còn lại đều sai
6. Khi muốn tạo một Store Procedure có một biến kiểu ký tự ta thực hiện khai báo như sau:
CREATE PROCEDURE SP1 @X VARCHAR(50)
7. Một thủ tục được tự động thực hiện khi ta thay đổi dữ liệu trong 1 table của SQL Server thông qua
các lệnh Update, Insert, Delete, đó là:
Trigger
8. Khi muốn khai báo một biến X có kiểu dữ liệu là số nguyên trong SQL ta khai báo:
DECLARE @X INT
9. Cần phải viết 3 Trigger cho 3 hành động Insert/Update/Delete riêng ra trên 1 bảng?
Sai
10. Chọn câu phát biểu sai:
Ta có thể xóa dữ liệu trong logic table
Chương 4: Function & Cursor
1. Cursor là:
Là một kiểu dữ liệu đặc biệt, được dùng để lưu trữ kết quả của lệnh SELECT trong quá trình lập
trình
2. defined function) Hàm nào sau đây không phải là hàm của người dùng (user –
Hàm bảo mật (security)
3. .TEST (6,2 ) sau là: Kết quả trả về của hàm DBO
CREATE FUNCTION TEST(@X INT,@Y INT) RETURNS INT
AS
BEGIN
DECLARE @T INT =0
IF (@Y%@X=0) --- %: chia lấy số dư
SET @T=@Y%@X
ELSE
SET @T=@Y+@X
RETURN @T
END
8
4. Khi muốn tạo một Function tên F1 có một biến X kiểu ký tự ta thực hiện khai báo như sau:
CREATE FUNCTION F1 (@X VARCHAR(10))
5. Khi muốn thực thi một hàm tên F1 có một biến X kiểu số nguyên ta thực hiện lệnh như sau:
PRINT dbo.F1 (10)
6. Chọn câu phát biểu sai:
Function có thể gọi Procedure
3
7. Cho hai Table TOU R VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình sau:
Muốn tính tổng số lần đăng ký của các tour ta phải thực hiện lựa chọn nào:
CREATE FUNCTION F2()
RETURNS TABLE AS RETURN (SELECT MATOUR, SOLAN=COUNT(SOPHIEU)
FROM TTDK GROUP BY MATOUR)
8. Giá trị trả về của một hàm (Function) phải là:
Một Table hoặc một giá trị
9. Trong cú pháp khai báo con trỏ (Cursor), từ khóa Scroll có nghĩa là:
Có thể duyệt lên xuống cursor tùy ý (duyệt theo đa chiều)
10. dùng sau: Xác định loại cho hàm của người
CREATE FUNCTION fn_Pub (@CountryPar nvarchar(30))
RETURNS table
AS
RETURN (SELECT pub_Id, pub_Name
FROM pubs. dbo. Publishers
WHERE country = @CountryPar)
-valued) Hàm nội tuyến/giá trị bảng đơn giản (Inline table
Chương 10: Giao tác và truy xuất đồng thời
1. Lệnh nào là lệnh kết thúc một Transaction:
SAVE TRANSACTION
2. Các kiểu lock nào sau đây không phải lock trong transaction:
Unlock
3. Phát biểu nào sau đây mô tả thuộc tính Atomicity của 1 Transaction?
Mọi chỉnh sửa trong 1 transaction hoặc được thi hành hết hoặc không có 1 chỉnh sửa nào được
thực hiện
4. Lệnh nào cho phép quay trở thời điểm bắt đầu của Transaction hoặc là một vị trí nào đó được
đánh dấu:
ROLLBACK TRANSACTION
5. Cô Châu cần chèn 1 điểm dừng (Save Point) có tên là ‘Returnback’ vào Transaction, thì Cô nên
dùng lệnh nào sau đây:
SAVE TRANSACTION Returnback
6. Ý nghĩa của nhóm lệnh BEGIN TRAN… COMMIT là gì?
Mở transaction bằng lệnh BEGIN TRAN và kết thúc bằng lệnh COMMIT – sau lệnh này những
cập nhật dữ liệu sẽ được xác nhận vào trong database
7. Nếu thiếu cơ chế khoá thì vấn đề nào sẽ xảy ra khi 2 hay nhiều transaction đều chỉnh sửa cùng 1
hàng dữ liệu:
Mất dữ liệu cập nhật (Lost updates)
8. Lỗi nào sau đây không phải lỗi xảy ra truy xuất đồng thời?
Đọc không cùng nội dung (Inconsistent Analysis)
9. Thuộc tính nào của Transaction bảo đảm tính tuần tự?
Isolation
10. TRANSACTION trong SQL có các thuộc tính thường được viết tắt là ACID nghĩa là gì?
Atomicity, Consistency, Isolation, Durability
Chương 11: Kĩ thuật tối ưu hóa truy vấn
1. Đâu không phải là nguyên nhân làm chậm truy vấn:
Không dùng Stored Procedure
4
2. Câu lệnh nào sau đây có sử dụng index trên cột MaNV và index không bị mất hiệu lực?
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE MaNV LIKE 'NV%'
3. Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi,DienThoai FROM NhanVien n LEFTJOIN PhongBan
p WHERE n.mapb = p.mapb and NgaySinh < DATEADD(YEAR,-30,GETDATE())
4. Câu lệnh nào sau đây tối ưu so với các câu còn lại:
IF EXISTS (SELECT MaNV FROM NhanVien WHERE GioiTinh = 'Nam' or Luong >2001)
5. Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE Luong > 2001 OR MaPB
= 1
6. Đâu không phải là phương pháp cải tiến để tối ưu hóa câu truy vấn?
Sử dụng Trigger
7. Câu lệnh nào sau đây chưa tối ưu so với các câu còn lại:
SELECT * FROM NhanVien n LEFTJOIN PhongBan p WHERE n.mapb = p.mapb
8. Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE GioiTinh = 'Nam' or
Luong >2001
9. Đâu không phải là cách sử dụng Index hợp lý:
Nên tạo Index trên các cột mà có giá trị là chuỗi hơn là giá trị Interger.
10. Câu lệnh nào sau đây chưa tối ưu so với các câu còn lại:
SELECT * FROM NhanVien n LEFTJOIN PhongBan p WHERE n.mapb = p.mapb and Luong
>= 2000
Tng h p
1. B ng View có ch a d li u th t không?
Không
2. View là gì?
Là m t b ng d li u có n t câu l nh SQL nào ảo trong cơ sở ội dung được định nghĩa thông qua mộ
đó.
3. Câu l lo i b VIEW V1 kh d li u? ệnh nào sau đây dùng để ỏi cơ sở
DROP VIEW V1
4. Câu l d ng index trên c t MaNV và index không b m t hi u l c? ệnh nào sau đây có sử
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE MaNV LIKE 'NV%'
5. i là cách s d ng Index h p lý: Đâu không phả
Nên t o Index trên các c t mà có giá tr là chu Interger. ỗi hơn là giá trị
6. M t th t c t ng th c hi i d li u trong 1 table c a SQL Server thông qua ục đượ độ ện khi ta thay đổ
các l ệnh Update, Insert, Delete, đó là:
Trigger
7. Khi mu n th c thi m t Store Procedure tên P1 có m t bi n X ki u s nguyên ta th c hi n l nh ế
sau:
EXEC P1 5
8. Trigger dùng For/After có th u trigger cho m i thao tác trên cùng 1 b ng không? định nghĩa nhiề
Đúng
9. Ch n câu phát bi u sai:
Ta có th xóa d li u trong logic table
10. Cursor là:
Là m t ki u d li c bi k t qu c a l nh SELECT trong quá trình l p ệu đặ ệt, được dùng để lưu trữ ế
trình
11. Ch n câu phát bi u sai:
Function có th g i Procedure
12. Các ch m c xây d ng d a trên m t hay m t s ục (Index) đượ Field trong table. Khi đó các Field
này được gi là:
The Index Key
13. c t a các c t nonvariable-length trong m t index là bao nhiêu? Kích thướ ối đa củ
900
14. Index có th c t o trên lo ng: đượ ại đối tượ
5
Table và view
15. M t ch m c t ng t o trên c t làm khoá chính khi th c hi n l nh t o table Student. Ch ục đượ độ
mc này thu c lo i nào:
CREATE TABLE student
(
student_id int PRIMARY KEY,
lname char(15),
fname char(15)
)
Clustered, Unique index
16. N c Windows Authentication, b n ph i cung c p cho h ếu SQL Server dùng phương pháp xác thự
thng m p (login ID, login password) một mã đăng nhậ i khi truy cp vào SQL Sever.
Sai
17. SQL Server ki i dùng h p l hai c c Windows Authentication: ểm tra ngườ ấp độ: ….. hoặ
SQL Server Authentication
18. Server role nào sau m nh bao g m các thành viên c a nhóm Administrator c a Windows? ặc đị
Sysadmin
19. Các ki i lock trong transaction: ểu lock nào sau đây không phả
Unlock
20. Phát bi thu c tính Atomicity c a 1 Transaction? ểu nào sau đây mô tả
M i ch nh s a trong 1 transaction ho t ho c không có 1 ch nh s ặc được thi hành hế a nào
được thc hin
PHN T LU N (8 m) điể
CÂU 1: [2 m] Tìm ph t i thi u điể
Cho lược đồ quan hệ ) và tập các phụ thuộc hàm: R (ABCDEG
F = {AB→ C, AC→D, D→EG, G→B, A→D, CG→A}
Hãy tìm ph t i thi u c a F ( sinh viên ch c n ghi k t qu Ph t i thi u cu i cùng vào ế
đây):
Gii
Bướ ế c 1: Tách v ph i ph thu c hàm:
AB → C, AC → D, , G → B, A → D, CG → AD → E, D → G
Bước 2: Kim tra các ph thu a hay không: ộc hàm đã tách có dư thừ
AB → C, AC → D, D → E, D → G, G → B, A → D, CG → A
ABC: tính AB+ không dùng AB
C ABDEG, AB+ = { } không có C v y là không AB C
tha.
ACD: tính AC+ không dùng AC
D, AC+ = {ACDEGB} có D v y AC D
là dư thừa.
DE: tính D+ không dùng D
E, D+ = { } không có E v y là không th a. DGB D
E
DG: tính D+ không dùng D
G, D+ = { } không có G v y DE D G
là không th a.
GB: tính G+ không dùng G
B, G+ = {G} không có B v y là không th a. G
B
AD: tính A+ không dùng A D
, A+ = { } không có D v y là không th a. A A
D
6
CGA: tính CG+ không dùng CG A
, CG+ = {CGB} không có A v y là không CG A
tha.
Kết qu Bước 2:
AB → C, D → E, D → G, G → B, A → D, CG → A
Bướ ếc 3: B các thu a ộc tính dư thừ v trái:
AB → C, D → E, D → G, G → B, A → D, CG → A
ABC th b A tính B+ không dùng AB
C C mà dùng B
, B+ = { C} không ch a A v y B
A không th a.
ABC th b B tính A+ không dùng AB
C A C mà dùng
, A+ = { CDGBE} A có ch a B
v a.ậy B là dư thừ
B B: A → C, D → E, D → G, G → B, A → D, CG → A
CGA th b C tính G+ không dùng CG
A mà dùng , G+ = { ADEBC} G A
G có ch a C
v a.ậy C là dư thừ
B C: A → C, D → E, D → G, G → B, A → D, G → A
Kết qu Bước 3:
A → C, D → E, D → G, G → B, A → D, G → A
Kết lun: Ph t i thiu
A → C, D → E, D → G, G → B, A → D, G → A
CÂU 2: [2 m] T n điể ối ưu hóa câu truy v
Cho lược đồ cơ sở ệu như sau: d li
SACH (Ma_sach, Ten_sach, Tac_gia, Ma_XB)
NHA_XUAT_BAN (Ma_XB, Ten_XB, Dia_chi, Thanh_pho)
DOC_GIA (So_the, Ten_DG, Dia_chi, Thanh_pho)
MUON_SACH (So_the, Ma_sach, Ngay_muon)
a) Hãy vi t câu truy v n SQL ế cho bi t c gi , tên sách n nh ng cu n sách c ế tên độ đã mượ trướ
ngày 27/09/2020. [0.5 điểm] - Sinh viên ghi câu Query SQL
SELECT Ten_DG, Ten_sach
FROM SACH S, DOC_GIA D, MUON_SACH M
WHERE S.Ma_sach = M.Ma_sach AND D.So_the = M.So_the
AND Ngay_muon < ‘27/09/2020’
b) T nh truy v n Câu a) ối ưu hoá câu lệ [1.5 điểm] Sinh viên không c n v cây, ch
cn ghi k t qu cu i cùng theo m u cho s i u). ế ẵn bên dướ (lưu ý dưới đây là m
7
Ten_DG, Ten_sach
Ngay_muon<’27/09/2020’
((SACH MUONSACH)
DOC_GIA)
8
So_the=So_the
R1 =
So_The, Ten_DG
DOC_GIA
R2 =
So_the, Ten_sach Ma_sach, Ten_sach Ma_sach, So_the
( SACH
Ngay_muon<’27/09/2020’
MUON_SACH)
KQ =
Ten_DG, Ten_sach
(R1 R2)
CÂU 3: [2 m] Ch m c điể
Cho lược đồ cơ sở ệu như sau: d li
a) Hãy vi t câu truy v n SQL t o 2 ch m m] ế ục sau: [1 điể
Ma_sach=Ma_sach
9
a.1) T o tên CI_LOPHOC_MALOP trên c t MALOP c a CLUSTERED INDEX
bng LOPHOC, c t MALOP gi m d n? [0.5 điểm]
CREATE CLUSTERED INDEX CI_LOPHOC_MALOP
ON LOPHOC (MALOP DESC)
a.2) T o tên là UI_KHOAHOC_TENKH UNIQUE NON-CLUSTERED INDEX
trên c t TENKH c a b ng KHOAHOC và thêm option n ếu đã có Index trùng tên này
r i thì xóa Index cũ trư c đó? [0.5 điểm]
CREATE UNIQUE NON-CLUSTERED INDEX UI_KHOAHOC_TENKH
ON KHOAHOC (TENKH)
WITH DROP_EXISTING
b) Hãy vi t l i các câu truy v sargable m] ế ấn sau để : [1 điể
b.1) Câu truy v n 1: m] [0.5 điể
Hãy cho bi t mã, h tên c a nh ng h c viên tu i t 18 tr lên (Index trên ế
trường NTNS).
SELECT MAHV,HO, TEN
FROM HOCVIEN
WHERE DATEDIFF(YEAR, NTNS, GETDATE()) >= 18
Viết l i câu sargable:
SELECT MAHV, HO, TEN
FROM HOCVIEN
WHERE NTNS <= DATEADD(YEAR, -18, GETDATE())
b.2) Câu truy v n 2: m] [0.5 điể
Hãy cho bi t mã l p, phòng h c c a nh ng l p h c mà có 3 ký t bên trái trong ế
lp là 3 ký t t MALOP, LEFT là hàm l y ký t bên trái). “TRR” (Index trên cộ
SELECT MALOP,PHHOC
FROM LOPHOC
WHERE LEFT(MALOP,3) = ‘TRR
Viết l i câu sargable:
SELECT MALOP,PHHOC
FROM LOPHOC
WHERE MALOP LIKE ‘TRR%’
CÂU 4: [2 m] Giao tác điể
Trườ ng h p 1: Gi s TenKH hi n t i c ủa MaKH KH001 là “Nguyen Van An”
T1
T2
10
BEGIN TRAN
UPDATE KhachHang
SET TenKH= 'ABC'
WHERE MaKH= 'KH001'
WAITFOR DELAY '00:00:05'
ROLLBACK TRAN
SELECT TenKH
FROM KhachHang
WHERE MaKH = 'KH001'
BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED
SELECT TenKH
FROM KhachHang
WHERE MaKH = 'KH001'
COMMIT TRAN
Nhận xét kết quả 2 câu lệnh Select của T1 và T2?
Do là Read UnCommitted nên trong quá trình T1 vừa update xong tên khách hàng thì T2 có thể
đọc nội dung bảng Khách hàng mà không phải chờ, vì vậy lần đọc thứ nhất của T2 TenKH là
“ABC”, lần đọc thứ hai của T1 TenKH là “Nguyen Van An” do T1 sau khi cập nhật xong thì
Rollback hủy đi những gì đã thực hiện trước đó. Kết luận: kết quả đọc của T1 và T2 khác nhau,
T2 đọc dữ liệu rác.
Trườ ng h p 2: Gi s TenKH hi n t i c ủa MaKH KH001 là “Nguyen Van An”
T1
T2
BEGIN TRAN
UPDATE KhachHang
SET TenKH= 'ABC'
WHERE MaKH= 'KH001'
WAITFOR DELAY '00:00:05'
COMMIT TRAN
BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL
READ COMMITTED
SELECT TenKH
FROM KhachHang
WHERE MaKH = 'KH001'
COMMIT TRAN
SELECT TenKH
FROM KhachHang
WHERE MaKH = 'KH001'
11
Nhận xét kết quả 2 câu lệnh Select của T1 và T2?
Do là Read Committed nên trong quá trình T1 v a update xong tên khách hàng thì T2 không th
đọ c n i dung b ng Khách hàng mà ph i ch cho T1 th c hi n xong, sau khi th c hi n Update thì
T1 có commit l i nh c hi n. K t lu n: k t qu c c a T1 và T2 là gi ng nhau, tên ững gì đã thự ế ế đọ
Khách hàng là “ABC”.
Cho Lược đồ như sau: quan h
QuanHuyen (MaQH, TenQH)
Duong (MaDuong, TenDuong, MaQH, NgayDuyet)
NhaTrenPho (MaNha, ChuHo, DienTich, MaDuong, NgaySoHuu)
Câu 1: T o CLUSTERED INDEX tên là CI_NhaTrenPho_MaNha trên c t MaNha c a b ng
NhaTrenPho
CREATE CLUSTERED INDEX CI_NhaTrenPho_MaNha
ON ) NhaTrenPho (MaNha DESC
Câu 2: T o Unique Non-Clustered Index tên là UI_QuanHuyen_TenQH trên c t TenQH c a
bng QuanHuyen, n u Index b . ế trùng tên thì xóa cái cũ đi
CREATE UNIQUE NONCLUSTERED INDEX UI_QuanHuyen_TenQH
ON ) QuanHuyen (TenQH
WITH DROP EXISTING
Câu 3: Hãy vi t l i các câu truy v sargable ế ấn sau để
3.1) Hãy tìm t t c nh ng Nhà trên ph thu c lo c là ký t u tiên trong Mã ại nhà Chung cư, tứ đầ
nhà là ký t “C”.
SELECT *
FROM NhaTrenPho
WHERE SUBSTRING(MANHA, 1, 1) = ‘C’
SUBSTRING(MANHA, 2 , 1) = ‘C’
RIGHT(MANHA, 2) = ‘CA’
-----
SELECT *
FROM NhaTrenPho
WHERE MANHA LIKE ‘C%
MANHA LIKE ‘_C%’
MANHA LIKE ‘%CA’
3.2) Hãy tìm t t c nh ng Nhà trên ph có ngày s h s index ữu trong tháng 9 năm 2020 (giả
trên trường NgaySoHuu).
SELECT *
FROM NhaTrenPho
WHERE MONTH(NgaySoHuu) = 9 AND YEAR(NgaySoHuu) = 2020
-----
SELECT *
FROM NhaTrenPho
WHERE NgaySoHuu >= AND NgaySoHuu <= ‘2020/9/1’ ‘2020/9/30’
12
3.3) Hãy tìm t t c nh ng có ngày duy s index trên ững con Đườ ệt vào ngày ‘2020/9/2’ (giả
trường NgayDuyet)
SELECT *
FROM Duong
WHERE CONVERT(VARCHAR, NgayDuyet, 103) = ‘2020/9/2’
-----
SELECT *
FROM Duong
WHERE NgayDuyet > AND NgayDuyet < = ‘2020/9/2’ ‘2020/9/3’
Cho lược đồ quan hệ R (ABCDEG) và tập phụ thuộc hàm:
F= {B → C, DEG → B, A → D, A → E, A → G}
Tìm ph t i thi u c a F.
---------
Gii:
Bướ ế c 1: Tách v ph i ph thu c hàm:
B → C; DEG → B; A → D; A → E; A → G
Bước 2: Kim tra các ph thu a hay không: ộc hàm đã tách có dư thừ
B → C; DEG → B; A → D; A → E; A → G
BC: tính B+ không dùng B
C, B+ = { } không có C v y là không th a. B B
C
DEGB: tính DEG+ không dùng DEG
B, DEG+ = { } không có B v y DEG DEG
B
không th a.
AD: tính A+ không dùng A D
, A+ = { } không có D v y là không th a. AEG A
D
AE: tính A+ không dùng A
E, A+ = { } không có E v y là không th a. ADG A
E
AG: tính A+ không dùng A
G, A+ = { } không có G v y ADE A
G là không th a.
Vy ph thu ộc hàm không thay đổi:
B → C; DEG → B; A → D; A → E; A → G
Bướ ếc 3: B các thu a ộc tính dư thừ v trái:
B → C; DEG → B; A → D; A → E; A → G
DEGB th b D tính EG+ không dùng DEG
B mà dùng , EG+ = { GBC} không EG
B E
cha D v y D không th a.
DEGB th b E tính DG+ không dùng DEG
B mà dùng , DG+ = { GBC} DG
B D
không ch a E v y E không th a.
DEGB th b G tính DE+ không dùng DEG
B mà dùng DE
B, DE+ = { EBC} không D
cha G v y G không th a.
Vy ph thu ộc hàm không thay đổi
Kết lun: Ph t i thiu
B → C; DEG → B; A → D; A → E; A → G
13
Bài m u
Bài 2: Cho lược đồ quan h Q(ABCDEGH) và t p ph thu c hàm:
F = { E → C; H → E; A→ D; AE → H; DG → B; DG → C }
Tìm ph t i thi u c a F.
Gii:
Bước 1: Tách v ph i phế thu c hàm:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
Bước 2: Ki m tra các ph thu ộc hàm đã tách có dư thừa hay không:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
EC: tính E+ không dùng , E+ = { } không có C vE C
E y là không th a. E C
HE: tính H+ không dùng H
E, H+ = {H} không có E vy là không th a. H
E
AD: tính A+ không dùng , A+ = {A D
A} không có D vy là không th a. A D
AEH: tính AE+ không dùng AE
H, AE+ = { } không có H v y là không th a. AECD AE
H
DGB: tính DG+ không dùng , DG+ = { } không có B v y là không th a. DG
B DGC DG B
DGC: tính DG+ không dùng , DG+ = { } không có C v y là không th a. DG C
DGB DG
C
Vy ph thu ộc hàm không thay đổi:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
Bước 3: B các thu ộc tính dư thừa vế trái
E → C; H → E; A→ D; AE → H; DG → B; DG → C
AEH th b A tính E+ không dùng AE
H mà dùng , E+ = {E
H EHC} không ch a A v y A
không th a.
AEH th b E tính A+ không dùng AE
H mà dùng , A+ = { HDEC} A
H A có ch a E v y E
th a.
B E:
E → C; H → E; A→ D; A → H; DG → B; DG → C
DGB th b D tính G+ không dùng DG
B mà dùng , G+ = { B} không ch a D vG
B G y D
không th a.
DGB th b G tính D+ không dùng DG
B mà dùng , D+ = { B} không ch a G v y G D
B D
không th a.
DGC th b D tính G+ không dùng DG
C mà dùng , G+ = {G C
GC} không ch a D v y D
không th a.
DGC th b G tính D+ không dùng DG
C mà dùng , D+ = { C} không ch a G v y G D C
D
không th a.
Kết lu n: Ph t i thi u
E → C; H → E; A→ D; A → H; DG → B; DG → C
| 1/13

Preview text:

PHN TRC NGHIM (2 điểm)
Chương 2: Khung nhìn
1. Bảng View có chứa dữ liệu thật không? Có
2. Có thể có một bảng View không có chứa dữ liệu nào không? Có
3. Nếu xoá toàn bộ dữ liệu trong bảng View, dữ liệu trong bảng nguồn có mất đi hết dữ liệu không? Lúc có lúc không
4. Bảng View có thể dùng được với các câu lệnh Select, Insert, Update, Delete không? Lúc có lúc không
5. Khi xoá một hàng trong bảng View thì hàng dữ liệu đó trong bảng nguồn có bị xoá đi không? Lúc có lúc không
6. Có thể thông qua bảng View để thêm mới một hàng dữ liệu trong bảng nguồn được không? Lúc có lúc không 7. View là gì?
Là một bảng ảo trong cơ sở dữ liệu có nội dung được định nghĩa thông qua một câu lệnh SQL nào đó.
8. Câu lệnh nào sau đây dùng để loại bỏ VIEW V1 khỏi cơ sở dữ liệu? DROP VIEW V1
9. Từ khóa nào sau đây dùng để ngăn cản các thao tác cập nhật dữ liệu (thêm, sửa) tác động trực tiếp
vào View có làm ảnh hưởng dữ liệu đối với View có sử dụng mệnh đề WHERE trong câu lệnh SELECT? WITH CHECK OPTION
Chương 3: Stored Procedure & Trigger
1. Khi muốn thực thi một Store Procedure tên P1 có một biến X kiểu số nguyên ta thực hiện lệnh sau: EXEC P1 5
2. Cho hai Table TOUR VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình sau:
Cho biết ý nghĩa của Procedure sau: CREATE PROC P3 AS
SELECT A.MATOUR ,LOTRINH, SUM(SONGUOI*GIATOUR) DOANHTHU FROM TOUR A, TTDK B WHERE A.MATOUR=B.MATOUR GROUP BY A.MATOUR, LOTRINH ORDER BY DOANHTHU
Tính doanh thu của các tour
3. Trigger dùng Instead Of có thể định nghĩa nhiều trigger cho mỗi thao tác trên cùng 1 bảng không? Sai
4. Hai bảng nào được phép dùng trong UPDATE Trigger?
Bảng inserted và bảng deleted 1
5. Cho hai Table TOUR VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình sau: Cho bi
ết kết quả khi thực thi Procedure P1 sau: CREATE PROC P1 AS
SELECT SUM(SONGUOI) TONGSONGUOI FROM TOUR A, TTDK B
WHERE A.MATOUR=B.MATOUR AND A.MATOUR =’T1’
Tất cả các câu còn lại đều sai
6. Khi muốn tạo một Store Procedure có một biến kiểu ký tự ta thực hiện k hai báo như sau:
CREATE PROCEDURE SP1 @X VARCHAR(50)
7. Một thủ tục được tự động thực hiện khi ta thay đổi dữ liệu trong 1 table của SQL Server thông qua
các lệnh Update, Insert, Delete, đó là: Trigger
8. Khi muốn khai báo một biến X có kiểu dữ liệu là số nguyên trong SQL ta khai báo: DECLARE @X INT
9. Cần phải viết 3 Trigger cho 3 hành động Insert/Update/Delete riêng ra trên 1 bảng? Sai 10. Chọn câu phát biểu sai:
Ta có thể xóa dữ liệu trong logic table
Chương 4: Function & Cursor 1. Cursor là:
Là một kiểu dữ liệu đặc biệt, được dùng để lưu trữ kết quả của lệnh SELECT trong quá trình lập trình
2. Hàm nào sau đây không phải là hàm của người dùng (user – defined function) Hàm bảo mật (security)
3. Kết quả trả về của hàm DBO.TEST (6,2 ) sau là:
CREATE FUNCTION TEST(@X INT,@Y INT) RETURNS INT AS BEGIN DECLARE @T INT =0
IF (@Y%@X=0) ---%: chia lấy số dư SET @T=@Y%@X ELSE SET @T=@Y+@X RETURN @T END 8
4. Khi muốn tạo một Function tên F1 có một biến X kiểu ký tự ta thực hiện khai báo như sau:
CREATE FUNCTION F1 (@X VARCHAR(10))
5. Khi muốn thực thi một hàm tên F1 có một biến X kiểu số nguyên ta thực hiện lệnh như sau: PRINT dbo.F1 (10) 6. Chọn câu phát biểu sai:
Function có thể gọi Procedure 2
7. Cho hai Table TOUR VÀ TTDK (thông tin đăng ký) có quan hệ dữ liệu như hình sau:
Muốn tính tổng số lần đăng ký của các tour ta phải thực hiện lựa chọn nào: CREATE FUNCTION F2()
RETURNS TABLE AS RETURN (SELECT MATOUR, SOLAN=COUNT(SOPHIEU) FROM TTDK GROUP BY MATOUR)
8. Giá trị trả về của một hàm (Function) phải là:
Một Table hoặc một giá trị
9. Trong cú pháp khai báo con trỏ (Cursor), từ khóa Scroll có nghĩa là:
Có thể duyệt lên xuống cursor tùy ý (duyệt theo đa chiều) 10. dùng sau:
Xác định loại cho hàm của người
CREATE FUNCTION fn_Pub (@CountryPar nvarchar(30)) RETURNS table AS
RETURN (SELECT pub_Id, pub_Name FROM pubs. dbo. Publishers WHERE country = @CountryPar) -
Hàm nội tuyến/giá trị bảng đơn giản (Inline table valued)
Chương 10: Giao tác và truy xuất đồng thời
1. Lệnh nào là lệnh kết thúc một Transaction: SAVE TRANSACTION
2. Các kiểu lock nào sau đây không phải lock trong transaction: Unlock
3. Phát biểu nào sau đây mô tả thuộc tính Atomicity của 1 Transaction?
Mọi chỉnh sửa trong 1 transaction hoặc được thi hành hết hoặc không có 1 chỉnh sửa nào được thực hiện
4. Lệnh nào cho phép quay trở thời điểm bắt đầu của Transaction hoặc là một vị trí nào đó được đánh dấu: ROLLBACK TRANSACTION
5. Cô Châu cần chèn 1 điểm dừng (Save Point) có tên là ‘Returnback’ vào Transaction, thì Cô nên dùng lệnh nào sau đây: SAVE TRANSACTION Returnback
6. Ý nghĩa của nhóm lệnh BEGIN TRAN… COMMIT là gì?
Mở transaction bằng lệnh BEGIN TRAN và kết thúc bằng lệnh COMMIT – sau lệnh này những
cập nhật dữ liệu sẽ được xác nhận vào trong database
7. Nếu thiếu cơ chế khoá thì vấn đề nào sẽ xảy ra khi 2 hay nhiều transaction đều chỉnh sửa cùng 1 hàng dữ liệu:
Mất dữ liệu cập nhật (Lost updates)
8. Lỗi nào sau đây không phải lỗi xảy ra truy xuất đồng thời?
Đọc không cùng nội dung (Inconsistent Analysis)
9. Thuộc tính nào của Transaction bảo đảm tính tuần tự? Isolation
10. TRANSACTION trong SQL có các thuộc tính thường được viết tắt là ACID nghĩa là gì?
Atomicity, Consistency, Isolation, Durability
Chương 11: Kĩ thuật tối ưu hóa truy vấn
1. Đâu không phải là nguyên nhân làm chậm truy vấn:
Không dùng Stored Procedure 3
2. Câu lệnh nào sau đây có sử dụng index trên cột MaNV và index không bị mất hiệu lực?
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE MaNV LIKE 'NV%' 3.
Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi,DienThoai FROM NhanVien n LEFTJOIN PhongBan
p WHERE n.mapb = p.mapb and NgaySinh < DATEADD(YEAR,-30,GETDATE()) 4.
Câu lệnh nào sau đây tối ưu so với các câu còn lại:
IF EXISTS (SELECT MaNV FROM NhanVien WHERE GioiTinh = 'Nam' or Luong >2001) 5.
Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE Luong > 2001 OR MaPB = 1
6. Đâu không phải là phương pháp cải tiến để tối ưu hóa câu truy vấn? Sử dụng Trigger 7.
Câu lệnh nào sau đây chưa tối ưu so với các câu còn lại:
SELECT * FROM NhanVien n LEFTJOIN PhongBan p WHERE n.mapb = p.mapb 8.
Câu lệnh nào sau đây tối ưu so với các câu còn lại:
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE GioiTinh = 'Nam' or Luong >2001
9. Đâu không phải là cách sử dụng Index hợp lý:
Nên tạo Index trên các cột mà có giá trị là chuỗi hơn là giá trị Interger. 10.
Câu lệnh nào sau đây chưa tối ưu so với các câu còn lại:
SELECT * FROM NhanVien n LEFTJOIN PhongBan p WHERE n.mapb = p.mapb and Luong >= 2000
Tng hp
1. Bảng View có chứa dữ liệu thật không? Không 2. View là gì? Là một bảng d
ảo trong cơ sở ữ liệu có nội dung được định nghĩa thông qua một câu lệnh SQL nào đó.
3. Câu lệnh nào sau đây dùng để loại b V ỏ IEW V1 khỏi cơ sở d l ữ iệu? DROP VIEW V1
4. Câu lệnh nào sau đây có sử d ng i ụ ndex trên c t
ộ MaNV và index không bị mất hiệu l c ự ?
SELECT MaNV, TenNV,TenPHG, DiaChi FROM NhanVien WHERE MaNV LIKE 'NV%'
5. Đâu không phải là cách s d ử ng I ụ ndex hợp lý:
Nên tạo Index trên các c t
ộ mà có giá trị là chuỗi hơn là giá trị Interger. 6. M t ộ th t ủ ục được t ự ng t độ h c
ự hiện khi ta thay đổi dữ liệu trong 1 table c a ủ SQL Server thông qua
các lệnh Update, Insert, Delete, đó là: Trigger 7. Khi mu n t ố hực thi m t
ộ Store Procedure tên P1 có m t
ộ biến X kiểu s nguyên ta th ố ực hiện lệnh sau: EXEC P1 5
8. Trigger dùng For/After có thể định nghĩa nhiều trigger cho m i
ỗ thao tác trên cùng 1 bảng không? Đúng 9. Ch n c ọ âu phát biểu sai: Ta có thể xóa d l ữ iệu trong logic table 10. Cursor là:
Là một kiểu dữ liệu đặc biệt, được dùng để k
lưu trữ ết quả của lệnh SELECT trong quá trình lập trình 11. Ch n c ọ âu phát biểu sai: Function có thể g i ọ Procedure
12. Các chỉ mục (Index) được xây dựng dựa trên m t ộ hay m t ộ s
ố Field trong table. Khi đó các Field này được gọi là: The Index Key
13. Kích thước tối đa của các c t
ộ nonvariable-length trong m t ộ index là bao nhiêu? 900
14. Index có thể được tạo trên loại đối tượng: 4 Table và view 15. M t ộ chỉ m c ục đượ tự ng t độ ạo trên c t
ộ làm khoá chính khi thực hiện lệnh tạo table Student. Chỉ mục này thu c ộ loại nào: CREATE TABLE student ( student_id int PRIMARY KEY, lname char(15), fname char(15) ) Clustered, Unique index
16. Nếu SQL Server dùng phương pháp xác thực Windows Authentication, bạn phải cung cấp cho hệ
thống một mã đăng nhập (login ID, login password) mỗi khi truy cập vào SQL Sever. Sai
17. SQL Server kiểm tra người dùng hợp lệ ở hai cấp độ: ….. hoặc Windows Authentication: SQL Server Authentication
18. Server role nào sau mặc định bao g m ồ các thành viên c a ủ nhóm Administrator c a ủ Windows? Sysadmin 19. Các ki i
ểu lock nào sau đây không phả lock trong transaction: Unlock
20. Phát biểu nào sau đây mô tả thuộc tính Atomicity của 1 Transaction?
Mọi chỉnh sửa trong 1 transaction hoặc được thi hành hết hoặc không có 1 chỉnh sửa nào được thực hiện
PH
N T LUN (8 điểm)
CÂU 1: [2
điểm] Tìm ph ti thiu
Cho lược đồ quan hệ R (ABCDEG) và tập các phụ thuộc hàm:
F = {AB→ C, AC→D, D→EG, G→B, A→D, CG→A}
Hãy tìm phủ tối thiểu của F (sinh viên ch cn ghi kết qu Ph ti thiu cui cùng vào đây): Gii
Bước 1: Tách vế phi ph thuc hàm:
AB → C, AC → D, D → E, D → G, G → B, A → D, CG → A
Bước 2: Kim tra các ph thu a h
ộc hàm đã tách có dư thừ ay không:
AB → C, AC → D, D → E, D → G, G → B, A → D, CG → A
 ABC: tính AB+ không dùng ABC, AB+ = {ABDEG} không có C vậy ABC  là không thừa.
 ACD: tính AC+ không dùng ACD, AC+ = {ACDEGB} có D vậy ACD  là dư thừa.
 DE: tính D+ không dùng DE, D+ = {DGB} không có E vậy DE là không thừa.
 DG: tính D+ không dùng DG, D+ = {DE} không có G vậy DG  là không thừa.
 GB: tính G+ không dùng GB, G+ = {G} không có B vậy GB là không th a ừ .
 AD: tính A+ không dùng AD
 , A+ = {A} không có D vậy AD là không th a ừ . 5 ậ CGA
 CGA: tính CG+ không dùng CGA
 , CG+ = {CGB} không có A v y  là không thừa. Kết quả Bước 2:
AB → C, D → E, D → G, G → B, A → D, CG → A
Bước 3: B các thuộc tính dư thừ ở a ế v trái:
AB → C, D → E, D → G, G → B, A → D, CG → A
 ABC thử bỏ A tính B+ không dùng ABC mà dùng BC
 , B+ = {BC} không ch a ứ A vậy A không thừa.
 ABC thử bỏ B tính A+ không dùng ABC mà dùng AC
 , A+ = {ACDGBE} có ch a ứ B vậy B là dư thừa.
Bỏ B: A → C, D → E, D → G, G → B, A → D, CG → A
 CGA thử bỏ C tính G+ không dùng CGA mà dùng GA
 , G+ = {GADEBC} có ch a ứ C vậy C là dư thừa.
Bỏ C: A → C, D → E, D → G, G → B, A → D, G → A Kết quả Bước 3:
A → C, D → E, D → G, G → B, A → D, G → A
K
ết lun: Ph ti thiu A → C, D → E, D → G, G → B, A → D, G → A
CÂU 2: [2 điểm] Tối ưu hóa câu truy vấn Cho lược đồ cơ sở dữ liệu như sau:
SACH (Ma_sach, Ten_sach, Tac_gia, Ma_XB)
NHA_XUAT_BAN (Ma_XB, Ten_XB, Dia_chi, Thanh_pho)
DOC_GIA (So_the, Ten_DG, Dia_chi, Thanh_pho)
MUON_SACH (So_the, Ma_sach, Ngay_muon)
a) Hãy viết câu truy vấn SQL cho biết tên độc giả, tên sách đã mượn nh ng cu ữ n s ố ách trước
ngày 27/09/2020. [0.5 điểm] - Sinh viên ghi câu Query SQL SELECT Ten_DG, Ten_sach
FROM SACH S, DOC_GIA D, MUON_SACH M
WHERE S.Ma_sach = M.Ma_sach AND D.So_the = M.So_the
AND Ngay_muon < ‘27/09/2020’
b) Tối ưu hoá câu lệnh truy vấn ở Câu a) [1.5 điểm] Sinh viên không cn v cây, ch
cn ghi kết qu cui cùng theo mu cho sẵn bên dưới (lưu ý dưới đây là mẫu). 6 Ten_DG, Ten_sach
Ngay_muon<’27/09/2020’ ((SACH MUONSACH) DOC_GIA) 7
R1 = So_The, Ten_DG DOC_GIA
R2
= So_the, Ten_sach ( Ma_sach, Ten_sach SACH
Ma_sach, So_the Ma_sach=Ma_sach
Ngay_muon<’27/09/2020’ MUON_SACH)
KQ = Ten_DG, Ten_sach (R1 R2) So_the=So_the
CÂU 3: [2
điểm] Ch mc
Cho lược đồ cơ sở dữ liệu như sau:
a) Hãy viết câu truy vn SQL to 2 ch mục sau: [1 điểm] 8
a.1) Tạo CLUSTERED INDEX tên là CI_LOPHOC_MALOP trên cột MALOP của
bảng LOPHOC, cột MALOP giảm dần? [0.5 điểm]
CREATE CLUSTERED INDEX CI_LOPHOC_MALOP ON LOPHOC (MALOP DESC)
a.2) Tạo UNIQUE NON-CLUSTERED INDEX tên là UI_KHOAHOC_TENKH
trên cột TENKH của bảng KHOAHOC và thêm option nếu đã có Index trùng tên này
rồi thì xóa Index cũ tr ớ
ư c đó? [0.5 điểm]
CREATE UNIQUE NON-CLUSTERED INDEX UI_KHOAHOC_TENKH ON KHOAHOC (TENKH) WITH DROP_EXISTING
b) Hãy viết li các câu truy vấn sau để sargable: [1 điểm]
b.1) Câu truy vn 1: [0.5 điểm]
Hãy cho biết mã, họ và tên của những học viên có tuổi từ 18 trở lên (Index trên trường NTNS). SELECT MAHV,HO, TEN FROM HOCVIEN
WHERE DATEDIFF(YEAR, NTNS, GETDATE()) >= 18
 Viết lại câu sargable: SELECT MAHV, HO, TEN FROM HOCVIEN
WHERE NTNS <= DATEADD(YEAR, -18, GETDATE())
b.2) Câu truy vn 2: [0.5 điểm]
Hãy cho biết mã lớp, phòng học của những lớp học mà có 3 ký tự bên trái trong Mã
lớp là 3 ký tự “TRR” (Index trên cột MALOP, LEFT là hàm lấy ký tự bên trái). SELECT MALOP,PHHOC FROM LOPHOC
WHERE LEFT(MALOP,3) = ‘TRR’
 Viết lại câu sargable: SELECT MALOP,PHHOC FROM LOPHOC
WHERE MALOP LIKE ‘TRR%’
CÂU 4: [2
điểm] Giao tác
Trường hp 1: Gi s TenKH hin ti của MaKH KH001 là “Nguyen Van An” T1 T2 9 BEGIN TRAN UPDATE KhachHang SET TenKH= 'ABC' WHERE MaKH= 'KH001' WAITFOR DELAY '00:00:05' BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED SELECT TenKH FROM KhachHang WHERE MaKH = 'KH001' COMMIT TRAN ROLLBACK TRAN SELECT TenKH FROM KhachHang WHERE MaKH = 'KH001'
Nhận xét kết quả 2 câu lệnh Select của T1 và T2?
Do là Read UnCommitted nên trong quá trình T1 vừa update xong tên khách hàng thì T2 có thể
đọc nội dung bảng Khách hàng mà không phải chờ, vì vậy lần đọc thứ nhất của T2 TenKH là
“ABC”, lần đọc thứ hai của T1 TenKH là “Nguyen Van An” do T1 sau khi cập nhật xong thì
Rollback hủy đi những gì đã thực hiện trước đó. Kết luận: kết quả đọc của T1 và T2 khác nhau, T2 đọc dữ liệu rác.
Trường hp 2: Gi s TenKH hin ti của MaKH KH001 là “Nguyen Van An” T1 T2 BEGIN TRAN UPDATE KhachHang SET TenKH= 'ABC' WHERE MaKH= 'KH001' WAITFOR DELAY '00:00:05' BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED SELECT TenKH FROM KhachHang WHERE MaKH = 'KH001' COMMIT TRAN COMMIT TRAN SELECT TenKH FROM KhachHang WHERE MaKH = 'KH001' 10
Nhận xét kết quả 2 câu lệnh Select của T1 và T2?
Do là Read Committed nên trong quá trình T1 v a
ừ update xong tên khách hàng thì T2 không thể
đọc nội dung bảng Khách hàng mà phải chờ cho T1 thực hiện xong, sau khi thực hiện Update thì
T1 có commit lại những gì đã thực hiện. Kết luận: kết quả c
đọ của T1 và T2 là gi ng nhau, tên ố Khách hàng là “ABC”.
-----------------------o0o-----------------------
Cho Lược đồ quan hệ như sau: QuanHuyen (MaQH, TenQH)
Duong (MaDuong, TenDuong, MaQH, NgayDuyet)
NhaTrenPho (MaNha, ChuHo, DienTich, MaDuong, NgaySoHuu) Câu 1: T o C
LUSTERED INDEX tên là CI_NhaTrenPho_MaNha trên c t
MaNha ca b ng NhaTrenPho
CREATE CLUSTERED INDEX CI_NhaTrenPho_MaNh a
ON NhaTrenPho (MaNha DESC) Câu 2: T o U
nique Non-Clustered Index tên là UI_QuanHuyen_TenQH trên c t
TenQH ca
bng QuanHuyen, nếu Index b trùng tên thì xóa cái cũ đi.
CREATE UNIQUE NONCLUSTERED INDEX UI_QuanHuyen_TenQH
ON QuanHuyen (TenQH) WITH DROP EXISTING
Câu 3: Hãy viết l i
các câu truy vấn sau để sargable
3.1) Hãy tìm tt c nhng Nhà trên ph thu c
loại nhà Chung cư, tức là ký t u
đầ tiên trong Mã
nhà là ký t “C”. SELECT * FROM NhaTrenPho
WHERE SUBSTRING(MANHA, 1, 1) = ‘C’
SUBSTRING(MANHA, 2, 1) = ‘C’ RIGHT(MANHA, 2) = ‘CA’ ----- SELECT * FROM NhaTrenPho WHERE MANHA LIKE ‘C%’ MANHA LIKE ‘_C%’ MANHA LIKE ‘%CA’
3.2) Hãy tìm tt c nhng Nhà trên ph c
ó ngày s hữu trong tháng 9 năm 2020 (giả s index
trên trường NgaySoHuu). SELECT * FROM NhaTrenPho
WHERE MONTH(NgaySoHuu) = 9 AND YEAR(NgaySoHuu) = 2020 ----- SELECT * FROM NhaTrenPho WHERE NgaySoHuu >= A
‘2020/9/1’ ND NgaySoHuu <= ‘2020/9/30’ 11
3.3) Hãy tìm tt c những con Đường có ngày duyệt vào ngày ‘2020/9/2’ (giả s index trên
trường NgayDuyet) SELECT * FROM Duong
WHERE CONVERT(VARCHAR, NgayDuyet, 103) = ‘2020/9/2’ ----- SELECT * FROM Duong
WHERE NgayDuyet >= ‘2020/9/2’ AND NgayDuyet < ‘2020/9/3’
Cho lược đồ quan hệ R (ABCDEG) và tập phụ thuộc hàm: F=
{B → C, DEG → B, A → D, A → E, A → G} Tìm ph t i
thiu ca F. --------- Gii:
Bước 1: Tách vế phi ph thuc hàm:
B → C; DEG → B; A → D; A → E; A → G
Bước 2: Kim tra các ph thu a h
ộc hàm đã tách có dư thừ ay không:
B → C; DEG → B; A → D; A → E; A → G
 BC: tính B+ không dùng BC, B+ = {B} không có C vậy BC là không thừa.
 DEGB: tính DEG+ không dùng DEGB, DEG+ = {DEG} không có B vậy DEGB là không th a ừ .
 AD: tính A+ không dùng AD
 , A+ = {AEG} không có D vậy AD là không th a ừ .
 AE: tính A+ không dùng AE, A+ = {ADG} không có E vậy AE là không thừa.
 AG: tính A+ không dùng AG, A+ = {ADE} không có G vậy AG là không thừa. Vậy ph t
ụ huộc hàm không thay đổi:
B → C; DEG → B; A → D; A → E; A → G
Bước 3: B các thuộc tính dư thừ ở a ế v trái:
B → C; DEG → B; A → D; A → E; A → G
 DEGB thử bỏ D tính EG+ không dùng DEGB mà dùng EGB, EG+ = {EGBC} không
chứa D vậy D không thừa.
 DEGB thử bỏ E tính DG+ không dùng DEGB mà dùng DGB, DG+ = {DGBC}
không chứa E vậy E không th a ừ .
 DEGB thử bỏ G tính DE+ không dùng DEGB mà dùng DEB, DE+ = {DEBC} không
chứa G vậy G không thừa. Vậy ph t
ụ huộc hàm không thay đổi
Kết lun: Ph ti thiu
B → C; DEG → B; A → D; A → E; A → G 12 Bài m u
Bài 2: Cho lược đồ quan h Q(ABCDEGH) và tp ph thuc hàm:
F = { E → C; H → E; A→ D; AE → H; DG → B; DG → C }
Tìm ph ti thiu ca F. Gii:
Bước 1: Tách vế phi ph thuc hàm:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
Bước 2: Kim tra các ph thuộc hàm đã tách có dư thừa hay không:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
 EC: tính E+ không dùng EC
 , E+ = {E} không có C vậy EC  là không thừa.
 HE: tính H+ không dùng HE, H+ = {H} không có E vậy HE là không thừa.
 AD: tính A+ không dùng AD
 , A+ = {A} không có D vậy AD  là không thừa.
 AEH: tính AE+ không dùng AEH, AE+ = {AECD} không có H vậy AEH là không thừa.
 DGB: tính DG+ không dùng DGB, DG+ = {DGC} không có B vậy DGB  là không thừa.
 DGC: tính DG+ không dùng DGC
 , DG+ = {DGB} không có C vậy DGC là không thừa.
Vậy phụ thuộc hàm không thay đổi:
E → C; H → E; A→ D; AE → H; DG → B; DG → C
Bước 3: B các thuộc tính dư thừa vế trái
E → C; H → E; A→ D; AE → H; DG → B; DG → C
 AEH thử bỏ A tính E+ không dùng AEH mà dùng EH, E+ = {EHC} không chứa A vậy A không thừa.
 AEH thử bỏ E tính A+ không dùng AEH mà dùng AH, A+ = {AHDEC} có cha E vy E tha. B E:
E → C; H → E; A→ D; A → H; DG → B; DG → C
 DGB thử bỏ D tính G+ không dùng DGB mà dùng GB, G+ = {GB} không chứa D vậy D không thừa.
 DGB thử bỏ G tính D+ không dùng DGB mà dùng DB, D+ = {DB} không chứa G vậy G không thừa.
 DGC thử bỏ D tính G+ không dùng DGC mà dùng GC
 , G+ = {GC} không chứa D vậy D không thừa.
 DGC thử bỏ G tính D+ không dùng DGC mà dùng DC
 , D+ = {DC} không chứa G vậy G không thừa.
Kết lun: Ph ti thiu
E → C; H → E; A→ D; A → H; DG → B; DG → C 13