Sơ đồ quan hệ (relational schema) là 1 tập các định nghĩa bảng quan hệ, các ràng buộc và cả quy luật suy diễn
Cấu trúc của 1 bảng quan hệ được gọi là table scheme hay biến quan hệ (relation variable), Nó chứa 1 tập hợp các thuộc tính và miền giá trị tương ứng (domain) của mỗi thuộc tính.
Ứng với mỗi sơ đồ bảng có thể được phân bố bởi 1 tập hợp các hàng (tuple) , nhưng phấn bố này không thuộc vào chính sơ đồ bảng
49 trang |
Chia sẻ: Mr Hưng | Lượt xem: 946 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kỹ thuật lập trình - Chương 5: Relational mapping, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
*Giao trinh BM HTTT - Khoa CNTT - HUIDesign the conceptual schema Annotate the conceptual schema with mapping choices as needed Map the design to a logical schemaFinesse the logical schema as neededGenerate the physical schemaCreate external schema(s) (e.g., forms, reports) Enforce security levels as needed Populate the database Issue queries and updates Update the schemas as needed *Giao trinh BM HTTT - Khoa CNTT - HUISơ đồ quan hệ (relational schema) là 1 tập các định nghĩa bảng quan hệ, các ràng buộc và cả quy luật suy diễnCấu trúc của 1 bảng quan hệ được gọi là table scheme hay biến quan hệ (relation variable), Nó chứa 1 tập hợp các thuộc tính và miền giá trị tương ứng (domain) của mỗi thuộc tính. Ứng với mỗi sơ đồ bảng có thể được phân bố bởi 1 tập hợp các hàng (tuple) , nhưng phấn bố này không thuộc vào chính sơ đồ bảng*Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUIRàng buộc duy nhất (uniqueness constraint) được chỉ ra bằng đường gạch dưới. Khóa dự tuyển (candidate key)Khóa chính (primary key): là 1 trong các khóa dự tuyến, các khóa dự tuyển còn lại gọi là "alternate keys“ hay "secondary keys“. Khóa chính ký hiệu bằng đường gạch dưới đôi nếu có tồn tại các alternate key khác.*Giao trinh BM HTTT - Khoa CNTT - HUINếu chỉ có 1 candidate key thì mặc định nó là primary keyNếu có nhiều hơn 1 candidate key empNr là khóa chính *Giao trinh BM HTTT - Khoa CNTT - HUIPrimary keySecondary keyCột không cho phép có giá trị null được gọi là bắt buộc (mandatory)Cột cho phép giá trị null được gọi là tùy chọn (optional), ký hiệu []Ví dụ: Employee( empNr, salary, [tax] ) , tax là cột optional*Giao trinh BM HTTT - Khoa CNTT - HUIÁnh xạ từ mô hình ORM thành sơ đồ quan hệDo tax có quan hệ là tùy chọn trong ORM nên khi chuyển sang ER nó thành cột tùy chọn [tax]*Giao trinh BM HTTT - Khoa CNTT - HUIRàng buộc vai trò bắt buộc (Mandatory role) được chuyển thành cột bắt buộc trong bảng và ràng buộc subset sẽ được chuyển vào bảng khác (nếu cần) chứa giá trị về loại đối tượng đó.*Giao trinh BM HTTT - Khoa CNTT - HUIDo luật cơ bản drives là m:n nên nó được map thành 1 bảng quan hệ khác.Ràng buộc vai trò bắt buộc chỉ được thể hiện 1 phần 1 nghiệp vụ: không có 1 hạn chế nào khi đưa mã số nhân viên vào bảng Drive mà mã số này không có trong bảng Employee.Employee( empNrg, gender, salary, [tax] )Drive(EmpNr, CarRegNo)*Giao trinh BM HTTT - Khoa CNTT - HUILàm thế nào để ánh xạ ràng buộc role bắt buộc? Một role r là bắt buộc đối với đối tượng loại O chỉ nếu phần bố của mỗi role khác bởi O phải là 1 subset của phân bố của r. Vì vậy mỗi role tùy chọn của 1 đối tượng đều có 1 ràng buộc subset ngầm định.*Giao trinh BM HTTT - Khoa CNTT - HUIĐể thể hiện ràng buộc subset của role drives, thêm vào lược đồ quan hệ 1 ràng buộc subset từ cột empNr của bảng Drives vào cột empNr của bảng Employee*Giao trinh BM HTTT - Khoa CNTT - HUIRàng buộc subset trong lược đồ quan hệ thể hiện bằng mũi tên đứt nét bảo đảm “any employee listed as driving a car is also listed in the Employee table”*Giao trinh BM HTTT - Khoa CNTT - HUITheo thuật ngữ quan hệ, ràng buộc subset được gọi là ràng buộc bảo toàn tham chiếu (referential integrity constraint). Thuộc tính empNr của bảng Drives là khóa ngoại (foreign key) tham chiếu đến thuộc tính empNr của bảng Employee. *Giao trinh BM HTTT - Khoa CNTT - HUIHai quy luật bảo toàn cơ bản (integrity rules)Bảo toàn thực thể (entity integrity): yêu cầu khóa chính không được chứa giá trị nullsBảo toàn tham chiều (Referential integrity): mỗi giá trị khác null của khóa ngoại phải khớp với 1 giá trị nào đó của khóa chính. Người dùng cũng có thể đưa ra các ràng buộc của người dùng (user-defined constraint) và các quy luật suy diễn. *Giao trinh BM HTTT - Khoa CNTT - HUIHãy ánh xạ lược đồ ORM trên thành lược đồ ER*Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUIPage 492*Giao trinh BM HTTT - Khoa CNTT - HUITừ một lược đồ ý niệm có thể có nhiều thiết kế lược đồ quan hệ khác nhau.Để chọn 1 lược đồ quan hệ, cần dựa vào 3 tiêu chuẩn: correct, efficient, and clear. Correct: phải tương đương với lược đồ ý niệmEfficient: thời gian đáp ứng truy vấn nhanh và đòi hỏi không gian lưu trữ hợp lýClear: lược đồ phải tương đối dễ hiễu và dễ làm việc với nóTiêu chuẩn nào là quan trọng nhất???*Giao trinh BM HTTT - Khoa CNTT - HUICorrect:là tiêu chuẩn quan trọng nhất.Để bảo đảm tính đúng đắn của dữ liệu trong lược đồ quan hệ thì cần phải tránh dư thừa (avoid redundancy)Một thủ tục mới để ánh xạ là Rmap (Relational mapping).Rmap bảo đảm lược đồ quan hệ không bị dư thừa và hạn chế số bảng. Rmap mở rộng và tinh chỉnh thủ tục cũ hơn "Optimal Normal Form" (ONF) .*Giao trinh BM HTTT - Khoa CNTT - HUIBước cơ bản của Rmap là :” Redundancy is repetition of an atomic fact. ”. Nều bảo đảm loại quan hệ là atomic thì dễ dàng tránh được dư thừa trong các bảng quan hệ.Thường mỗi hàng của bảng quan hệ sẽ chứa 1 hay nhiều luật cơ bản (elementary facts). Ngược lại hàng của bảng chứa 1 loại tham chiếu. *Giao trinh BM HTTT - Khoa CNTT - HUIĐể tránh dư thừa trong các bảng phải bảo đảm “each fact type maps to only one table in such a way that its instances appear only once”. Hai quy luật nhóm (grouping) cơ bản để thực thi qui định trên*Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUICó 2 loại quan hệ chức năng (functional role) được gắn với loại đối tượng A. *Giao trinh BM HTTT - Khoa CNTT - HUIGiao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUI*Ràng buộc ngang bằng (equality constraint) được chỉ ra bằng đường mũi tên đứt nét nối giữa các trường empNr của cả 2 bảng. Vì cả 2 role của Academic đều là bắt buộc và mỗi role ánh xạ thành 1 bảng riêng biệt. Ràng buộc ngang bằng được xem như là 2 ràng buộc subset ngược chiều nhau, tạo ra 1 vòng tham chiếu (referential cycle)Ràng buộc subset từ Qualification.empNr đến Academic.empNr là ràng buộc foreign key vì nó tham chiếu đến 1 primary key. Nhưng ràng buộc subset từ Academic.empNr đến Qualification.empNr không phải là ràng buộc foreign key vì nó chỉ tham chiếu đến 1 phần của primary key. *Giao trinh BM HTTT - Khoa CNTT - HUIGiao trinh BM HTTT - Khoa CNTT - HUI*Mỗi race có nhiều nhất 1 winner. Gender và weight là các role chức năng gắn với Horse.Tên cột "winner" được dùng thay thế "horseName" để phù hợp với ngữ nghĩa hơn. Trong ORM, Bankcard và Client có mối kết hợp 1:1. Nếu Bankcard không có thêm 1 role chức năng nào khác, nên nhóm với các loại chức năng khác vào cùng 1 bảng. *Giao trinh BM HTTT - Khoa CNTT - HUICột bankcard là tùy chọn, có thể có giá trị null, nên sẽ gây bất lợi nhiều hơn khi gom các cột vào cùng 1 bảng. Bankcard được gạch dưới để chỉ ra UC với các giá trị khác null nhưng nó có thể chứa 1 hay nhiều giá trị null cột bankcard không thể làm khóa chính.*Giao trinh BM HTTT - Khoa CNTT - HUIVới 2 UC, clientNr được gạch dưới bằng nét đôi để chỉ nó là primary key. Nhưng nếu Bankcard có thêm các role chức năng khác thì nên nhóm các mối quan hệ của bankcard thành 1 bảng khác. *Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUITrong mối kết hợp 1:1, thường chỉ có 1 role là bắt buộc, tốt hơn hết là hãy nhóm trên phía role bắt buộc.*Giao trinh BM HTTT - Khoa CNTT - HUITrong mối kết hợp 1:1 giữa Employee và Department thì Employee là tùy chọn và Department là bắt buộc. Vì vậy thường thì nên nhóm bên phía bắt buộc, đưa cột headEmpNr vào trong bảng Department*Giao trinh BM HTTT - Khoa CNTT - HUINhóm bên phía role bắt buộcNếu nhóm bên phía tùy chọn, đưa cột deptHeaded vào bảng Employee.*Giao trinh BM HTTT - Khoa CNTT - HUINếu theo cách nhóm theo phía tùy chọn thì có 2 nhược điểm sau:Cột tùy chọn deptHeaded cho phép giá trị null, mà giá trị null thì nên tránh dùng vì ngoài việc tốn không gian lưu trữ, nó thường bất tiện cho người dùng. Ràng buộc equality giữa các bảng thay cho ràng buộc subset. *Giao trinh BM HTTT - Khoa CNTT - HUIRàng buộc duy nhất ngoài thường có 2 dạng:Dạng lược đồ tham chiếu phứcDạng UC ngoài thực sự liên quan đến các loại quan hệ (fact type) khác nhau trong lược đồ*Giao trinh BM HTTT - Khoa CNTT - HUICác bước để ánh xạ ràng buộc duy nhất ngoài dạng sơ đồ tham chiếu phức:Bỏ qua sơ đồ tham chiếu của mỗi loại đối tượngNhóm các quan hệ vào các bảng bằng cách dùng ký tự thay thế đơn giản cho các role của đối tượng.Thay thế mỗi ký hiệu bằng các thuộc tính được dùng trong bảng để xác định đối tượng. *Giao trinh BM HTTT - Khoa CNTT - HUITừ mối quan hệ “Employee e is of Gender g” ánh xạ thành Employee(e,g)Thay thề g thành gender, vì e liên quan đến sơ đồ tham chiếu phức nên nó được ánh xạ thành familyName, initials*Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUIKhác 2 sơ đồ trên, Employee có khóa chính đơn. UC ngoài liên quan đến 2 loại quan hệUC này được ánh xạ thành UC chứa cả surname và initials trong bảng quan hệ.Khi đó UC trên khóa chính sẽ chứa cả 3 UC đơn tương ứng với 3 UC trong ORM. *Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUINếu UC ngoài liên quan đến 1 tập các role có 1 role m:n (LabSession is assigned to Student). *Giao trinh BM HTTT - Khoa CNTT - HUIVì loại quan hệ m:n được ánh xạ thành 1 bảng, UC ngoài sẽ liên quan đến cả 2 bảng tương đương với 1 UC nội nối courseCode và studentNr trong kết nối nội của 2 bảng. *Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUI Mối kết hợp Employee worked on Project được đối tượng hóa thành Work.Loại đối tượng hóa này có 1 role bắt buộc và 1 role tùy chọn, cả hai role đều role chức năng. *Giao trinh BM HTTT - Khoa CNTT - HUIXem mối kết hợp đối tượng hóa này như 1 "black box", và loại đối tượng Work chỉ có 2 loại quan hệ chức năng nên được nhóm vào cùng 1 bảng. Ký hiệu Work như 1 black boxBảng kết quả Work( , startdate, [enddate] )Thay thế thành các thuộc tính empNr và projectNameWork(empNr, projectName, startdate, [enddate])*Giao trinh BM HTTT - Khoa CNTT - HUI*Giao trinh BM HTTT - Khoa CNTT - HUIPage 514*Giao trinh BM HTTT - Khoa CNTT - HUI
Các file đính kèm theo tài liệu này:
- chuong_5_relational_mapping_8138.ppt