Chương 5: Relational mapping

Download Report

Transcript Chương 5: Relational mapping

Giao trinh BM HTTT - Khoa CNTT HUI
1
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Design the conceptual schema
Annotate the conceptual schema with mapping
choices as needed
Map the design to a logical schema
Finesse the logical schema as needed
Generate the physical schema
Create external schema(s) (e.g., forms,
reports)
Enforce security levels as needed
Populate the database
Issue queries and updates
Update the schemas as needed
Giao trinh BM HTTT - Khoa CNTT - HUI
2
•
•
•
Sơ đồ quan hệ (relational schema) là 1 tập
các định nghĩa bảng quan hệ, các ràng buộc
và cả quy luật suy diễn
Cấu trúc của 1 bảng quan hệ được gọi là
table scheme hay biến quan hệ (relation
variable), Nó chứa 1 tập hợp các thuộc tính và
miền giá trị tương ứng (domain) của mỗi
thuộc tính.
Ứng với mỗi sơ đồ bảng có thể được phân bố
bởi 1 tập hợp các hàng (tuple) , nhưng phấn
bố này không thuộc vào chính sơ đồ bảng
Giao trinh BM HTTT - Khoa CNTT - HUI
3
Giao trinh BM HTTT - Khoa CNTT - HUI
4

Ràng buộc duy nhất (uniqueness
constraint) được chỉ ra bằng đường
gạch dưới.
◦ Khóa dự tuyển (candidate key)
◦ Khóa chính (primary key): là 1 trong các
khóa dự tuyến, các khóa dự tuyển còn lại
gọi là "alternate keys“ hay "secondary
keys“. Khóa chính ký hiệu bằng đường
gạch dưới đôi nếu có tồn tại các alternate
key khác.
Giao trinh BM HTTT - Khoa CNTT - HUI
5


Nếu chỉ có 1 candidate key thì mặc định nó là
primary key
Nếu có nhiều hơn 1 candidate key
empNr là khóa chính
Primary key
Secondary key
Giao trinh BM HTTT - Khoa CNTT - HUI
6



Cột không cho phép có giá trị null được gọi
là bắt buộc (mandatory)
Cột cho phép giá trị null được gọi là tùy
chọn (optional), ký hiệu []
Ví dụ: Employee( empNr, salary, [tax] ) , tax
là cột optional
Giao trinh BM HTTT - Khoa CNTT - HUI
7


Ánh xạ từ mô hình ORM thành sơ đồ quan hệ
Do tax có quan hệ là tùy chọn trong ORM nên
khi chuyển sang ER nó thành cột tùy chọn
[tax]
Giao trinh BM HTTT - Khoa CNTT - HUI
8

Ràng buộc vai trò bắt buộc (Mandatory role)
được chuyển thành cột bắt buộc trong bảng
và ràng buộc subset sẽ được chuyển vào
bảng khác (nếu cần) chứa giá trị về loại đối
tượng đó.
Giao trinh BM HTTT - Khoa CNTT - HUI
9


Do luật cơ bản drives là m:n nên nó được map
thành 1 bảng quan hệ khác.
Ràng buộc vai trò bắt buộc chỉ được thể hiện 1
phần 1 nghiệp vụ: không có 1 hạn chế nào khi đưa
mã số nhân viên vào bảng Drive mà mã số này
không có trong bảng Employee.
Employee( empNrg, gender, salary, [tax] )
Drive(EmpNr, CarRegNo)
Giao trinh BM HTTT - Khoa CNTT - HUI
10


Làm thế nào để ánh xạ ràng buộc role bắt
buộc?
Một role r là bắt buộc đối với đối tượng loại
O chỉ nếu phần bố của mỗi role khác bởi O
phải là 1 subset của phân bố của r. Vì vậy mỗi
role tùy chọn của 1 đối tượng đều có 1 ràng
buộc subset ngầm định.
Giao trinh BM HTTT - Khoa CNTT - HUI
11

Để thể hiện ràng buộc subset của role drives,
thêm vào lược đồ quan hệ 1 ràng buộc
subset từ cột empNr của bảng Drives vào cột
empNr của bảng Employee
Giao trinh BM HTTT - Khoa CNTT - HUI
12

Ràng buộc subset trong lược đồ quan hệ
thể hiện bằng mũi tên đứt nét  bảo đảm
“any employee listed as driving a car is
also listed in the Employee table”
Giao trinh BM HTTT - Khoa CNTT - HUI
13


Theo thuật ngữ quan hệ, ràng buộc subset
được gọi là ràng buộc bảo toàn tham chiếu
(referential integrity constraint).
Thuộc tính empNr của bảng Drives là khóa
ngoại (foreign key) tham chiếu đến thuộc
tính empNr của bảng Employee.
Giao trinh BM HTTT - Khoa CNTT - HUI
14

Hai quy luật bảo toàn cơ bản (integrity rules)
◦ Bảo toàn thực thể (entity integrity): yêu cầu khóa
chính không được chứa giá trị nulls
◦ Bảo toàn tham chiều (Referential integrity): mỗi giá
trị khác null của khóa ngoại phải khớp với 1 giá trị
nào đó của khóa chính.

Người dùng cũng có thể đưa ra các ràng
buộc của người dùng (user-defined
constraint) và các quy luật suy diễn.
Giao trinh BM HTTT - Khoa CNTT - HUI
15

Hãy ánh xạ lược đồ ORM trên thành lược đồ
ER
Giao trinh BM HTTT - Khoa CNTT - HUI
16
Giao trinh BM HTTT - Khoa CNTT - HUI
17

Page 492
Giao trinh BM HTTT - Khoa CNTT - HUI
18


Từ một lược đồ ý niệm có thể có nhiều thiết
kế lược đồ quan hệ khác nhau.
Để chọn 1 lược đồ quan hệ, cần dựa vào 3
tiêu chuẩn: correct, efficient, and clear.
◦ Correct: phải tương đương với lược đồ ý niệm
◦ Efficient: thời gian đáp ứng truy vấn nhanh và đòi
hỏi không gian lưu trữ hợp lý
◦ Clear: lược đồ phải tương đối dễ hiễu và dễ làm
việc với nó
Tiêu chuẩn nào là quan trọng nhất???
Giao trinh BM HTTT - Khoa CNTT - HUI
19





Correct:là tiêu chuẩn quan trọng nhất.
Để bảo đảm tính đúng đắn của dữ liệu trong
lược đồ quan hệ thì cần phải tránh dư thừa
(avoid redundancy)
Một thủ tục mới để ánh xạ là Rmap
(Relational mapping).
Rmap bảo đảm lược đồ quan hệ không bị dư
thừa và hạn chế số bảng.
Rmap mở rộng và tinh chỉnh thủ tục cũ hơn
"Optimal Normal Form" (ONF) .
Giao trinh BM HTTT - Khoa CNTT - HUI
20


Bước cơ bản của Rmap là :” Redundancy is
repetition of an atomic fact. ”. Nều bảo đảm
loại quan hệ là atomic thì dễ dàng tránh được
dư thừa trong các bảng quan hệ.
Thường mỗi hàng của bảng quan hệ sẽ chứa
1 hay nhiều luật cơ bản (elementary facts).
Ngược lại hàng của bảng chứa 1 loại tham
chiếu.
Giao trinh BM HTTT - Khoa CNTT - HUI
21


Để tránh dư thừa trong các bảng phải bảo
đảm “each fact type maps to only one
table in such a way that its instances
appear only once”.
Hai quy luật nhóm (grouping) cơ bản để
thực thi qui định trên
Giao trinh BM HTTT - Khoa CNTT - HUI
22
Giao trinh BM HTTT - Khoa CNTT - HUI
23

Có 2 loại quan hệ chức năng (functional role)
được gắn với loại đối tượng A.
Giao trinh BM HTTT - Khoa CNTT - HUI
24
Giao trinh BM HTTT - Khoa CNTT - HUI
25
Ràng buộc ngang bằng (equality constraint) được chỉ ra
bằng đường mũi tên đứt nét nối giữa các trường empNr
của cả 2 bảng. Vì cả 2 role của Academic đều là bắt buộc
và mỗi role ánh xạ thành 1 bảng riêng biệt.
Ràng buộc ngang bằng được xem như là 2 ràng buộc
subset ngược chiều nhau, tạo ra 1 vòng tham chiếu
(referential cycle)
Giao trinh BM HTTT - Khoa CNTT - HUI
26

Ràng buộc subset từ Qualification.empNr
đến Academic.empNr là ràng buộc foreign
key vì nó tham chiếu đến 1 primary key.
Nhưng ràng buộc subset từ Academic.empNr
đến Qualification.empNr không phải là ràng
buộc foreign key vì nó chỉ tham chiếu đến 1
phần của primary key.
Giao trinh BM HTTT - Khoa CNTT - HUI
27
Mỗi race có nhiều nhất 1 winner.
Gender và weight là các role chức năng gắn với Horse.
Tên cột "winner" được dùng thay thế "horseName" để phù
hợp với ngữ nghĩa hơn.
Giao trinh BM HTTT - Khoa CNTT - HUI
28

Trong ORM, Bankcard và Client có mối kết
hợp 1:1. Nếu Bankcard không có thêm 1 role
chức năng nào khác, nên nhóm với các loại
chức năng khác vào cùng 1 bảng.
Giao trinh BM HTTT - Khoa CNTT - HUI
29


Cột bankcard là tùy chọn, có thể có giá trị
null, nên sẽ gây bất lợi nhiều hơn khi gom
các cột vào cùng 1 bảng.
Bankcard được gạch dưới để chỉ ra UC với
các giá trị khác null nhưng nó có thể chứa 1
hay nhiều giá trị null  cột bankcard không
thể làm khóa chính.
Giao trinh BM HTTT - Khoa CNTT - HUI
30


Với 2 UC, clientNr được gạch dưới bằng nét
đôi để chỉ nó là primary key.
Nhưng nếu Bankcard có thêm các role chức
năng khác thì nên nhóm các mối quan hệ của
bankcard thành 1 bảng khác.
Giao trinh BM HTTT - Khoa CNTT - HUI
31
Giao trinh BM HTTT - Khoa CNTT - HUI
32

Trong mối kết hợp 1:1, thường chỉ có 1 role
là bắt buộc, tốt hơn hết là hãy nhóm trên phía
role bắt buộc.
Giao trinh BM HTTT - Khoa CNTT - HUI
33

Trong mối kết hợp 1:1 giữa Employee và
Department thì Employee là tùy chọn và
Department là bắt buộc. Vì vậy thường thì
nên nhóm bên phía bắt buộc, đưa cột
headEmpNr vào trong bảng Department
Giao trinh BM HTTT - Khoa CNTT - HUI
34


Nhóm bên phía role bắt buộc
Nếu nhóm bên phía tùy chọn, đưa cột
deptHeaded vào bảng Employee.
Giao trinh BM HTTT - Khoa CNTT - HUI
35

Nếu theo cách nhóm theo phía tùy chọn thì
có 2 nhược điểm sau:
◦ Cột tùy chọn deptHeaded cho phép giá trị
null, mà giá trị null thì nên tránh dùng vì
ngoài việc tốn không gian lưu trữ, nó
thường bất tiện cho người dùng.
◦ Ràng buộc equality giữa các bảng thay
cho ràng buộc subset.
Giao trinh BM HTTT - Khoa CNTT - HUI
36

Ràng buộc duy nhất ngoài thường có 2 dạng:
◦ Dạng lược đồ tham chiếu phức
◦ Dạng UC ngoài thực sự liên quan đến các loại quan
hệ (fact type) khác nhau trong lược đồ
Giao trinh BM HTTT - Khoa CNTT - HUI
37

Các bước để ánh xạ ràng buộc duy nhất
ngoài dạng sơ đồ tham chiếu phức:
◦ Bỏ qua sơ đồ tham chiếu của mỗi loại đối tượng
◦ Nhóm các quan hệ vào các bảng bằng cách dùng
ký tự thay thế đơn giản cho các role của đối
tượng.
◦ Thay thế mỗi ký hiệu bằng các thuộc tính được
dùng trong bảng để xác định đối tượng.
Giao trinh BM HTTT - Khoa CNTT - HUI
38


Từ mối quan hệ “Employee e is of Gender g”
ánh xạ thành Employee(e,g)
Thay thề g thành gender, vì e liên quan đến
sơ đồ tham chiếu phức nên nó được ánh xạ
thành familyName, initials
Giao trinh BM HTTT - Khoa CNTT - HUI
39
Giao trinh BM HTTT - Khoa CNTT - HUI
40



Khác 2 sơ đồ trên, Employee có khóa chính đơn. UC
ngoài liên quan đến 2 loại quan hệ
UC này được ánh xạ thành UC chứa cả surname và
initials trong bảng quan hệ.
Khi đó UC trên khóa chính sẽ chứa cả 3 UC đơn
tương ứng với 3 UC trong ORM.
Giao trinh BM HTTT - Khoa CNTT - HUI
41
Giao trinh BM HTTT - Khoa CNTT - HUI
42

Nếu UC ngoài liên quan đến 1 tập các role có
1 role m:n (LabSession is assigned to
Student).
Giao trinh BM HTTT - Khoa CNTT - HUI
43

Vì loại quan hệ m:n được ánh xạ thành 1
bảng, UC ngoài sẽ liên quan đến cả 2 bảng
tương đương với 1 UC nội nối courseCode và
studentNr trong kết nối nội của 2 bảng.
Giao trinh BM HTTT - Khoa CNTT - HUI
44
Giao trinh BM HTTT - Khoa CNTT - HUI
45


Mối kết hợp Employee worked on Project
được đối tượng hóa thành Work.
Loại đối tượng hóa này có 1 role bắt buộc và
1 role tùy chọn, cả hai role đều role chức
năng.
Giao trinh BM HTTT - Khoa CNTT - HUI
46



Xem mối kết hợp đối tượng hóa này như 1
"black box", và loại đối tượng Work chỉ có 2
loại quan hệ chức năng nên được nhóm vào
cùng 1 bảng. Ký hiệu Work như 1 black box
Bảng kết quả Work(
, startdate, [enddate] )
Thay thế
thành các thuộc tính empNr và
projectName
Work(empNr, projectName, startdate,
[enddate])
Giao trinh BM HTTT - Khoa CNTT - HUI
47
Giao trinh BM HTTT - Khoa CNTT - HUI
48

Page 514
Giao trinh BM HTTT - Khoa CNTT - HUI
49