Or mapping

503 views 25 slides Oct 03, 2011
Slide 1
Slide 1 of 25
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25

About This Presentation

No description available for this slideshow.


Slide Content

1
Object-Relation
Mapping

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.

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:
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
name : String
dateOfBirth : Date
address : String
phoneNo : String
/averageMark : double
Student (StuID, Name, DateOfBirth, Address, PhoneNo)
Khóa đại diện
1Hoang 1/4/196912 Nguyen Trai4324345
2Lan 8/16/197514/5 Ly Thai To8754231

5

Mapping Collection
EMPLOYEE (EmployeeID , Name, Address, …)
EMPLOYEEPHONE (EmployeeID , PhoneNumber)
Employee
name : String
address : String
phoneList : List<String>

6

Mapping Component
STUDENT (StudentID , FirstName, LastName, phoneNo, …)
Name
Student
hasname:Name
phoneNo

firstName
lastName
1

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
1 0..1
SoDKXe
HieuXe
MauXe

tenTX
soDT

TAIXE (MaTX, TenTX, SoDT, …)
XE (SoDKXe, HieuXe, …, MaTX
constraint unique not null)
Giải pháp 1: Đặt khóa chính của quan
hệ TAIXE vào quan hệ XE:
TAIXE (MaTX, TenTX, SoDT, …, SoDKXe
constraint unique)
XE (SoDKXe, HieuXe, …,)
Giải pháp 2: Đặt khóa chính của quan hệ
XE vào quan hệ TAIXE

8

Mapping Association 1-1 dùng Join Table
TAIXE XE
được giao
1 0..1
SoDKXe
HieuXe
MauXe

tenTX
soDT

TAIXE (MaTX, TenTX, SoDT, …) XE (SoDKXe, HieuXe, …,)
TAIXE_XE(MaTX constraint unique, SoDKXe constraint unique)

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ụ:
DepartmentStaff
thuộc
0..n 0..1
name
sex

name
location

STAFF (StaffID, Name, Sex…, DepID)
DEPATMENT (DepID, Name, Location, …)

10

Mapping Association 1-n dùng Join table
OrderCustomer
has
0..n1
name
address

orderedDate
shipDate

CUSTOMER (CustomerID,
Name, Address, …)
ORDER (OrderID,
OrderedDate, ShipDate…)
ORDER_CUSTOMER (CustomerID, OrderID constraint unique)

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.
OfferingLecture
teach
1..n 0..n
name
email

startDate
daysTimes

LECTURE (LectureID, Name, Email, …)
TEACH (LectureID, OfferingID)
Offering (OfferingID, StartDate, DaysTime, …)

12

Biểu diễn quan hệ n-n
STUDENT (studentID, Name, Address, …)
Student Offering
0..n 0..n
startDate
daysTimes

name
address

take
grade
OFFERING (offerringID, StartDate, DaysTimes, …)
RECORD (StudentID, OfferingID, grade)

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
OfferingCource
has
1 0..n
name
credits

startDate
daysTimes

OFFERING (OfferingID, startDate, DaysTimes, …, CourseID not null)
COURSE (CourseID, Name, Credits, …)

14

Quan hệ Composition
ORDER (OrderID, OrderedDate, ShipDate, …)
LINEITEM (OrderID, LineNo, Quantity, ItemID)
ITEM (ItemID, description, price, …)
Khóa riêng phần
LineItem
Order
has
1 0..norderedDate
shipDate

lineNo
quantity
Item
description
price

0..n 1
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.

15

Mapping Composition
LoanNumberCustomerNumberAmountBorrowed
123 456 32,000
156 321 13,000
LoanNumberDate Amount
12317/5/1999 200
12318/6/1999 200
Record
relationship by
storing key of
one side in the
table on the
many side
Loan
loanNumber
customerNumber
amountBorrowed
Payment
date
amount0..n0..n

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.
1..n
BENHNHAN
tenBN
diachi

ngay
gio
ketQua
PHACDO
DIEUTRI
maPD
mieuta

BACSI
tenBS
dienthoai

0..n
0..n
1
BENHNHAN (MaBN, TenBN, …)
BACSI (MaBS, TenBS, diaenthoai, …)
PHACDODIEUTRI (MaPDo, MieuTa, …)
DIEUTRI (MaBN, MaPD, MaBS, Ngay, Gio, KetQua)

17

Quan hệ đệ quy 1-1
EMPLOYEE
married
0..1
name
sex

0..1
EMPLOYEE (EmployeeID, Name, Sex,…, PartnerID unique)

NamBao145
105NuHoa119
119NamBinh105
100NamTuan101
101NuLan100
PartnerIDSexNameEmployeeID

18

Quan hệ đệ quy 1-n
CUSTOMER (CustomerID, Name, …, IntroducerID)
200Hong Bang600

200Huflit500
Hoa Sen400
400DHTN300
400DHNL200
Hung Vuong100
IntroducerIDNameCustomerID
Customer
introduce
0..1
name
address

0..n
introducing
person
introduced
person

19

Biểu diễn quan hệ đệ quy n-n
PART (PartID, description, …)
CONTAIN (PartID, ComponentID, SoLuong)
PART
contain
0..n
description
madeIn

0..n
quantity

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.

21

Quan hệ Generalization - Specialization
Giải pháp 1 là tốt:
SINHVIEN (MaSV, TenSV, GioiTinh, DiaChi, …, bangTNDH, HeDaoTao)
tenSV
gioitinh
diachi

SINHVIEN
SVCAODANG SVDAIHOC
bangTNDH
SVCAOHOC
hệ đào tạo

22

Quan hệ Tổng quát hóa – Đặc biệt hóa
name
address
hiredDate

EMPLOYEE
hourlyRate
HOURLY
EMPLOYEE
annalSalary
stockOption
SALARY
EMPLOYEE
contractNumber
billingRate
CONSULTANT

23

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)
Quan hệ Tổng quát hóa – Đặc biệt hóa

24

Các quan hệ đặc biệt khác
Đối xử như quan hệ 1:N
PLAYER (playerID, name, …, teamID)
TEAM (teamID, name, coachName, …)
TeamPlayer
in
1..22 1
name
address

name
coachName

25

Các quan hệ đặc biệt khác
Đố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)
OfferingLecture
teach
1..2 0..n
name
email

startDate
daysTimes
Tags