25/05/2018, 08:24

Chuyển từ mô hình ER sang mô hình quan hệ

Như chúng ta đã biết, mô hình ER là mô hình dữ liệu mức khái niệm. Sau quá trình khảo sát thiết kế, ta thu được mô hình này. Từ mô hình này ta có thể sử dụng các quy tắc chuyển sang mô quan hệ để thực hiện quản lý cơ sở dữ liệu trên máy tính. Bước ...

Như chúng ta đã biết, mô hình ER là mô hình dữ liệu mức khái niệm. Sau quá trình khảo sát thiết kế, ta thu được mô hình này. Từ mô hình này ta có thể sử dụng các quy tắc chuyển sang mô quan hệ để thực hiện quản lý cơ sở dữ liệu trên máy tính.

Bước 1

Mỗi kiểu thực thể bình thường (không phải kiểu thực thể yếu) trong mô hình ER trở thành một quan hệ. Quan hệ đó bao gồm tất cả các thuộc tính đơn giảnthuộc tính tổ hợp của thực thể. Thuộc tính định danh của thực thể là khóa chính của quan hệ.

Kiểu thực thể: EMPLOYEE, DEPARTMENT, PROJECT

==> quan hệ: EMPLOYEE, DEPARTMENT, PROJECT

Quan hệ Employee

Quan hệ: EMPLOYEE (Ssn, fname, minit, lname, bdate, sex, address, salary)

Quan hệ Department

Quan hệ: DEPARTMENT ( Dnumber, Dname)

Thuộc tính Locations không có trong quan hệ vì nó là thuộc tính đa trị. Quan hệ Project

Quan hệ: PROJECT (Pnumber, Pname, Plocation)

Bước 2

Cho mỗi thực thể yếu (Weak Entity) trong mô hình ER, tạo thành một quan hệ R, tất cả thuộc tính đơn giản của thực thể yếu trở thành thuộc tính của R. Thêm vào đó, thuộc tính định danh của thực thể chủ trở thành khóa ngoại của R.

Khoá chính của R là sự kết hợp giữa thuộc tính định danh của thực thể chủ và thuộc tính định danh của thực thể yếu.

DEPENDENT (Essn, Dependent_name, sex, bdate, relationship)

DEPENDENT ( Essn, Dependent_name , sex, bdate, relationship)

Bước 3

Cho mỗi mối liên kết 1-1 trong mô hình ER:

  • Xác định một quan hệ S_T. Kiểu thực thể có sự tham gia toàn bộ vào liên kết trở thành quan hệ S, thực thể còn lại trở thành quan hệ T.
  • Đưa khóa chính của T sang làm khóa ngoại của S.
  • Thuộc tính của mối quan hệ S_T trở thành thuộc tính của S.
DEPARTMENT(…, MGRSSN, MGRSTARTDATE)

DEPARTMENT(…, MGRSSN, MGRSTARTDATE)

Bước 4

Cho mỗi mối liên kết 1_N trong mô hình ER. Chuyển khóa chính của quan hệ phía 1 sang làm khóa ngoại của quan hệ phía N.

EMPLOYEE(…, DNO)

EMPLOYEE(…, DNO)

EMPLOYEE(…, SuperSSN)

EMPLOYEE(…, SuperSSN)

Bước 5

Cho mỗi mối liên kết MN, sinh ra một quan hệ mới R, chuyển khóa chính của hai quan hệ phía M và N thành khóa ngoại của quan hệ R. Khóa chính của R là sự kết hợp của hai khóa ngoại.

WORKS_ON( PNO, ESSN, Hours)

WORKS_ON( PNO, ESSN, Hours)

Bước 6

Nếu gặp thuộc tính đa trị

  • Chuyển thuộc tính đa trị thành quan hệ mới.
  • Thuộc tính định danh (hoặc 1 phần thuộc tính định danh) của thực thể chính chuyển thành khóa ngoại của quan hệ mới.
  • Khóa chính của quan hệ mới là khóa chính của bản thân quan hệ + khóa ngoại do thực thể chính chuyển sang.
DEPT_LOCATIONS ( DNumber, DLocation)

DEPT_LOCATIONS ( DNumber, DLocation)

Bước 7

Cho mỗi mối liên kết có bậc (>2), tạo ra quan hệ mới (R), khóa chính của các quan hệ tham gia liên kết được đưa làm khóa ngoại của quan hệ R và các khóa ngoại này đồng thời đóng vai trò là khóa chính của R.

SUPPLY (SName, ProjName, PartNo, Quantity)

SUPPLY (SName, ProjName, PartNo, Quantity)

Bước 8

Xử lý q uan hệ giữa lớp cha/ lớp con và chuyên biệt hoá hoặc tổng quát hoá.

Các lựa chọn khác nhau cho việc chuyển đổi một số lượng các lớp con từ cùng một chuyên biệt (hoặc tổng quát hoá thành lớp cha). Ngoài 7 bước đã trình bày ở trên trong bước 8 dưới đây đưa ra một lựa chọn phổ biến nhất và các điều kiện mà mỗi lựa chọn có thể sử dụng. Sử dụng ký hiệu Attr(R) để biểu thị các thuộc tính của R và PK(R) là khoá chính của R.

Cách thực hiện

Chuyển đổi mỗi chuyên biệt hoá có

  • m lớp con { S1, S2 , … , Sm} và lớp cha C, thuộc tính của C là { k, a1 , a2 , …, an} và k là khoá chính thành những lược đồ quan hệ, chúng ta có thể sử dụng một trong 4 lựa chọn sau:

Lựa chọn 8A

  • Tạo quan hệ L cho lớp cha C với các thuộc tính Attrs(L)={k, a1, …, an} và khoá chính của L là: PK(L)=k.
  • Tạo quan hệ Li cho mỗi lớp con tương ứng Si với các thuộc tính Attrs(Li)={k} U {thuộc tính của Si} và PK(Li)=k.

Lựa chọn 8A

Chuyển chuyên biệt hoá trên thành các quan hệ sau:

EMPLOYEE(SSN, FName, Minit, LName, BirthDate, Address, Salary)

SECRETARY(SSN, TypingSpeed)

TECHNICIAN(SSN, TGrade)

ENGINEER(SSN, EngType)

Lựa chọn 8B

Tạo một quan hệ Li cho mỗi lớp con Si, với các thuộc tính Attr(Li) = {k, a1, a2,…, am} U {thuộc tính của Si} và PK(Li) = k.

Lựa chọn 8B

Chuyển chuyên biệt hoá trên thành các quan hệ sau

CAR(Vehicleld, LicensePlateNo, Price, MaxSpeed, NoOfPassengers)

TRUCK(Vehicleld, LicensePlateNo, Price, NoOfAxles, Tonnage)

Lựa chọn 8C

Tạo một quan hệ L với các thuộc tính Attr(L) = {k, a1 , a2 , …, an } U {thuộc tính của S1} U… U {thuộc tính của Sm} U {t} và PK(L) = k. Trong đó, t là thuộc tính phân biệt chỉ ra bản ghi thuộc về lớp con nào, vì thế miền giá trị của t ={1,2,…,m}.

Đối với chuyên biệt hoá của EMPLOYEE, ta chỉ tạo ra một quan hệ L như sau:

EMPLOYEE(SSN, FName, Minit, LName, BirthDate, Address, Salary, TypingSpeed, Tgrad, EngType, JobType)

Thuộc tính phân biệt

Lựa chọn 8D

Tạo một quan hệ L với các thuộc tính Attr(L) = {k, a1 , a2 , …, an } U {thuộc tính của S1} U… U {thuộc tính của Sm} U {t1 , t2 , …, tmj} và PK(L) = k. Lựa chọn này cho chuyên biệt hoá của các lớp con được nạp chồng (nhưng cũng áp dụng cho một chuyên biệt tách rời), và với mỗi ti, 1≤ i ≤ m, là thuộc tính BOOLEAN chỉ ra bộ theo lớp con Si.

Lựa chọn 8D

PART (ParNo, Description, Mflag, DrawingNo, ManufactureDate, BatchNo, PFlag, SupplierName, ListPrice)

Thuộc tính phân biệt

0