2. Mapping Terminology
Object Mapping
Xác định cách thức lưu trữ các đối tượng và các quan hệ
của chúng vào kho dữ liệu thường trú mà trong trường hợp
này là cơ sở dữ liệu quan hệ.
Property: thuộc tính dữ liệu của đối tượng
Hoặc là thuộc tính vật lý, ví dụ chuỗi firstName
hoặc là các thuôc tính ảo (thuôc tính suy dẫn) được cài đặt qua một
phép toán, ví dụ getTotal() trả về tổng tiền của một hóa đơn.
Property mapping:
Cách thức lưu trữ các thuộc tính của đối tượng.
Relationship mapping:
Cách thức lưu trữ các quan hệ (association, aggregation,
composition) giữa 2 hay nhiều đối tượng.
2
3. Shadow Information
Shadow information là dữ liệu nào đó mà đối
tượng cần bảo trì, ngoài các dữ liệu miền thông
thường. Chẳng hạn:
Thông tin khóa chính mà là khóa đại diện (surrogate key)
không có ý nghĩa gi trong thương mại.
Việc điều khiển đồng thời (concurrency control) cần dùng
các thông tin đánh dấu chằng hạn timestamps hay bộ đếm
tăng (incremental counters), và số phiên bản (versioning
numbers).
To persist an object properly the class would need to
implement shadow attributes that maintain these values.
Quy ước chung:
3
Các thông tin shadow không trình bày trong lược đồ lớp.
4. Mapping Entity Class
Ánh xạ trực tiếp thành một quan hệ (bảng)
Các thuộc tính đơn giản được ánh xạ thành các cột của bảng
Các thuộc tính tạm thời dùng trong chương trình (thuộc tính suy dẫn)
không cần lưu trữ, ngoại trừ để tăng hiệu quả xử lý.
Ví dụ: thuộc averageMark của Student.
Khóa chính:
Chọn thuộc tính định danh (ObjectIDs) của lớp thực thể
ví dụ name
Hoặc thông thường chọn một khóa đại diện (surrogate key)
Student
Khóa đại diện
name : String
dateOfBirth : Date
Student (StuID, Name, DateOfBirth, Address, PhoneNo)
address : String
phoneNo : String 1 Hoang 1/4/1969 12 Nguyen Trai 4324345
/averageMark : double 2 Lan 8/16/1975 14/5 Ly Thai To 8754231
4
6. Mapping Component
Student Name
name:Name has 1 firstName
phoneNo
lastName
…
STUDENT (StudentID , FirstName, LastName, phoneNo, …)
6
7. Mapping Association 1-1
Khởi tạo khóa chính của một quan hệ vào quan hệ
còn lại.
Được gọi là khóa ngoại (Foreign Key).
TAIXE XE
được giao
tenTX SoDKXe
soDT 1 0..1 HieuXe
… MauXe
…
TAIXE (MaTX, TenTX, SoDT, …) TAIXE (MaTX, TenTX, SoDT, …, SoDKXe
XE (SoDKXe, HieuXe, …, MaTX constraint unique)
constraint unique not null) XE (SoDKXe, HieuXe, …,)
Giải pháp 1: Đặt khóa chính của quan Giải pháp 2: Đặt khóa chính của quan hệ
hệ TAIXE vào quan hệ XE: XE vào quan hệ TAIXE 7
9. Mapping Association 1-n
Khởi tạo khóa chính của quan hệ mặt “một” trong
quan hệ mặt “nhiều.
Ví dụ:
Staff Department
thuộc
name 0..n 0..1 name
sex location
… …
STAFF (StaffID, Name, Sex…, DepID)
DEPATMENT (DepID, Name, Location, …)
9
10. Mapping Association 1-n dùng Join table
Customer Order
name has
1 0..n orderedDate
address shipDate
… …
CUSTOMER (CustomerID, ORDER (OrderID,
Name, Address, …) OrderedDate, ShipDate…)
ORDER_CUSTOMER (CustomerID, OrderID constraint unique)
10
11. Biểu diễn quan hệ n-n
Mối quan hệ n-n được biểu diễn bằng một quan hệ
mới có khóa chính là tổ hợp các khóa chính của 2
quan hệ gốc.
Lecture Offering
teach
name 1..n 0..n startDate
email daysTimes
… …
TEACH (LectureID, OfferingID)
LECTURE (LectureID, Name, Email, …)
Offering (OfferingID, StartDate, DaysTime, …)
11
12. Biểu diễn quan hệ n-n
Student Offering
take
name startDate
0..n 0..n
address daysTimes
… …
grade
RECORD (StudentID, OfferingID, grade)
STUDENT (studentID, Name, Address, …)
OFFERING (offerringID, StartDate, DaysTimes, …)
12
13. Mapping Aggregation
Agregation là quan hệ Assocition đặc biệt:
Quan hệ whole-part giữa 2 đối tượng
Có sự phụ thuộc tồn tại của các đối tượng của một lớp thực
thể vào các đối tượng của lớp thực thể khác.
Ánh xạ giống như quan hệ Assocition
Cource Offering
name has startDate
1 0..n
credits daysTimes
… …
OFFERING (OfferingID, startDate, DaysTimes, …, CourseID not null)
COURSE (CourseID, Name, Credits, …)
13
14. Quan hệ Composition
Quan hệ Composition
Thực thể yếu phụ thuộc tồn tại vào thực thể cha.
Khóa chính của quan hệ biểu diễn thực thể cha
được dùng làm một bộ phận khóa chính của quan
hệ biểu diễn thực thể yếu.
Order LineItem Item
has
orderedDate 1 0..n lineNo 0..n 1 description
shipDate price
quantity
… …
ORDER (OrderID, OrderedDate, ShipDate, …)
LINEITEM (OrderID, LineNo, Quantity, ItemID)
ITEM (ItemID, description, price, …) Khóa riêng phần
14
15. Mapping Composition
Loan
Payment
loanNumber
date
customerNumber
amountBorrowed 0..n amount
Record
relationship by
storing key of
LoanNumber CustomerNumber AmountBorrowed one side in the
123 456 32,000 table on the
156 321 13,000 many side
LoanNumber Date Amount
123 17/5/1999 200
123 18/6/1999 200
15
16. Quan hệ bậc cao
Quan hệ bậc cao sẽ được chuyển thành các quan hệ nhị
phân giữa các lớp, rồi áp dụng các phép ánh xạ bình
thường.
BENHNHAN BACSI
tenBN 0..n 1..n tenBS
diachi dienthoai
… …
ngay
0..n
gio
1 ketQua
PHACDO
DIEUTRI BENHNHAN (MaBN, TenBN, …)
maPD BACSI (MaBS, TenBS, diaenthoai, …)
mieuta PHACDODIEUTRI (MaPDo, MieuTa, …)
… DIEUTRI (MaBN, MaPD, MaBS, Ngay, Gio, KetQua)
16
17. Quan hệ đệ quy 1-1
EMPLOYEE
name 0..1
sex
…
married
0..1
EMPLOYEE (EmployeeID, Name, Sex,…, PartnerID unique)
EmployeeID Name Sex … PartnerID
100 Lan Nu 101
101 Tuan Nam 100
105 Binh Nam 119
119 Hoa Nu 105
145 Bao Nam
17
18. Quan hệ đệ quy 1-n
Customer introducing
name person
0..1
address
…
0..n CUSTOMER (CustomerID, Name, …, IntroducerID)
introduced
person CustomerID Name … IntroducerID
100 Hung Vuong
200 DHNL 400
introduce 300 DHTN 400
400 Hoa Sen
500 Huflit 200
600 Hong Bang 200
18
19. Biểu diễn quan hệ đệ quy n-n
PART
description 0..n
madeIn
…
0..n
contain
quantity
PART (PartID, description, …)
CONTAIN (PartID, ComponentID, SoLuong)
19
20. Quan hệ Generalization - Specialization
Có 3 chiến lược cài đặt quan hệ tổng quát hóa – Đặc
biệt hóa:
2. Chỉ cài đặt một bảng cho lớp cha bao gồm tất cả
các thuộc tính của lớp con.
3. Cài đặt các bảng cho cả lớp cha và các lớp con và
chia sẻ chung một khóa chính.
4. Chỉ cài đặt các bảng cho các lớp con, lập lại các
thuộc tính của lớp cha trong từng bảng.
20
21. Quan hệ Generalization - Specialization
SINHVIEN
tenSV
gioitinh
diachi
…
hệ đào tạo
SVCAODANG SVDAIHOC SVCAOHOC
bangTNDH
Giải pháp 1 là tốt:
SINHVIEN (MaSV, TenSV, GioiTinh, DiaChi, …, bangTNDH, HeDaoTao)
21
22. Quan hệ Tổng quát hóa – Đặc biệt hóa
EMPLOYEE
name
address
hiredDate
…
HOURLY SALARY CONSULTANT
EMPLOYEE EMPLOYEE contractNumber
hourlyRate annalSalary billingRate
stockOption
22
23. Quan hệ Tổng quát hóa – Đặc biệt hóa
Giải pháp 1:
EMPLOYEE (EmployeeID, Name, Address, HiredDate, EmployeeType,
HourLyRate, AnnalSalary, StockOption, ContractNumber, BillingRate)
Giải pháp 2:
EMPLOYEE (EmployeeID, Name, Address, HiredDate)
HOURLYEMPLOYEE (EmployeeID, HourlyRate)
SALARYEMPLOYEE (EmployeeID , AnnalSalary, StockOption)
CONSULTANT (EmployeeID, ContractNumber, BillingRate)
Giải pháp 3:
HOURLYEMPLOYEE (HourlyEmployeeID, Name, Address, HiredDate
HourlyRate)
SALARYEMPLOYEE (SalaryEmployeeID , Name, Address, HiredDate
AnnalSalary, StockOption)
CONSULTANT (ConsultantEmployeeID, Name, Address, HiredDate
ContractNumber, BillingRate)
23
24. Các quan hệ đặc biệt khác
Player Team
name in
1..22 1 name
address coachName
… …
Đối xử như quan hệ 1:N
PLAYER (playerID, name, …, teamID)
TEAM (teamID, name, coachName, …)
24
25. Các quan hệ đặc biệt khác
Lecture Offering
name teach startDate
1..2 0..n
email daysTimes
… …
Đối xử như quan hệ N:N
LECTURE (LectureID, Name, Email…)
OFFERING (OfferingID, StartDate, DayTimes …)
TEACH (LectureID, OfferingID)
Đối xử như quan hệ 1:N
LECTURE (LectureID, Name, Emailm, …)
OFFERING (OfferingID, StartDate, …, LectureID1,
LectureID2)
25