Professional Documents
Culture Documents
Bai Tap Tuan 2 SQL
Bai Tap Tuan 2 SQL
cũng thường được gọi là bản ghi(record) hoặc dòng của Bảng(Row) vd: với lược
đồ quan hệ SINHVIEN ở ví dụ trên thì (20110057,Võ Quang
Hưng ,16/02/2002,Nam,8.51 ) là 1 bộ được thành lập dựa trên các thuộc tính
- Bậc (ngôi) của quan hệ là số thuộc tính của lược đồ quan hệ tương ứng ví dụ:
SINHVIEN(HoTen,MSSV,Ngaysinh,GioiTinh,DiemTB) có bậc là 5.
3. Why are tuples in a relation not ordered?
- Vì trong 1 bộ sẽ có 1 khóa chính để phân biệt các bộ còn lại nên không có bộ nào
trùng nhau vì thế việc sắp xếp là không quan trọng
4. Why are duplicate tuples not allowed in a relation?
- Nếu như trùng lặp nhau có thể khiến cho các dữ liệu bị sai vì lặp lại dữ liệu vì thế
mới có khóa chính để bắt buộc các dữ liệu không được giống nhau hoàn toàn
5. What is the difference between a key and a superkey?
- Khóa là 1 tập các thuộc tính để phân biệt các bộ với nhau và trong các thuộc tính
đó ta chọn 1 thuộc tính làm khóa chính và khóa chính không được để trống
6. Discuss the entity integrity and referential integrity constraints. Why is each
considered important?
- Toàn vẹn thực thể và toàn vẹn tham chiếu là hai dạng toàn vẹn dữ liệu đặc biệt
quan trọng trong cơ sở dữ liệu quan hệ. ... Nếu không có sự đảm bảo về tính
toàn vẹn của hai loại này, dữ liệu sẽ bị giảm hoặc bị trùng lặp. Thực thể và tính
toàn vẹn tham chiếu rất quan trọng trong cơ sở dữ liệu quan hệ
Exercises.
1. Given one possible database state for the COMPANY
relational database schema as follows:
lOMoARcPSD|22127631
- Suppose that each of the following Update operations is applied directly to the
database state shown above. Discuss all integrity constraints violated by each
operation, if any, and the different ways of enforcing these constraints.
lOMoARcPSD|22127631
a. Câu a: Câu lệnh thực hiện chèn 1 dòng vào bảng EMPLOYEE với dữ liệu
tương ứng từ trái sang phải
ta thấy bảng này có các RBTV:
-về miền giá trị: tất cả các dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng
với các cột.
-ràng buộc khóa ngoại(ràng buộc tham chiếu):
1.cột Super_Ssn là khóa ngoại tham chiếu đến cột Ssn và trong lệnh insert ở trên
người có mã “888665555” có trong bảng. Vậy ràng buộc này thỏa 2. Cột Dno là
khóa ngoại, tham chiếu đến cột Dnumber của bảng DEPARTMENT. Trong câu
lệnh insert trên giá trị cột Dno đc chèn là 1 có trong bảng DEPARTMENT nên
ràng buộc này thỏa
Kết luận:- câu lệnh trên có thể thực hiện mà không vi phạm ràng buộc b. Câu
b:Câu lệnh này thực hiện chèn 1 dòng vào bảng PROJECT với dữ liệu tương ứng
từ trái sang phải, ta xét 2 bảng PROJECT và DEPARTMENT Ta thấy 2 bảng này
có các RBTV:
- về miền giá trị( đối với PROJECT):tất cả đều thỏa tương ứng các cột. - RB về
khóa ngoại:cột Dnum bảng PROJECT là khóa ngoại tham chiếu với cột Dnumber
bảng DEPARTMENT. Câu lệnh trên cho thấy giá trị cột Dnum là 2 nhưng khi tra
vào cột Dnumber bảng DEPARTMENT thì lại không có. Vậy câu lệnh không thực
hiện được vì vi phạm ràng buộc
Kết luận: muốn thực hiện được dòng lệnh này ta phải chèn thêm dòng dữ liệu có
cột Dnumber là 2 cho bảng DEPARTMENT.
c. Câu c: Câu lệnh trên thực hiện chèn 1 dòng vào bảng DEPARTMENT với dữ
liệu tương ứng từ trái sang phải
Ta thấy bảng này có các RBTV:
-về miền giá trị: tất cả đều thỏa tương ứng các cột.
-RB về khóa ngoại: câu lệnh trên cho thấy giá trị cột Dnumber là 4 đã có trên bảng
và cột Dnumber lại là khóa chính không được phép trùng nên câu lệnh này không
thực hiện được vì vi phạm ràng buộc.
Kết luận: muốn thực hiện được dòng lệnh này ta phải thay đổi giá trị cột Dnumber
khác 4 để không bị trùng.
d. Câu d: Câu lệnh trên thực hiện chèn 1 dòng vào bảng WORKS_ON với dữ liệu
tương ứng từ trái sang phải, ta xét 2 bảng WORKS_ON và PROJECT Ta thấy 2
bảng này có các RBTV:
-về miền giá trị:tất cả đều thỏa tương ứng các cột của bảng WORKS_ON -RB về
khóa ngoại: cột Pno là khóa ngoại tham chiếu với cột Pnumber của bảng
PROJECT. Theo câu lệnh trên thì giá trị cột Pno là NULL trong khi cột Pnumber
lại không có giá trị đó vì thế lệnh không được thực hiện vì vi phạm ràng buộc Kết
luận: muốn lệnh được thực hiện ta phải thay đổi giá trị NULL của dòng lệnh thành
1 trong các giá trị có sẵn trong cột Pnumber của bảng PROJECT.
e. Câu e: Câu lệnh trên thực hiện chèn 1 dòng vào bảng DEPENDENT với dữ liệu
tương ứng từ trái sang phải.ta xét 2 bảng DEPARTMENT và DEPENDENT Ta
thấy 2 bảng này có các RBTV:
-về miền giá trị:tất cả các dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng với
các cột.
-ràng buộc về khóa ngoại:
1. cột Essn của bảng DEPENDENT là khóa ngoại tham chiếu với cột Ssn bảng
DEPARTMENT. Câu lệnh trên cho giá trị ở cột Essn là “453453453”, có giá trị
trên cột Ssn vì vậy thỏa ràng buộc này.
2. Giá trị “John” ở cột Dependent_name không bị trùng với các giá trị dòng khác
nên ràng buộc này thỏa.
Kết luận: câu lệnh này được thực hiện vì không vi phạm ràng buộc nào. f. Câu f:
Câu lệnh trên thực hiện xóa các bộ có giá trị ở cột Essn là “333445555” ở bảng
WORKS_ON. Ta xét 3 bảng WORKS_ON, EMPLOYEE, PROJECT. Ta thấy 3
bảng này có các RBTV về khóa ngoại:
1. cột Essn bảng WORKS_ON khóa ngoại tham chiếu với cột Ssn với bảng
EMPLOYEE. Theo câu lệnh trên thì xóa các bộ có giá trị “333445555” ở cột
Essn đi thì ở bảng EMPLOYEE vẫn còn giá trị đó vậy nên không vi phạm ràng
buộc.
2. Cột Pno bảng WORKS_ON khóa ngoại tham chiếu với cột Pnumber bảng
PROJECT. Theo câu lệnh trên khi xóa các bộ đó thì cũng không ảnh hưởng đến cột
Pnumber nên không vi phạm ràng buộc.
Kết luận: câu lệnh trên thực hiện được vì không vi phạm ràng buộc g. Câu g: Câu
lệnh trên thực hiện xóa những bộ có giá trị “987654321” ở cột Ssn bảng
EMPLOYEE. Ta xét cả 6 bảng.
Ta thấy 6 bảng này có các RBTV về khóa ngoại:
1. Cột Ssn của bảng EMPLOYEE khóa ngoại tham chiếu với các cột: Mgr_ssn
bảng DEPARTMENT, Essn của bảng WORKS_ON, Essn của bảng
DEPENDENT. Theo câu lệnh trên khi xóa bộ có giá trị “987654321” ở cột Ssn của
bảng EMPLOYEE thì sẽ vi phạm ràng buộc với những cột tham chiếu trên.
2. Cột Dno của bảng EMPLOYEE khóa ngoại tham chiếu với các cột:Dnumber ở
bảng DEPT_LOCATION, Dnumber ở bảng DEPARTMENT, Dnum ở bảng
PROJECT. Theo lệnh trên khi xóa bộ có giá trị “987654321” ở cột Ssn của bảng
EMPLOYEE sẽ không ảnh hưởng đến bảng PROJECT và DEPT_LOCATION
nhưng ảnh hưởng đến bảng DEPARTMENT. Vì thế lệnh này bị vi phạm ràng
buộc.
Kết luận: muốn thực hiện được câu lệnh trên ta phải thay đổi giá trị Mgr_ssn, và
Mgr_start_date ở bảng DEPARTMENT, xóa bộ có giá trị ở cột Essn "987654321”
ở bảng DEPENDENT, xóa các bộ có giá trị ở cột Essn “987654321” ở bảng
WORKS_ON. Sau đó thực hiện lệnh.
h. Câu h : Câu lệnh trên thực hiện xóa bộ có giá trị “ProductX” ở cột Pname bảng
PROJECT. Ta xét bảng PROJECT và WORKS_ON
ta thấy 2 bảng này có các RBTV về khóa ngoại:cột Pnumber ở bảng PROJECT là
khóa ngoại tham chiếu với cột Pno bảng WORKS_ON. Theo câu lệnh trên, xóa bộ
có giá trị cột Pname là “ProductX” sẽ làm mất giá trị “1” ở cột Pnumber vì thế các
bộ có giá trị cột Pno ở bảng WORKS_ON sẽ không có giá trị để tham chiếu vào vì
thế vi phạm ràng buộc
Kết luận:cần phải xóa các bộ có giá trị “1” cột Pno ở bảng WORKS_ON sau đó
mới thực hiện lệnh được.
i. Câu i: Câu lệnh trên thực hiện thay đổi bộ có giá trị ở cột Dnumber là “5” bằng
các giá trị “123456789” và “2007-10-01”.
Ta thấy bảng này có các RBTV:
-về miền giá trị:tất cả giá trị trên câu lệnh trên thỏa RBTV này tương ứng với các
cột.
-ràng buộc về khóa ngoại:không có
Kết luận: ta thực hiện được câu lệnh này vì không vi phạm ràng buộc j. Câu j: Câu
lệnh trên thực hiện thay đổi giá trị “999887777” thành “943775543” của cột Ssn
bảng EMPLOYEE. Ta xét 2 bảng EMPLOYEE và WORKS_OUT. Ta thấy 2 bảng
có các RBTV:
-về miền giá trị:giá trị thay đổi ở câu lệnh trên thỏa RBTV.
-ràng buộc về khóa ngoại: cột Ssn ở bảng EMPLOYEE là khóa ngoại tham chiếu
với cột Essn bảng WORKS_ON. Theo câu lệnh trên thay đổi giá trị cột Ssn từ
“999887777” thành “943775543” bảng EMPLOYEE nhưng tra cột Essn bảng
WORKS_ON vẫn giá trị cũ vì thế câu lệnh bị vi phạm ràng buộc.
Kết luận: để thực hiện câu lệnh ta phải viết thêm câu lệnh thay đổi tương tự với
bảng WORKS_ON.
k. Câuk:Câu lệnh trên thực hiện thay đổi ở bộ
WORKS_ON(‘999887777’,10,10.0). Ta thấy bảng có các RBTV:
-về miền giá trị:giá trị thay đổi ở câu lệnh trên không thỏa RBTV khi thuộc tính ở
cột Pno là số nguyên dương trong khi dữ liệu thay đổi là số thực dương. Kết luận:
để thực hiện câu lệnh ta phải thay đổi thông tin từ “5.0” thành “5”.
- Which of the following operations are not correct? Why? Show the results of the
correct operations:
a. ΠSsn, Fname, Lname, Salary(Employee)
e. Department X Dept_Location
Ssn
12345678
9
99988777 7
66688444 4
45345345 3
98798798 7
j. σSex = F and Salary > 30000(Employee) σSex = M and Salary < 30000(Employee)
k. Fnam Mini Lname Ssn Bdate Address Sex Salar Super_snn Dno
e t y
Ssn
12345678
9
45345345 3
d. Retrieve the section identifier, course number and course name of courses which
are opened in semester 1, year 2019
Πsection_identifier,course_number,course_name(σsemester=1 and year=2019(COURSE|X| SECTION))
e. Retrieve the section identifier, course number and course name of courses which
are not opened in semester 1, year 2019
Πsection_identifier,course_number,course_name(σsemester!=1 and year!=2019(COURSE|X| SECTION)) f. Retrieve the
section identifier, course number and course name of courses which are opened in
year 2018 or 2019.
Πsection_identifier,course_number,course_name(σyear=2018(COURSE|X| SECTION))
Πsection_identifier,course_number,course_name(σyear=2019(COURSE|X| SECTION))
g. Retrieve the section identifier, course number and course name of courses which
are opened in year 2018 and 2019.
Πsection_identifier,course_number,course_name(σyear=2018(COURSE|X| SECTION))
Πsection_identifier,course_number,course_name(σyear=2019(COURSE|X| SECTION))
lOMoARcPSD|22127631
- Một mối quan hệ có thể chỉ có một khóa chính. Nó có thể chứa nhiều trường hoặc kết
hợp các trường có thể được sử dụng làm khóa chính. Một trường hoặc kết hợp các
trường được sử dụng làm khóa chính. Các trường hoặc kết hợp các trường không
được sử dụng làm khóa chính được gọi là khóa ứng cử viên hoặc khóa thay thế.
18.Phát biểu nào sau đây đúng
a. Khóa ứng viên là khóa có thể được chọn làm khóa chính cho một quan hệ b. Mỗi
quan hệ chỉ có duy nhất một khóa ứng viên
c. Cả a và b đều đúng
d. Cả a và b đều sai
- Đáp án A
19. Khóa chính (primary key) của một quan hệ là gì?
- Thuộc tính hoặc sự kết hợp của các thuộc tính xác định duy nhất một hàng hoặc bản
ghi trong một mối quan hệ được gọi là khóa chính
20.Mỗi quan hệ chỉ có duy nhất 1 khóa chính là đúng hay sai?
- Đúng
21.Cho Q1(A, B, C) và Q2(D, A). Phát biểu nào dưới đây là đúng a. Thuộc tính Q2.
- Dùng để thiết lập khóa chính trên bảng, xác định giá trị trên tập các cột làm khóa
chính phải là duy nhất, không được trùng lặp. Việc khai báo ràng buộc khóa chính yêu
cầu các cột phải NOT NULL.
28. Miền giá trị của một thuộc tính nghĩa có phải là một ràng buộc áp đặt lên dữ liệu
của thuộc tính đó không?
- Yes,
29. Các ký hiệu sau |Sex|, Dom(Sex), MGT(Sex) ký hiệu nào là ký hiệu miền giá trị của
thuộc tính Sex.
- |Sex|, Dom(Sex), MGT(Sex)
30. Cho NV(MaNV, Hoten, NgaySinh) và PB(MaPB, TenPB, Matrph). Quy định: mỗi
phòng ban có 1 NV là trương phòng. Phát biểu nào dưới đây là đúng 2 lược đồ quan
hệ trên
a. MaNV có ràng buộc unique và not null
b. Có ràng buộc tham chiếu từ PB.Matrph sang NV.MaNV
c. Cả a và b đều sai
d. Cả a và b đều đúng
31.Trong một quan hệ, thứ tự các thuộc tính và các bộ có quan trọng không? Tại sao? -
Trong một quan hệ, thứ tự các thuộc tính và các bộ không quan trọng vì có thể sắp xếp
lại các thứ tự các thuộc tính và các bộ.