Chương 4 và 5 giới thiệu về mô hình quan hệ và đại số quan hệ. Thông qua chương này người học có thể nắm bắt được các khái niệm về mô hình quan hệ và đại số quan hệ, biết được các ràng buộc của quan hệ và lược đồ CSDL quan hệ, biết được các phép toán đại số quan hệ cơ bản,... Mời các bạn cùng tham khảo.
Trang 1CHƯƠNG 4
MÔ HÌNH QUAN HỆ (Relational Model)
Trang 2Khái niệm mô hình quan hệ
• Mô hình quan hệ (Relational Model) sử dụng một tập các quan hệ (Relational ) để biểu diễn
dữ liệu và mối quan hệ giữa các dữ liệu
• Mô hình quan hệ là sự kết hợp của 3 thành
phần: Cấu trúc, toàn vẹn và thao tác.
Trang 3Khái niệm mô hình quan hệ
hợp các quan hệ (Relations)
duy trì trong mô hình quan hệ bằng cách sử dụng khóa chính và khóa ngoại
dữ liệu như phép toán tập hợp, phép toán quan hệ
Trang 4Khái niệm mô hình quan hệ
• Quan hệ (Relation): là một bảng giá trị gồm hai thành phần: lược đồ quan hệ ( relation schema) và thể hiện của quan hệ ( relation instance)
của quan hệ, tên và kiểu dữ liệu của thuộc tính của quan hệ Ký hiệu: R(A1, A2, …, An)
• A1, A2, …, An: danh sách các thuộc tính.
• R là tên của quan hệ
Trang 5Khái niệm mô hình quan hệ
bảng giá trị gồm các dòng và các cột
Ví dụ: lược đồ quan hệ Student
Students(sid: string, name: string, login: string, age: integer , gpa: real)
Trang 6Khái niệm mô hình quan hệ
– Miền giá trị (Domain): là tập giá trị hợp lệ của
một thuộc tính trong một quan hệ
• Lược đồ quan hệ R(A1, A2, …, An)
• D: miền giá trị của Ai ký hiệu dom(Ai)
– Ràng buộc miền giá trị (Domain constraint): là
điều kiện mà các thể hiện của quan hệ phải thỏa mãn Mỗi giá trị trong domain là nguyên tố
Ví dụ:
• Số CMND là tập các số từ 0 đến 9
Trang 7Khái niệm mô hình quan hệ
– Các thành phần trong một quan hệ:
Trang 8Khái niệm mô hình quan hệ
• Một quan hệ (relation) r của một lược đồ quan hệ R(A1, A2, …, An) được ký hiệu là r(R),
là một tập n-tuples r = {t1, t2, , tm}.
– Mỗi n-tuples t là một danh sách có thứ tự của n giá trị t = <v1, v2, , vn>, với vi, 1 ≤ i ≤ n, là một phần tử của dom(A) hoặc một giá trị đặc biệt null.– Giá trị thứ i trong bộ t tương ứng với thuộc tính Ai được biểu diễn bằng t[Ai]
Trang 9Các ràng buộc của quan hệ
• Ràng buộc khóa (Key Constraints): một quan
hệ được định nghĩa như là một tập hợp các bộ (tuples) Tất cả các bộ trong một quan hệ phải
là duy nhất.
Trang 10Các ràng buộc của quan hệ
• Khóa (key): Một thuộc tính hoặc một tập các thuộc tính dùng để xác định một dòng trong một quan hệ Khóa được chia thành 3 loại:
– Siêu khóa (Super key)
– Khóa dự tuyển (Candidate key)
– Khóa chính (Primary key)
Trang 11Các ràng buộc của quan hệ
• Siêu khóa (Subper key) của R: là một tập thuộc tính SK của R sao cho không có hai bộ hợp lệ bất kỳ trong thể hiện của quan hệ r(R)
có giá trị trùng nhau tại tập thuộc tính SK.
– Cho hai bộ bất kỳ t1 và t2 trong r(R) thì ta có
t1[SK] t2[SK].
Trang 12Các ràng buộc của quan hệ
– Khóa K (Key) của một lược đồ quan hệ R là một siêu khóa của R mà khi loại bỏ bất kỳ thuộc tính A
từ K thì được một tập các thuộc tính K’ mà không
là siêu khóa của R nữa
Ví dụ:
• Super key: {SSN, Name, Age}
• Key: {SSN}
Trang 13Các ràng buộc của quan hệ
• Khóa dự tuyển (Candidate key): Trong một lược đồ quan hệ có thể có nhiều hơn một khóa, mỗi khóa được gọi là khóa dự tuyển.
• Khóa chính (Primary key): một trong các khóa
dự tuyển được chọn là khóa tiêu biểu.
Trang 14Các ràng buộc của quan hệ
• Khóa ngoại (Foreign key): tập các trường (field) hoặc thuộc tính trong một quan hệ được sử dụng để "tham chiếu” đến một bộ trong quan hệ khác.
Trang 15Lược đồ CSDL quan hệ
• Một lược đồ cơ sở dữ liệu quan hệ (relational
database schema) S là một tập các lược đồ quan hệ S = {R1, R2, , Rm} và một tập các ràng buộc toàn vẹn (integrity constraints IC).
Ví dụ: lược đồ cơ sơ dữ liệu COMPANY =
PROJECT, WORKS_ON, DEPENDENT}
Trang 16Lược đồ CSDL quan hệ
Trang 18• Ràng buộc toàn vẹn thực thể (Entity Integrity constraint): cho lược đồ cơ sở dữ liệu quan hệ
S = {R1, R2, , Rn}
– Các thuộc tính khóa chính (primary key attributes)
PK của mỗi lược đồ quan hệ R trong S không chứa giá trị null trong bất kỳ bộ nào của r(R), vì giá trị của khóa chính dùng để xác định một bộ riêng biệt
t[PK] null với mọi bộ t trong r(R)
Trang 19Lược đồ CSDL quan hệ
• Ràng buộc toàn vẹn tham chiếu (The referential integrity constraint) được xác định giữa hai quan hệ.
– Được sử dụng để duy trì sự nhất quán giữa các bộ trong hai quan hệ: quan hệ tham chiếu (the referencing relation) và quan hệ được tham chiếu (the referenced relation)
khóa ngoại FK (foreign key) tham chiếu đến khóa
Trang 20Lược đồ CSDL quan hệ
R2 nếu t1[FK] = t2[PK]
– Ràng buộc tham chiếu biểu diễn trong lược đồ cơ
sở dữ liệu quan hệ bằng một đường cong từ khóa ngoại đến khóa chính
Trang 21Lược đồ CSDL quan hệ
Trang 22– Delete: Xóa các bộ trong quan hệ.
– Update (or Modify): thay đổi giá trị của các thuộc tính trong các bộ.
• Khi các thao tác trên được áp dụng vào một quan hệ có thể vi phạm các ràng buộc của quan hệ.
Trang 23Các thao tác cập nhật và xử lý vi phạm
ràng buộc
– Thao tác insert có thể vi phạm 4 ràng buộc sau:
• Ràng buộc miền giá trị (Domain constraint)
• Ràng buộc khóa (Key constraints).
• Ràng buộc toàn vẹn thực thể (Entity integrity)
• Ràng buộc toàn vẹn tham chiếu (Referential integrity).
Trang 24Các thao tác cập nhật và xử lý vi phạm
ràng buộc
– Thao tác Delete: chỉ có thể vi phạm toàn vẹn tham
chiếu, nếu bộ bị xóa được tham chiếu bởi các khóa ngoại từ các bộ dữ liệu khác trong cơ sở dữ liệu
– Thao tác Update: thay đổi giá trị của một hoặc
nhiều thuộc tính trong một bộ của quan hệ Cần phải xác định điều kiện trên thuộc tính để chọn bộ muốn cập nhật
Trang 25CHƯƠNG 5: ĐẠI SỐ QUAN HỆ
(The Relational Algebra )
Trang 26Các phép toán đại số quan hệ cơ bản
• Tập các phép toán trên mô hình quan hệ gọi là đại số quan hệ Các phép toán này cho phép người dùng truy xuất dữ liệu theo yêu cầu, kết quả của phép toán là một quan hệ mới
• Có thể chia thành 3 nhóm:
– Nhóm thao tác CSDL: Select, Project
– Kết hợp (Combined set): Cartesian (x), Join( )
– Phép toán tập hợp (Set operations): Union,
Intersection, rename, Set Difference, Division.
Trang 27Phép toán quan hệ một ngôi
các bộ từ một quan hệ mà nó thỏa mãn điều kiện được chỉ định
– (sigma): toán tử select
– <Điều kiện chọn>: biểu thức kiểu Boolean
<Điều kiện chọn>Điều kiện chọn>(R)
<Điều kiện chọn>Điều kiện chọn>(R)
Trang 28Phép toán quan hệ một ngôi
Trang 29Phép toán quan hệ một ngôi
– Thuộc tính của phép toánSELECT:
• Phép toán SELECT tạo ra một quan hệ mới S có cùng lược
đồ với quan hệ R.
• Có tính giao hoán (commutative)
• Nếu có một chuỗi các phép toán SELECT thì có thể thực hiện theo một trình tự bất kỳ.
<condition1> <condition1>((<condition2> <condition2>(R))=))= (R))=))= <condition2> <condition2>((<condition1> <condition1> (R))=))(R))=))
<condition1>>( < condition2> > ( <condition3>> ( R))=))
= <condition2> > (< condition3>> ( < condition1>> ( R))=)))
<condition1>>( < condition2> > ( <condition3>> ( R))=))
= <condition2> > (< condition3>> ( < condition1>> ( R))=)))
Trang 306.1 Unary relational operations
• Một chuỗi phép toán SELECT có thể thay thế bằng một phép toán đơn với sự kết hợp của tất cả các điều kiện.
Ví dụ:
<condition1>>( < condition2> > ( <condition3>> ( R))=))
= <condition1>> AND < condition2> > AND < condition3>> ( R))=)))
Trang 31Phép toán quan hệ một ngôi
bảng và loại bỏ các cột khác.
– Ký hiệu
• : Ký hiệu phép toán Project
• <Điều kiện chọn>danh sách thuộc tính>: các thuộc tính trích ra từ các
thuộc tính của R.
<danh sách thuộc tính>(R)danh sách thuộc tính>(R)R))
Trang 32Phép toán quan hệ một ngôi
Ví dụ: Xem thông tin của các nhân viên gồm các field
first name, last name và salary
LNAME, FNAME,SALARY (EMPLOYEE)
Trang 33Phép toán quan hệ một ngôi
– Tính chất của phép toán Project:
• Phép tóa Project loại bỏ các bộ trùng lắp.
• Số bộ trong kết quả luôn <= số bộ trong R.
• Nếu danh sách các thuộc tính bao gồm khóa của R thì
số bộ trong kết quả luôn bằng với số bộ trong R
• <Điều kiện chọn>list1>(<Điều kiện chọn>list2>>(R)) = <Điều kiện chọn>list1> (R)
Trang 34Phép toán quan hệ một ngôi
Ví dụ: xem thông tin của nhân viên làm việc ở phòng DNO=5, thông tin bao gồm first name, last name, và salary:
Cách 1:
FNAME, LNAME, SALAR)Y(R) DNO=5 (R)EMPLOYEE))
Cách 2:
R)ESULTFNAME, LNAME, SALAR)Y (R)DEP5_EMPS)
Trang 35Phép toán quan hệ một ngôi
• Ví dụ:
Trang 36Phép toán quan hệ một ngôi
• Sự tuần tự của các toán tử và toán tử rename
– Để áp dụng một loạt các phép toán đại số quan
hệ, có thể thực hiện một trong hai cách:
• Viết các phép toán thành một biểu thức đơn với các phép toán lòng nhau.
• Mỗi phép toán tạo một quan hệ kết quả trung gian, sử dụng phép toán Rename đặt tên cho quan hệ kết quả trung gian.
Trang 37Phép toán quan hệ một ngôi
• Phép toán Rename :
– : kết quả là một quan hệ với tên là S dựa trên
quan hệ R với các cột là B1, B1, , Bn
– (B1, B2, …, Bn) (R): Một quan hệ mới với các cột là B1,
S (B1, B2, …, Bn) (R)
Trang 38Các phép toán đại số quan hệ từ lý thuyết
của các thuộc tính tương ứng phải tương thích nhau
Trang 39Các phép toán đại số quan hệ từ lý thuyết
tập hợp
• UNION R)S: Xác định một quan hệ chứa tất
cả các bộ thuộc R hoặc thuộc S hoặc thuộc cả
R và S, loại bỏ các bộ trùng nhau.
– Ví dụ:
Trang 40Các phép toán đại số quan hệ từ lý thuyết
tập hợp
Ví dụ: Xem SSN của tất cả nhân viên hoặc là làm việc
ở phòng ban số 5 hoặc là giám sát của nhân viên làm
ở phòng ban 5
R)ESULT2(R)SSN) SUPER)SSN (R)DEP5_EMPS)
Trang 41Các phép toán đại số quan hệ từ lý thuyết
tập hợp
R)ESULT1 R)ESULT2
Trang 42Các phép toán đại số quan hệ từ lý thuyết
Trang 43Các phép toán đại số quan hệ từ lý thuyết
tập hợp
Ví dụ: STUDENT INTRUCTOR
STUDENT INTRUCTOR
Trang 44Các phép toán đại số quan hệ từ lý thuyết
Trang 45Các phép toán đại số quan hệ từ lý thuyết
tập hợp
• Phép trừ (Set difference hoặc MINUS) R - S : Xác định một quan hệ chứa tất cả các bộ thuộc R nhưng không thuộc S
– Biểu thức:
– Ví dụ:
Trang 46Các phép toán đại số quan hệ từ lý thuyết
tập hợp
Ví dụ: INSTRUCTOR - STUDENT
INSTRUCTOR - STUDENT
Trang 47Các phép toán đại số quan hệ từ lý thuyết
tập hợp
– Hai toán hạng phải tương thích
– Phép toán MINUS không giao hoán : R – S ≠ S – R
STUDENT-INSTR)UCTOR)
INSTR)UCTOR)-STUDENT
Trang 48Các phép toán đại số quan hệ từ lý thuyết
tập hợp
• Phép chia (DIVISION) R(Z) S(X)
– Với X Z, Y = Z - X (Z = X Y);
– Y là tập thuộc tính thuộc R mà không thuộc S
– Kết quả của phép DIVISION là quan hệ T(Y) bao
tR[Y]=t, và tR [X] = ts với mọi bộ ts trong S
– Với một bộ t xuất hiện trong quan hệ kết quả T của phép chia, giá trị trong t phải xuất hiện trong R kết hợp với bộ trong S
•
Trang 49Các phép toán đại số quan hệ từ lý thuyết
tập hợp
• Ví dụ:
Trang 50Các phép toán đại số quan hệ từ tập
Trang 51Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
• Example:
Trang 52Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
• Phép JOIN : Kết hợp hai quan hệ R(A1, A2, ,
An) và S(B1, B2, , Bm) tạo một quan hệ mới.
Trang 53Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
bằng
Ex:
Trang 54Các phép toán đại số quan hệ từ tập
Trang 55Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
Ví dụ:
Trang 56Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
Example:
Trang 57Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
field liên kết giữa hai quan hệ, những giá trị không
so trùng sẽ có giá trị null trong bảng còn lại Có 3 loại kết outer join
• Full outer join
• Left outer join
• Right outer join
Trang 58Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
– Outer Join:
Trang 59Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
– Outer Join
Trang 60Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
– Outer Join:
Trang 61Các phép toán đại số quan hệ từ tập
kết hợp (Combined set)
– Outer Join
Trang 62Tập đầy đủ các phép toán quan hệ
• Tập các phép toán: select, project, union, set difference, và Cartesian product gọi là tập đầy
đủ tất cả các biểu thức đại số quan hệ đều được kết hợp bởi 5 phép toán này.
Ví dụ:
– R) S = (R)R) S ) – (R)(R)R) - S) (R)S - R)))
– R ⨝ <join condition>S = <join condition> (R)R) X S)
Trang 63Chức năng tổng hợp và Phân nhóm
• Một loại yêu cầu mà không thể thực hiện bằng các phép toán đại số quan hệ cơ bản là thực hiện các chức năng tổng hợp trên một tập giá trị từ CSDL.
• Các hàm tổng hợp được áp dụng cho một tập giá trị bao gồm: SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT.
Trang 64Chức năng tổng hợp và Phân nhóm
Ví dụ:
Trang 666.5 Additional Relational Operations
bình của từng phòng ban
Trang 67Examples of Queries in Relational Algebra
• QUERY 1: Retrieve the name and address of all
employees who work for the 'Research' department.
RESEARCH_DEPT DNAME = ’Research’ (DEPARTMENT)
RESEARCH_EMPS (RESEARCH_DEPT ⨝ DNUMBER= DNOEMPLOYEE EMPLOYEE)
RESULT FNAME, LNAME, ADDRESS (RESEARCH_EMPS)
Trang 68Examples of Queries in Relational Algebra
• QUERY 2>: For every project located in
'Stafford', list the project number, the controlling department number, and the department manager's last name, address, and birth date.
STAFFORO_PROJS PLOCATION=' STAFFORD' (PROJECT)
PROJ_DEPT_MGR (CONTR_DEPT ⨝NMGRSSN=SSN EMPLOYEE)
RESULT PNUMBER, DNUM, LNAME, ADDRESS BDATE (PROJ_DEPT_MGR)