








Preview text:
  lOMoAR cPSD| 58778885 Review questions 
1. Describe the three-schema architecture. 
- Kiến trúc Ba Mô Hình (Three-Schema Architecture), còn được gọi là Phương 
pháp Ba Mô Hình, là một kiến trúc cơ sở dữ liệu mà chia thành ba mô hình dữ liệu 
khác nhau: mô hình bên ngoài (external schema), mô hình khái niệm (conceptual 
schema), và mô hình bên trong (internal schema) của hệ thống cơ sở dữ liệu. Kiến 
trúc này được sử dụng chủ yếu để tăng cường hiệu suất, linh hoạt và bảo mật của 
hệ thống quản lý cơ sở dữ liệu (DBMS). 
2. Define the following terms and give an example for each term: an attribute, 
the domain of an attribute, a relation schema, a relation, n-tuple, degree of a 
relation, a relationship, a relation instance (state), a relational database 
schema, a relational database state, integrity constraints. 
-Mô hình Bên Ngoài (Góc Nhìn Người Dùng): Đây là mức độ trừu tượng cao nhất 
và đại diện cho cách dữ liệu được trình bày cho người dùng cuối hoặc các chương 
trình ứng dụng. Nó xác định các góc nhìn người dùng hoặc góc nhìn logic khác 
nhau của dữ liệu. Mỗi người dùng hoặc nhóm người dùng có thể có một góc nhìn 
cụ thể của cơ sở dữ liệu được tùy chỉnh theo nhu cầu của họ. Mô hình bên ngoài 
tập trung vào cách tổ chức dữ liệu cho các yêu cầu cụ thể của người dùng mà 
không tiết lộ sự phức tạp bên trong của cơ sở dữ liệu. 
+Mục Đích: Tùy chỉnh trình bày dữ liệu cho người dùng hoặc ứng dụng 
khác nhau mà không ảnh hưởng đến cấu trúc dữ liệu cơ bản. 
-Mô hình Khái Niệm (Góc Nhìn Logic): Mô hình khái niệm đại diện cho cấu trúc 
logic tổng thể của toàn bộ cơ sở dữ liệu. Nó xác định các mối quan hệ giữa các thành 
phần dữ liệu khác nhau, thực thể và thuộc tính của chúng. Mô hình này độc lập với 
bất kỳ DBMS cụ thể nào và phục vụ như một biểu đồ trừu tượng về mô hình dữ liệu  cho toàn bộ tổ chức. 
+Mục Đích: Cung cấp góc nhìn tổng thể, trừu tượng về toàn bộ cơ sở dữ liệu 
cho các quản trị viên và nhà thiết kế dữ liệu. Các thay đổi trong cấu trúc dữ 
liệu cơ bản có thể được thực hiện ở mức này mà không ảnh hưởng đến các  góc nhìn bên ngoài. 
-Mô hình Bên Trong (Góc Nhìn Vật Lý): Mô hình bên trong xử lý về việc lưu trữ 
vật lý của dữ liệu trên thiết bị lưu trữ, chỉ số dữ liệu, nén dữ liệu và các chi tiết cài 
đặt vật lý khác. Nó xác định cách dữ liệu được lưu trữ và truy xuất một cách hiệu 
quả bởi DBMS. Các thay đổi ở mức này không nên ảnh hưởng đến các mô hình bên  trên.      lOMoAR cPSD| 58778885
+Mục Đích: Tối ưu hóa việc lưu trữ và truy xuất dữ liệu, cải thiện hiệu suất 
và đảm bảo bảo mật và tính toàn vẹn dữ liệu. 
3. Why are tuples in a relation not ordered?  - 
Các bản ghi (tuples) trong một mối quan hệ (relation), còn được gọi là các 
hàng trong bảng cơ sở dữ liệu, có tính chất mặc định là không có thứ tự cụ thể 
trong ngữ cảnh của mô hình dữ liệu quan hệ. Điều này có nghĩa là thứ tự mà các 
bản ghi được lưu trữ hoặc truy xuất từ một bảng cơ sở dữ liệu không có ý nghĩa 
hoặc ý nghĩa cụ thể. Thay vào đó, mô hình quan hệ dựa vào các phương tiện khác 
để xác định và điều khiển dữ liệu, chủ yếu thông qua các thuộc tính và khóa. 
4. Why are duplicate tuples not allowed in a relation?  - 
Thông thường, các bản ghi trùng lặp (hàng) không được phép trong một 
mối quan hệ (bảng) trong cơ sở dữ liệu quan hệ vì mô hình quan hệ dựa trên các 
nguyên tắc của lý thuyết tập hợp và tính toán toán học. Trong một tập hợp toán 
học, mỗi phần tử là duy nhất và không có sự trùng lặp. 
5. What is the difference between a key and a superkey?  Khóa Chính (Primary Key):  - 
Tính duy nhất: Khóa chính phải là một tập hợp duy nhất của các thuộc tính 
(hoặc cột) trong một bảng dữ liệu. Không có hai hàng nào trong bảng có giá trị  khóa chính giống nhau.  - 
Tính bắt buộc: Khóa chính không được chứa giá trị NULL. Mọi hàng trong 
bảng phải có một giá trị khóa chính.  - 
Mục đích: Khóa chính được sử dụng để duy nhất hóa và xác định mỗi hàng 
trong bảng. Nó giúp đảm bảo tính toàn vẹn dữ liệu và làm cho việc thực hiện truy 
vấn và thao tác dữ liệu hiệu quả hơn.  Siêu Khóa (Super Key):  - 
Tính duy nhất không bắt buộc: Siêu khóa là một tập hợp của một hoặc 
nhiều thuộc tính trong bảng dữ liệu. Nó có thể chứa giá trị trùng lặp và có thể chứa  giá trị NULL.  - 
Mục đích: Siêu khóa không cần phải duy nhất hóa hàng trong bảng. Thay 
vào đó, nó là một tập hợp bất kì của các thuộc tính có thể được sử dụng để duy 
nhất hóa hàng, bao gồm cả khóa chính. 
6. Discuss the entity integrity and referential integrity constraints. Why is each  considered important? 
Ràng Buộc Tính Nguyên Vẹn Thực Thể (Entity Integrity):      lOMoAR cPSD| 58778885 - 
Tính Chất: Ràng buộc này đảm bảo rằng giá trị của thuộc tính khóa chính 
(primary key) không thể để trống (NULL) và phải là duy nhất trong mỗi hàng của  bảng.  - 
Quan Trọng: Ràng buộc về tính nguyên vẹn thực thể quan trọng vì nó đảm 
bảo tính toàn vẹn của dữ liệu trong bảng. Nếu giá trị khóa chính có thể để trống 
hoặc bị trùng lặp, sẽ gây ra sự không nhất quán và khó khăn trong việc xác định và  xử lý dữ liệu. 
Ràng Buộc Tính Nguyên Vẹn Tham Chiếu (Referential Integrity):  - 
Tính Chất: Ràng buộc này đảm bảo rằng mối quan hệ giữa các bảng dữ liệu 
đượcduy trì và thống nhất. Nó đảm bảo rằng giá trị trong cột tham chiếu (foreign 
key) của một bảng phải tham chiếu đến một giá trị tồn tại trong cột khóa chính của 
bảng tham chiếu (primary key).  - 
Quan Trọng: Ràng buộc về tính nguyên vẹn tham chiếu quan trọng vì nó 
đảm bảo sự chính xác và nhất quán của các mối quan hệ trong cơ sở dữ liệu. Nó 
ngăn chặn việc tham chiếu đến dữ liệu không tồn tại hoặc không hợp lệ, giúp duy 
trì tính toàn vẹn của dữ liệu và quy tắc kết nối giữa các bảng. 
Tóm lại, ràng buộc về tính nguyên vẹn thực thể và tính nguyên vẹn tham chiếu là 
hai khía cạnh quan trọng của quản lý cơ sở dữ liệu. Chúng đảm bảo tính toàn vẹn, 
chính xác và hiệu quả của dữ liệu trong hệ thống cơ sở dữ liệu và giúp duy trì sự 
nhất quán và bảo mật của thông tin.  Exercises. 
1. Given one possible database state for the COMPANY relational database  schema as follows:      lOMoAR cPSD| 58778885  
- Suppose that each of the following Update operations is applied directly to the 
databasestate shown above. Discuss all integrity constraints violated by each 
operation, if any, and the different ways of enforcing these constraints.      lOMoAR cPSD| 58778885  
- Which of the following operations are not correct? Wh y? Show the results of the  correct operations: a. 
- Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-Kết luận: Câu lệnh trên có thể thực hiện mà không vi phàm các RBTV. b. 
-Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-Kết luận: Câu lệnh trên có thể thực hiện mà không vi phàm các RBTV.  c. 
-Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-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 
-Kết luận: Câu lệnh này không thực hiện được vì vi phạm ràng buộc.      lOMoAR cPSD| 58778885
-Để thực hiện câu lệnh này cần thay đổi giá trị Dnumber khác 4 để không bị  trùng  d. 
- Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-Ràng buộc 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ị đó 
-Kết luận: Câu lệnh này không thực hiện được vì vi phạm ràng buộc. 
-Để 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. 
- Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-Ràng buộc về khóa ngoại: Cột Essn là khóa ngoại tham chiếu với cột Ssn của 
bảng DEPARTMENT có cùng giá trị. 
-Giá trị “John” ở cột khóa chính không bị trùng với các tên khác. 
-Kết luận: Câu lệnh trên có thể thực hiện mà không vi phạm các RBTV. f. 
-Kết luận: Câu lệnh trên có thể thực hiện mà không vi phàm các RBTV. g. 
- Cột Ssn của bảng EMPLOYEE tham chiếu với các bảng: DEPARTMENT, 
WORKS_ON và DEPENDENT nên khi xóa bộ “987654321” sẽ vi phạm ràng  buộc. 
-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. 
-Kết luận: Câu lệnh này không thực hiện được vì vi phạm ràng buộc. 
-Để 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      lOMoAR cPSD| 58778885
"987654321” ở bảng DEPENDENT, xóa các bộ có giá trị ở cột Essn  “987654321” ở bảng  WORKS_ON.  h. 
-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. 
-Kết luận: Câu lệnh này không thực hiện được vì vi phạm ràng buộc. 
-Cần 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. 
- Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-Kết luận: Câu lệnh trên có thể thực hiện mà không vi phàm các RBTV.  j. 
- Về miền giá trị: Tất cả dữ liệu trong câu lệnh đều thỏa RBTV này tương ứng  trong các cột 
-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ũ 
-Kết luận: Câu lệnh này không thực hiện được vì vi phạm ràng buộc. 
-Để 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. 
-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. 
-Để thực hiện câu lệnh ta phải thay đổi thông tin từ “5.0” thành “5”      lOMoAR cPSD| 58778885
2. Given a University database as follows:   
Consider the above figure. In addition to constraints relating the values of columns 
in one table to columns in another table, there are also constraints that impose 
restrictions on values in a column or a combination of columns within a table. One 
such constraint dictates that a column or a group of columns must be unique across 
all rows in the table. For example, in the STUDENT table, the Student_number 
column must be unique (to prevent two different students from having the same  Student_number). 
- Identify the column or the group of columns in the other tables that must be 
uniqueacross all rows in the table. 
- Identify the primary key, foreign key in each relational schema. 
- Specify the following queries on the University database schema: 
a. Retrieve the student_number and the name of all students in the university. 
Π Student_number, Name(STUDENT) 
b. Retrieve the student_number and the name of all students in “Computer  Science” major 
Π Student_number, Name(σMajor= Computer Science(STUDENT))  c. 
Retrieve the prerequisite course number and course name of the 
coursewhich has course number “1111’’ 
Πprerequisite_number,course_number,course_name(σcourse_number=1111      lOMoAR cPSD| 58778885 (COURSE|X| PREREQUISITE))  d. 
Retrieve the section identifier, course number and course name of 
courseswhich 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 
courseswhich 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 
courseswhich 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 
courseswhich 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))