Giới thiệu Mô hình quan hệ sử dụng lý thuyết tập hợp và logic bậc nhất để biểu diễn dữ liệu CSDL được biểu diễn bằng một tập các bảng: Mỗi bảng là tập hợp các các bộ giá trị
Trang 1Mô hình quan hệ (Relational model)
Trang 2Giới thiệu
Mô hình quan hệ sử dụng lý thuyết tập
hợp và logic bậc nhất để biểu diễn dữ
liệu
CSDL được biểu diễn bằng một tập
các bảng:
Mỗi bảng là tập hợp các các bộ giá trị
Mỗi cột đều có cùng một kiểu dữ liệu
Mỗi hàng trong bảng là bộ các giá trị có
quan hệ với nhau
So sánh với mô hình ER:
Mỗi bảng tương ứng với một tập thực
thể
Mỗi cột tương ứng một thuộc tính
Mỗi hàng trong bảng tương ứng với
một thực thể
Họ tên Tuổi Giới tính
Trang 3Các định nghĩa
Một mô hình quan hệ là tập hợp các quan hệ (relation)
Mỗi quan hệ gồm 2 phần:
Thể hiện (instance): là bảng các bộ giá trị (tuples)
Lược đồ (schema): chứa tên của quan hệ, cùng với tên và kiểu
từng cột của bảng
VD: Book(id: integer, title: string, author: string, pub-year: integer)
Số dòng của bảng: lực lượng (cardinality) của quan hệ
Số cột của bảng: bậc (degree) của quan hệ
Lực lượng: 3
Bậc: 4
id title author pub-year
Trang 4Định nghĩa bằng toán học
Lược đồ quan hệ R là tích Đề-các các miền giá trị của
các thuộc tính
Đầy đủ: Book(id: int, title: string, author: string, pub-year: int)
Ngắn gọn: Book(id, title, author, pub-year)
Book = dom(int) × dom(string) × dom(string) × dom(int)
(trong đó dom(…) ký hiệu tập giá trị của một kiểu)
Quan hệ r trên R: ký hiệu bằng r(R) là một tập con của R
my-books = my-books(Book) ⊂ Book
Một phần tử của r gọi là một thể hiện, một hàng, hay một
bộ giá trị
Chú ý: người ta thường gọi tắt “quan hệ” thay cho “thể hiện của quan hệ”
Trang 5Khoá (key)
với thực thể trong mô hình ER
Siêu khoá (superkey): tập các thuộc tính mà bộ giá trị
không lặp lại
Nếu K là một siêu khoá thì K’ = K ∪ a cũng là một siêu khoá, với a
là một thuộc tính của quan hệ
Khoá ứng viên (candidate key): là siêu khoá không cố
thuộc tính dư thừa (không tồn tại siêu khoá là tập con)
Một quan hệ có thể có 0, 1 hoặc nhiều siêu khoá
Khoá chính (primary key): là một khoá ứng viên được
người thiết kế CSDL lựa chọn
Trang 6 K2 là khoá ứng viên vì không có tập con
nào của K2 là siêu khoá
K3 không phải khoá ứng viên vì K2 ⊂ K3 là
Trang 7Khoá ngoài (foreign key)
r2 thì K gọi là khoá ngoài của r1 tham chiếu tới r2
của r2 có giá trị của K giống ở r1
o sv ⊂ SinhVien(id-sinh-vien, ten, nam-sinh)
diem ⊂ Diem(id-sinh-vien, mon-hoc, diem)
tới quan hệ sv
o mỗi giá trị của id-sinh-vien tồn tại trong quan hệ diem
Trang 8Bài hát
id-bài-hát: inttên: stringid-tác-giả: intnăm-sáng-tác: intid-thể-loại: int
Thể loại
id-thể-loại: inttên: string
Ca sĩ
id-ca-sĩ: inttên: stringnăm-sinh: int
Biểu diễn
id-biểu-diễn: intid-ca-sĩ: intid-bài-hát: int
thời-gian: time
Trang 10Thực thể yếu
Chapter(ch_num, bid, title)
Book
bid: int name: string author: string publisher: string
Chapter
ch_num: int bid: int
title: string
pub_date: date
Trang 11aid: int name: string
pub_date: date
Trang 12Quan hệ n-n
Class(cid, name, room, teacher)
Registration
sid: int cid: int
Trang 13Ngôn ngữ truy vấn (query language)
Trang 14Đại số quan hệ (Relational algebra)
Trang 15Khái niệm
tục (procedural query language), là một tập hợp các
phép toán:
union ( hợp), set-diffrence (trừ), Cartesian-product
(tích Đề-các) và rename (đổi tên)
natural-join ( gộp), division (chia), assignment (gán)
Trang 16Select (phép chọn) σ
phép lựa chọn những bộ giá trị trong quan hệ đó
thoả mãn một điều kiện (vị ngữ)
Trang 17Project (phép chiếu) Π
phép chỉ giữ lại những thuộc tính mong muốn
Ký hiệu: Π các thuộc tính giữ lại (r)
VD:
Π id, tên (tác-giả)
Π sản-phẩm, tiền (hoá-đơn)
Πtitle, author(sách)
id title author pub-year
Trang 18Union (phép hợp) ∪
Phép union nhận đầu vào là hai quan hệ tương thích với nhau và kết quả là quan hệ bao gồm những bộ giá trị có mặt ở một trong hai quan hệ
Trang 19Set-difference (trừ) –
Phép set-difference nhận đầu vào là hai quan hệ tương thích với nhau, và trả về kết quả là những bộ giá trị trong quan hệ thứ nhất mà không có trong quan hệ thứ hai
Trang 20viên.tên id chi nhánh
nhân- nhánh.tên
Để tránh trùng tên, dùng ký hiệu: tên-quan-hệ.tên-thuộc-tính
Trang 21Biểu thức quan hệ và phép rename (đổi tên)
Các phép toán quan hệ có thể được lồng nhau tạo thành biểu thức
VD:
Πtên, giá(σcalo <=100(món-ăn) ∪ σgiá < 30(đồ-uống))
Πtác-giả.tên, bài-hát.tên(σid-tác-giả = bài-hát.id-tác-giả(σtên=“Trịnh Công Sơn”(tác-giả) × bài-hát))
Kết quả các biểu thức quan hệ là các quan hệ không có tên, phép toán rename cho phép đặt tên cho kết quả một biểu thức
Ký hiệu: có 2 dạng
ρtên-quan-hệ(E) đặt tên cho quan hệ kết quả của biểu thức E
ρtên-quan-hệ(tên các thuộc tính)(E) đặt tên cho quan hệ và các thuộc tính kết quả của biểu thức E
VD:
Trang 22Set-intersection (giao) ∩
Phép set-intersection nhận đầu vào là hai quan hệ tương thích với nhau và kết quả là quan hệ bao gồm những bộ giá trị có mặt ở đồng thời trong hai quan hệ
Trang 23Natural-join (gộp) ⋈
Trong việc khai thác CSDL, một câu hỏi rất hay gặp như sau: “Xuất ra danh
sách các tác giả cùng với các bài hát được sáng tác” sử dụng
Cartesian-product và select:
σtác-giả.id-tác-giả = bài-hát.id-tác-giả(tác-giả × bài-hát)
Phép natural-join nhận hai quan hệ và thực hiện Cartesian-product giữa
chúng, sau đó select những bộ giá trị dựa trên các thuộc tính chung và trả
Trang 24Division (chia) ÷
Phép division dùng để giải quyết câu hỏi dạng: “Liệt kê các khách
hàng đã đăng ký tất cả các dịch vụ của hãng”
Đáp án cảu câu hỏi này là kết quả của phép division:
đăng-ký(id-khách, id-dịch-vụ) ÷ khách-hàng(id-khách)
Định nghĩa: Cho các quan hệ r(R) và s(S) với S ⊆ R Kết quả của
phép division r ÷ s là một quan hệ trên R – S, trong đó một phần tử t thuộc r ÷ s khi và chỉ khi:
t ∈ ΠR – S(r)
Với mọi ts ∈ S, có một tr ∈ R thoả mãn: ts[S] = tr[R] và tr[R – S] = t
Định nghĩa thông qua các phép toán cơ bản:
r ÷ s = ΠR – S(r) – ΠR – S((ΠR – S(r) × s) – ΠR – S, S(r))
Trang 25Assignment (gán) ←
vào một biến (tương tự như trong các ngôn ngữ lập
Trang 26Sửa đổi dữ liệu
Trang 27Giới thiệu
Phần này giúp tìm hiểu về việc thay đổi thông tin
assignment
Trang 28Insert (thêm)
thông qua phép hợp:
trong đó r là quan hệ được thay đổi, E là quan hệ
được thêm vào
Trang 30Update (cập nhật)
r ← Π f1,f2, ,fn (r) trong đó fi là thuộc tính thứ i của r nếu thuộc tính đó không muốn bị thay đổi, hoặc là giá trị cần cập nhật cho thuộc tính đó
biểu thức như sau:
r ← Π f1,f2, ,fn (σ P (r)) ∪ (r − σ P (r))
Trang 31View (tạo khung nhìn)
Trong thực thế làm việc với CSDL, vì lý do bảo mật hoặc để thuận tiện thao tác, một phần CSDL có thể được ẩn đi với những người dùng nhất định
Người dùng có thể không có thông tin tổng thể về sơ đồ của toàn bộ CSDL
VD:
một người dùng có thể chỉ biết danh sách nhân viên của công ty, mà không biết được lương của từng người Ta có thể tạo một quan hệ như sau:
view1 ← Πtên, tuổi(nhân-viên)
và chỉ để người dùng thao tác với view1
Câu lệnh: create view v as E
trong đó v là tên view được tạo ra, và E là biểu thức quan hệ
Phân biệt tạo view và phép gán: với phép gán, sau khi gán xong, nếu ta cập nhật các quan hệ trong biểu thức thì quan hệ được gán không thay đổi (còn với view thì có)
Trang 32Bài tập
Dùng mô hình quan hệ để biểu diễn các CSDL sau:
1 Giáo viên, sinh viên, khoá học, môn học, lớp học
2 Công ty, nhân viên, dự án, chi nhánh
3 Thư viện, người đọc, sách
Dùng đại số quan hệ để thực hiện các yêu cầu sau:
5 Tìm các học sinh lớp C có điểm trung bình lớn hơn 5
“CSDL”