You are on page 1of 24

Object-Relation

Mapping

1
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
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:
 Các thông tin shadow không trình bày trong lược đồ lớp.

3
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
Mapping Collection

Employee
name : String
address : String
phoneList : List<String>

EMPLOYEE (EmployeeID , Name, Address, …)


EMPLOYEEPHONE (EmployeeID , PhoneNumber)

5
Mapping Component
Student Name
name:Name has 1 firstName
phoneNo
lastName

STUDENT (StudentID , FirstName, LastName, phoneNo, …)

6
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
xe: XE 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
Mapping Association 1-1 dùng Join Table
TAIXE XE
được giao
tenTX SoDKXe
soDT 1 0..1 HieuXe
… MauXe

TAIXE (MaTX, TenTX, SoDT, …) XE (SoDKXe, HieuXe, …,)

TAIXE_XE(MaTX constraint unique, SoDKXe constraint unique)

8
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
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
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
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
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
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
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
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
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
Biểu diễn quan hệ đệ quy n-n
PART
description 0..n
madeIn

0..n

contain

quantity

PART (PartID, description, …)


CONTAIN (PartID, ComponentID, Quantity)
19
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:
1. 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.
2. 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.
3. 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
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
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
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
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
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

You might also like