Tải bản đầy đủ (.pdf) (32 trang)

Bài 3 Mô hình quan hệ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (648.26 KB, 32 trang )

Bài 3: Mô hình quan hệ
(Relational model)
1
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
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 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ể
2
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Họ
tên Tuổi Giới tính
Trần
Khánh Linh

25 Nam
Bill Gates


50 Nam

Liên Kiệt 45 Nam
Lưu
Diệc Phi 25 Nữ
Nguyễn
Văn Bố 37 Nam

Thị Mẹ 30 Nữ

… …

… …

… …
Cá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ệ
 VD:
 Lực lượng: 3
 Bậc: 4
3
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

id

title author pub-year
1

The call of the wild

Jack London
1903
3

The
universe in a nutshell
Stephen Hawking
2001
4

Hồng
lâu mộng
Tào
Tuyết Cần 1791
Đị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ệ”
4
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khoá (key)
 Các khái niệm về khoá của quan hệ cũng tương tự như
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 khoá ứng viên
 Khoá chính (primary key): là một khoá ứng viên được
người thiết kế CSDL lựa chọn
 Mỗi quan hệ chỉ có nhiều nhất một khoá chính
5
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Ví dụ
 K1 = {A} không phải khoá vì các giá trị có
lặp lại
 K2 = {A, B} là siêu khoá vì không có bộ giá
trị nào lặp lại
 K3 = {A, B, C} là siêu khoá vì K2 là siêu
khoá và K2 ⊂ K3


 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à
một siêu khoá
6
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
A B C
1 aa x
1 ab x
2 aa y
2 ab y
2 bb y
3 ab x
3 bb x
4 aa y
5 bb x
Khoá ngoài (foreign key)
 Một quan hệ r1 có chứa khoá chính K của quan hệ
r2 thì K gọi là khoá ngoài của r1 tham chiếu tới r2
 Với mỗi thể hiện của r1, tồn tại ít nhất một thể hiện
của r2 có giá trị của K giống ở r1
 Ví dụ:
o sv ⊂ SinhVien(id-sinh-vien, ten, nam-sinh)
diem ⊂ Diem(id-sinh-vien, mon-hoc, diem)
o id-sinh-vien là khoá ngoài của quan hệ diem tham chiếu
tới quan hệ sv
o mỗi giá trị của id-sinh-vien tồn tại trong quan hệ diem
cũng tồn tại trong quan hệ sv

7
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Sơ đồ CSDL
 Một mô hình quan hệ cũng có thể được biểu diễn
dưới dạng sơ đồ
8
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Tác giả
id-tác-giả: int
tên: string
năm-sinh: int
Bài hát
id-bài-hát: int
tên: string
id-tác-giả: int
năm-sáng-tác: int
id-thể-loại: int
Thể loại
id-thể-loại: int
tên: string
Ca sĩ
id-ca-sĩ: int
tên: string
năm-sinh: int
Biểu diễn
id-biểu-diễn: int
id-ca-sĩ: int
id-bài-hát: int

Đĩa nhạc
id-đĩa-nhạc: int
tên: string
năm-phát-hành: int
Chứa
id-đĩa-nhạc: int
id-biểu-diễn: int
số-thứ-tự: int
thời-gian: time
Biến thực thể  quan hệ
 Customer(cid, name, address, phone)

9
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Customer
cid: int
name: string
address: string
phone: string
Thực thể yếu
 Book(bid, name, author, publisher, pub_date)
Chapter(ch_num, bid, title)
10
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Book
bid: int
name: string
author: string

publisher: string
Chapter
ch_num: int
bid: int
title: string
pub_date: date
Quan hệ 1-n
 Book(bid, name, author_id, publisher, pub_date)
Author(aid, name)
11
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Book
bid: int
name: string
author_id: int
publisher: string
Author
aid: int
name: string
pub_date: date
Quan hệ n-n
 Sinh ra một quan hệ phụ

 Student(sid, name, birthday)
Class(cid, name, room, teacher)
Registration(sid, cid)
12
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

Student
sid: int
name: string
birthday: date
Class
cid: int
name: string
room: string
teacher: string
Registration
sid: int
cid: int
Ngôn ngữ truy vấn (query language)
 Để thao tác trên các quan hệ, chúng ta cần đến
ngôn ngữ truy vấn
 Ngôn ngữ truy vấn thường là ngôn ngữ cấp cao hơn
so với các ngôn ngữ lập trình
 VD: SQL
 Trong phần tiếp theo, chúng ta tìm hiểu về ngôn ngữ
truy vấn ở dạng lý thuyết hình thức
13
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Đại số quan hệ
(relational algebra)
14
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khái niệm
 Đại số quan hệ là một ngôn ngữ truy vấn dạng thủ

tục (procedural query language), là một tập hợp các
phép toán:
 Có một hoặc hai đầu vào là các quan hệ
 Đầu ra (kết quả) là một quan hệ mới
 Các phép toán cơ bản: select (chọn), project (chiếu),
union (hợp), set-diffrence (trừ), Cartesian-product
(tích Đề-các) và rename (đổi tên)
 Một số phép toán khác: set-intersection (giao),
natural-join (gộp), division (chia), assignment (gán)
 Được định nghĩa dựa vào các phép toán cơ bản
15
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Select (phép chọn) σ
 Phép select nhận đầu vào là một quan hệ, và cho
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ữ)
 Ký hiệu: σ
vị ngữ
(r)
 VD:
 σ
năm-sinh <= 1950
(tác-giả)
 σ
sản-phẩm = “máy tính”
(hoá-đơn)

16
EE4509, EE4253, EE6133 – HK1 2013/2014

TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
id
sản phẩm

tiền


1

máy
tính 20

3

điện
thoại 10

4

máy
tính 22

7

tivi
5

10
tủ
lạnh 8


11
máy
tính 13

id
sản phẩm

tiền


1

máy
tính 20

4

máy
tính 22

11
máy
tính 13

σ
sản-phẩm = “máy tính”
(hoá-đơn)
Project (phép chiếu) Π
 Phép project nhận đầu vào là một quan hệ, và cho

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)
17
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Π
title, author
(sách)
id

title author
pub
-
year
1

The call of the wild

Jack London
1903
3


The
universe in a nutshell
Stephen Hawking
2001
4

Hồng
lâu mộng
Tào
Tuyết Cần 1791
title author
The call of the wild

Jack London

The
universe in a nutshell
Stephen Hawking
Hồng
lâu mộng
Tào
Tuyết Cần
Union (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ệ
 Ký hiệu: r1 ∪ r2
 VD:
 thành-phố-Mỹ ∪ thành-phố-VN

 sách-văn-học ∪ sách-lịch-sử
18
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
tên món giá
phở
30
bún
25
cơm
40
tên món giá
cafe
30
nước
cam 25
coca
40
tên món giá
phở
30
bún
25
cơm
40
cafe
30
nước
cam 25
coca

40
đồ-ăn ∪ đồ-uống
Set-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
 Ký hiệu: r1 – r2
 VD:
 thực-đơn – đồ-ăn
 máy-tính – laptop
 điện-thoại – sản-phẩm-Apple
19
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
sản phẩm

giá
Xoom
15
Galaxy Tab
13
iPhone
20
Desire
S 10
iPad
17
sản phẩm

giá

iPhone
20
Macbook
30
iPad
17
iPod
5
sản phẩm

giá
Xoom
15
Galaxy Tab
13
Desire
S 10
điện-thoại – sản-phẩm-Apple
Cartesian-product (tích Đề-các) ×
 Phép Cartesian-product nhận đầu vào là hai quan hệ, và
trả về kết quả là tập tất cả các bộ giá trị giữa chúng
 Ký hiệu: r1 × r2
 VD:
 ca-sĩ × bài-hát
 nhân-viên × chi-nhánh
20
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
id nhân viên


tên
123 Lê Đức Thọ
427 Bùi Văn Hải
id chi nhánh

tên
2


Nội
1

Sài
Gòn
3

Đà
Nẵng
nhân-viên × chi-nhánh
id nhân
viên
nhân-
viên.tên
id chi nhánh
chi-
nhánh.tên
123 Lê Đức Thọ 2

Nội
123 Lê Đức Thọ 1

Sài
Gòn
123 Lê Đức Thọ 3
Đà
Nẵng
427 Bùi Văn Hải 2

Nội
427 Bùi Văn Hải 1
Sài
Gòn
427 Bùi Văn Hải 3
Đà
Nẵng
Để tránh trùng tên, dùng ký hiệu:
tên-quan-hệ.tên-thuộc-tính
Biể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:
 ρ
đồ-uống-rẻ

giá < 30
(đồ-uống))
 ρ
nv-cn(tên-nhân-viên, tên-chi-nhánh)

nhân-viên.tên, chi-nhánh.tên

nhân-viên.id-chi-nhánh = chi-nhánh.id
(nhân-viên × chi-nhánh)))
21
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Set-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ệ
 Ký hiệu: r1 ∩ r2
 VD:
 món-ăn-Tàu ∩ món-ăn-VN
 khách-mua-máy-tính ∩ khách-mua-điện-thoại

 Phép set-intersection có thể được định nghĩa thông qua
phép trừ:
r1 ∩ r2 = r1 – (r1 – r2)
22
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Natural-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ả
về tập kết quả
 Ký hiệu: r1 ⋈ r2
 VD:
 tác-giả ⋈ bài-hát
 hoá-đơn ⋈ sản-phẩm
23
EE4509, EE4253, EE6133 – HK1 2013/2014

TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
id-sp

sản phẩm giá
3 Xoom 15
6 Galaxy Tab 13
10 iPhone 20
id-hđ id-sp khách-hàng
333 3 Jobs
565 6 Obama
792 3 Bill
898 10 Paul

id-hđ

id-sp khách-hàng sản phẩm giá
333 3 Jobs Xoom 15
565 6 Obama Galaxy Tab 13
792 3 Bill Xoom 15
898 6 Paul iPhone 20
Division (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 t
s
∈ S, có một t
r
∈ R thoả mãn: t
s
[S] = t
r
[R] và t
r
[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))

24
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Assignment (gán) ←
 Phép assignment dùng để gán kết quả của một biểu thức
vào một biến (tương tự như trong các ngôn ngữ lập
trình)

 Ký hiệu: r1 ← r2
 VD:
 u ← Π
R – S
(r)
v ← Π
R – S
(u × s) – Π
R – S, S
(r))
r ÷ s = u – v
 Phép assignment chỉ giúp thu gọn và đơn giản hoá biểu
thức

25
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×