SlideShare uma empresa Scribd logo
1 de 25
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:
                                                                  3
       Các thông tin shadow không trình bày trong lược đồ lớp.
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
               …                                 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ệ 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
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, SoLuong)
                                              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:
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
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

Mais conteúdo relacionado

Mais de Châu Thanh Chương (20)

Lecture18
Lecture18Lecture18
Lecture18
 
Lecture17
Lecture17Lecture17
Lecture17
 
Lecture16
Lecture16Lecture16
Lecture16
 
Lecture15
Lecture15Lecture15
Lecture15
 
Lecture14
Lecture14Lecture14
Lecture14
 
Lecture13
Lecture13Lecture13
Lecture13
 
Lecture12
Lecture12Lecture12
Lecture12
 
Lecture11
Lecture11Lecture11
Lecture11
 
Lecture10
Lecture10Lecture10
Lecture10
 
Lecture9
Lecture9Lecture9
Lecture9
 
Lecture8
Lecture8Lecture8
Lecture8
 
Lecture7 pattern
Lecture7 patternLecture7 pattern
Lecture7 pattern
 
Lecture6
Lecture6Lecture6
Lecture6
 
Lecture5
Lecture5Lecture5
Lecture5
 
Lecture4
Lecture4Lecture4
Lecture4
 
Lecture3
Lecture3Lecture3
Lecture3
 
Lecture2
Lecture2Lecture2
Lecture2
 
Lecture1
Lecture1Lecture1
Lecture1
 
Lecture19
Lecture19Lecture19
Lecture19
 
7 data management design
7 data management design7 data management design
7 data management design
 

Or 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. 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
  • 5. Mapping Collection Employee name : String address : String phoneList : List<String> … EMPLOYEE (EmployeeID , Name, Address, …) EMPLOYEEPHONE (EmployeeID , PhoneNumber) 5
  • 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
  • 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. 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