Or mapping

669 views
583 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
669
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Or mapping

  1. 1. Object-RelationMapping 1
  2. 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. 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. 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ệnname : StringdateOfBirth : Date Student (StuID, Name, DateOfBirth, Address, PhoneNo)address : StringphoneNo : String 1 Hoang 1/4/1969 12 Nguyen Trai 4324345/averageMark : double 2 Lan 8/16/1975 14/5 Ly Thai To 8754231 4
  5. 5. Mapping Collection Employee name : String address : String phoneList : List<String> … EMPLOYEE (EmployeeID , Name, Address, …) EMPLOYEEPHONE (EmployeeID , PhoneNumber) 5
  6. 6. Mapping Component Student Name name:Name has 1 firstName phoneNo lastName … STUDENT (StudentID , FirstName, LastName, phoneNo, …) 6
  7. 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, …, SoDKXeXE (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
  8. 8. 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
  9. 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. 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. 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. 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. 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. 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. 15. Mapping Composition Loan Payment loanNumber date customerNumber amountBorrowed 0..n amount Record relationship by storing key ofLoanNumber 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. 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 BACSItenBN 0..n 1..n tenBSdiachi 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. 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. 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. 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. 20. Quan hệ Generalization - SpecializationCó 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. 21. Quan hệ Generalization - Specialization SINHVIEN tenSV gioitinh diachi … hệ đào tạo SVCAODANG SVDAIHOC SVCAOHOC bangTNDHGiải pháp 1 là tốt:SINHVIEN (MaSV, TenSV, GioiTinh, DiaChi, …, bangTNDH, HeDaoTao) 21
  22. 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. 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. 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. 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

×