You are on page 1of 8

`Review questions

1. Describe the three-schema architecture.


- Kiến trúc 3 mức được thiết kế để đáp ứng tùy góc độ sử dụng: Những cái gì
user sẽ thấy, cấu trúc logic và cách lưu trữ dữ liệu trong máy tính. 3 mức này
bao gồm:
- External schema (user view): Đại diện cho góc nhìn của 1 người dùng hoặc 1
nhóm người dùng xem dữ liệu. Nó hiển thị cho các người dùng xem những dữ
liệu cần thiết với mục đích của họ, không hiển thị những phần dư thừa.
VD: Sinh viên muốn xem dữ liệu về điểm số dữ liệu sẽ hiển thị ra bên ngoài
các thuộc tính như: Thông tin sinh viên, tên môn học, điểm số tương ứng,…
Còn nếu họ muốn xem thông tin cá nhân thì nó sẽ hiển thị các dữ liệu liên quan
như: họ tên, ngày tháng năm sinh, mã số sinh viên,…
- Conceptual schema (logical view): Đại diện cho các cấu trúc logic của
database. Cho thấy dữ liệu nào được lưu trong đó và được coi bởi
administrator.
- Internal schema (Physical view): Mức này định nghĩa dữ liệu được lưu trữ ở
đâu trong máy tính và cách mà nó lưu trữ.

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.
- Attribute (thuộc tính): trong 1 relation thì nó là 1 cột. Nó cho biết 1 thuộc tính
của đối tượng. Ví dụ: Trong 1 table SINHVIEN có 3 cột MSSV, Name,
DateofBirth là 3 attribute.
- Domain of an attribute: Tập hợp các giá trị được phép nhận của cột đó ( thuộc
tính đó). Ví dụ: Trong Table Score_SV, cột (thuộc tính) điểm giá trị sẽ được
nhận chỉ từ [0.0;10.0] (hệ 10) thôi.
- Relation schema: tập tất cả các thuộc tính có trong quan hệ. Lược đồ quan hệ
thường được viết dưới dạng:
<tên quan hệ>(danh sách các thuộc tính)
Ví dụ: SINHVIEN(MaSV, HoTen, NgaySinh, Diachi) cho biết Table tên
SINHVIEN có 4 thuộc tính: MaSV, HoTen, NgaySinh, Diachi. Trong đó
MaSV là primary key.
- Relation: một quan hệ là một bảng chứa dữ liệu bao gồm nhiều cột và nhiều
dòng. Dữ liệu trong một quan hệ phải thỏa các ràng buộc liên quan tới quan hệ
đó. Mỗi cột được gọi là một thuộc tính (attribute) hay một trường (field) của
quan hệ. Mỗi dòng được gọi là một bộ (tuple) hay mẫu tin/ bản ghi (record).
Ví dụ: Quan hệ SINHVIEN là 1 Table SINHVIEN. Ta định nghĩa 4
cột:MSSV, Name,NgaySinh, Address là 4 attribute. Mỗi dòng của Relation là
1 đối tượng ví dụ như:
MSSV Name NgaySinh Address
21162020 Trương Trọng 24/04/2003 2 VVN
.. …. …. …

- N-Tuple: Là 1 record (hàng) trong Table tương ứng với có n attribute


VD: Nếu ta có 1 Table SINHVIEN(ID_sv, Name, DoB) và giả sử ta có 1
dòng trong Table là (21161010, “Nguyễn Văn A”, 01/01/2003). Thì đây là
3-Tuple vì có 3 attribute trong bảng này.
- degree of a relation: Là số attribute có trong relation.
VD: SINHVIEN(MSSV,Name,NgaySinh, Address) là 1 table có 4 attribute
=> degree of a relation là 4.
- a relationship: biểu diễn mối kết hợp giữa các quan hệ trong CSDL (mối quan
hệ dựa trên khóa ngoại).
VD: SINHVIEN(MSSV,Name,NgaySinh,Address), MONHOC(MaMH,
TenMonHoc, SoTC), KQTHI(MSSV,MaMH,Diem). Trong đó Table KQTHI
sử dụng 2 khóa ngoại là MSSV và MaMH để tham chiếu đến Table
SINHVIEN và MONHOC. KQTHI đến 2 table còn lại đgl quan hệ tham chiếu,
ngược lại sẽ là quan hệ được tham chiếu.
- a relation instance (state): Tập tất cả các bộ của một quan hệ tại một thời điểm.
VD:
Trong
MaSV HoTen NgaySinh Điachi
Table
này
14110 Trương Trọng 24/04/01 2 VVN
Relation
instance
14111 Nguyễn Duy 18/05/01 3 LVV
là 3 row
của bảng
14112 Lê Khang 11/01/01 4 VVT
tương
ứng với
3 đối tượng sinh viên.
- a relational database schema: một tập các lược đồ quan hệ có liên quan với
nhau về một lĩnh vực cụ thể.
VD: SINHVIEN(MaSV, HoTen, NgaySinh, Diachi)
MONHOC(MaMH, TenMH, SoTC)
KQTHI(MaSV, MaMH, Diem)
3 lược đồ trên cùng thuộc 1 lĩnh vực là quản lý sinh viên có mối quan hệ với
nhau tạo thành 1 csdl quan hệ.
- a relational database state: Là một tập các relation instance có liên quan với
nhau thỏa các ràng buộc toàn vẹn. Hay nói đơn giản là tập tất cả các đối tượng
của các table trong database tại 1 thời điểm.
VD: CSDL của công ty có 2 table là NHANVIEN(ID, Name, Age, Gender,
ID_depar) và DEPARTMENT(ID_depar, Name,Address). Relational database
state tại 1 thời điểm cụ thể sẽ như sau:
NHANVIEN:
ID Name Age Gender ID_Depar
NV001 Nguyễn Văn A 25 Nam PB001
NV002 Trần Thị B 23 Nữ PB002
NV003 Phạm Văn C 27 Nam PB003
DEPARTMENT:
ID_depar Name Address
PB001 Kế toán Hà Nội
PB002 Kinh Doanh TP.HCM
PB003 Sản xuất Đồng Nai
- Integrity Constrainst: Tập các quy tắc mà mọi dữ liệu trong CSDL phải tuân
theo nhằm đảm bảo tính toàn vẹn của cơ sở dữ liệu.
VD: 1. Domain constraints: Nếu 1 cột nào đó lưu data là tuổi 1 người thì nó
không thể âm và không chứa ký tự khác chữ số.
2. Unique Constraints: Các giá trị trong 1 cột đó phải khác nhau từng đôi
1 hay dữ liệu trong cột đó không được trùng nhau.
3. Why are tuples in a relation not ordered?
Về mặt toán học, relation là tập các tuples mà trong toán học thì các phần tử trong
tập hợp không có thứ tự và việc sắp xếp thứ tự không ảnh hưởng đến nội dung của
bảng nên không cần thiết phải sắp xếp.
4. Why are duplicate tuples not allowed in a relation?
Vì mỗi tuple đặc trưng cho 1 đối tượng cụ thể riêng biệt nên sẽ không có 2 tuple
giống nhau trong bảng. Nếu 2 record tồn tại là cùng tất cả các attribute khi đó sẽ
gây ra vấn đề phức tạp trong việc truy vấn dữ liệu gây ra sự rối loạn. Ví dụ như khi
lập 1 tài khoản cho 1 mạng xã hội bất kỳ, nếu có thông tin quan trọng trùng nó sẽ
bắt bạn thay đổi (điều này cũng liên quan đến primary key). Và nếu vấn đề duplicate
tuples xảy ra nó sẽ tạo ra sự dư thừa dữ liệu trong database, gây ra việc querying,
insert, deleting,… bị slow down.
5. What is the difference between a key and a superkey?
Superkey: là một tập hợp các cột (>1 attribute) có thể dùng để xác định duy nhất 1 dòng
bất kỳ trong 1 hệ quản trị csdl.
Key: có thể gồm 1 attribute đơn lẻ hoặc 1 tập hợp các attribute (>=1 attribute) để truy cập
hoặc truy xuất 1 thực thể duy nhất trong bảng (1 tuple trong table).
6. Discuss the entity integrity and referential integrity constraints. Why is each
considered important?
Entity Integrity Constraint: Đề cập đến việc xác định sao cho mỗi row trong 1 table là
duy nhất. Khóa chính đảm bảo điều này vì nó không được phép null và duy nhất cho mỗi
giá trị trong table.
Referential Integrity Constraint: Đề cập đến mối quan hệ giữa các tables. Mối quan hệ
giữa các tables được thiết lập bằng Khóa ngoại. Ràng buộc này nói rằng khóa ngoại có thể là
khóa chính tương ứng trong table khác hoặc có thể null. Chỉ cần unique là được (Để duy trì tính
nhất quán giữa các bảng liên quan với nhau trong csdl).
Entity Integrity Constraint cần thiết vì nó đảm bảo các đối tượng trong 1 bảng không bị
trùng lặp dư thừa dữ liệu để tránh gây xung đột và thao tác truy vấn database chính xác hơn. Ví
dụ nếu trong bảng đều có 2 người tên “Nguyễn Văn A” trùng nhau và giống cả về ngày,tháng,
năm sinh nếu không có primary key thì các thao tác truy vấn, xóa, sửa dữ liệu sẽ không thể phân
biệt được. Còn với Referential Integrity Constraint để đảm bảo sự tham chiếu giữa các dữ liệu
hợp lệ và nguyên vẹn. Ví dụ như: trong database về cửa hàng có 2 table là customer và invoice.
Trong đó customer_id là khóa chính trong table customer đồng thời nó cũng là khóa ngoại trong
invoice table. Ví dụ khi chủ cửa hàng muốn cập nhật thông tin khách hàng cho invoice table về
thông tin mua hàng, nó sẽ dựa vào khóa ngoại đó để cập nhật thay đổi; hoặc khi muốn xóa khách
đó đi thì dựa trên khóa ngoại để tham chiếu đến khách hàng cần xóa mà xóa cho chính xác và
xóa luôn cả các thông tin hóa đơn liên quan trước rồi mới xóa thông tin cá nhân khách hàng =>
đảm bảo sự nhất quán giữa 2 table.

Exercises.
1. Given one possible database state for the COMPANY relational database schema as
follows:
- 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.
(Hỏi chèn 1 dòng vào có bị vi phạm ràng buộc gì hay không? Cách khắc phục)
- Which of the following operations are not correct? Why? Show the results of the
correct operations
(Phép chiếu – Xem trước chương 3 thì làm được. Còn không thì bỏ lại để qua tết học
rồi làm luôn).
a. ΠSsn, Fname, Lname, Salary(Employee)
b. σ Sex = F and Salary > 30000 (Employee)
c. σ Sex = F and Salary > 30000 (ΠSsn, Fname, Lname, Salary(Employee))
d. ΠSsn, Fname, Lname, Salary (σSex = F and Salary > 30000(Employee))
e. Department X Dept_Location
f. Department |X| Dept_Location
g. Compare the results of question e and f
h. Employee – Dependent
i. ΠSsn(Employee) - ΠEssn(Dependent)
j. σ Sex = F and Salary > 30000 (Employee)  σSex = M and Salary < 30000(Employee)


k. ΠSsn(σDno=5(Employee))   Ssn(ΠEssn(σPno =1(Works_on)))
l. Explain the sense of the result of question j and k.

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 unique
across 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.
b. Retrieve the student_number and the name of all students in “Computer
Science” major
c. Retrieve the prerequisite course number and course name of the course which
has course number “1111’’
d. Retrieve the section identifier, course number and course name of courses
which are opened in semester 1, year 2019
e. Retrieve the section identifier, course number and course name of courses which
are not opened in semester 1, year 2019
f. Retrieve the section identifier, course number and course name of courses which
are opened in year 2018 or 2019.
g. Retrieve the section identifier, course number and course name of courses
which are opened in year 2018 and 2019.

You might also like