510 likes | 727 Views
LÝ THUYẾT CƠ SỞ DỮ LIỆU. Chương 5. Thiết kế CSDL luận lý (Logical Database Design) và Mô hình quan hệ (Relational Model). Phần I. Thiết kế CSDL luận lý và mô hình quan hệ. Giới thiệu. Thiết kế CSDL luận lý Chuyển mô hình dữ liệu mức ý niệm sang mức luận lý
E N D
LÝ THUYẾT CƠ SỞ DỮ LIỆU Chương 5. Thiết kế CSDL luận lý (Logical Database Design) và Mô hình quan hệ (Relational Model)
Phần I Thiết kế CSDL luận lý và mô hình quan hệ
Giới thiệu • Thiết kế CSDL luận lý • Chuyển mô hình dữ liệu mức ý niệm sang mức luận lý • Mức ý niệm: biểu diễn các yêu cầu dữ liệu của tổ chức • Mức luận lý: dữ liệu có thể được hiện thực bằng một DBMS nào đó • CSDL phải đáp ứng nhu cầu chia xẻ dữ liệu, tính mềm dẻo, dễ dàng truy xuất Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 3
Giới thiệu (tt) • CSDL luận lý trong chương này dựa trên mô hình quan hệ • Mô hình quan hệ (relational model) được xây dựng trên khái niệm quan hệ (relation) và đưa ra năm 1970 bởi E.F.Codd. • CSDL quan hệ (relation database) bao gồm một số quan hệ • DBMS dựa trên mô hình quan hệ gọi là RDBMS Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 4
Quan hệ • Định nghĩa: • Một quan hệ (relation) là một bảng dữ liệu có tên hai chiều (two-dimensional) • Bảng được tạo thành từ hàng – row (bảng ghi - record) và cột – column (thuộc tính – attribute, hoặc trường – field) • Không phải tất cả các bảng đều là quan hệ Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 5
Quan hệ (tt) • Yêu cầu: • Tất cả các quan hệ đều có một tên duy nhất • Tất cả các giá trị thuộc tính là đơn trị (atomic), không phải đa trị (multivalue), tổ hợp (composite) • Tất cả các hàng là duy nhất (không thể có hai hàng có cùng giá trị ở tất cả các thuộc tính) • Các thuộc tính (cột) trong một bảng đều có tên duy nhất • Thứ tự của các cột là không quan trọng • Thứ tự các hàng là không quan trọng Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 6
Quan hệ (tt) • Sự tương ứng với mô hình ER • Các quan hệ (relation, bảng - table) tương ứng với các kiểu thực thể (entity type) và mối quan hệ nhiều-nhiều (many-many relationship) • Các hàng (row) tương ứng với các thể hiện (instance) của thực thể và các thể hiện của mối quan hệ nhiều-nhiều • Các cột (column) tương ứng với các thuộc tính (attribute) Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 7
Quan hệ (tt) • Chú ý: • Tất cả các quan hệ là ở dạng chuẩn một (First Normal Form - 1NF) • Từ quan hệ (relation) trong CSDL quan hệ không giống với từ mối quan hệ (relationship) trong mô hình ER. Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 8
Các trường khoá • Khóa chính (primary key): • Là danh hiệu duy nhất (unique) của quan hệ (cho phép đảm bảo là tất cả các hàng là duy nhất). • Ví dụ: mã số nhân viên (employee number), số an sinh xã hội (social security number), … • Khoá ngoại (foreign key): • Là danh hiệu cho phép một quan hệ phụ thuộc (phía đầu nhiều của mối quan hệ) tham khảo đến quan hệ cha (phía đầu một của mối quan hệ). • Ví dụ: mã số phòng ban của nhân viên Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 9
Các trường khoá (tt) • Đặc điểm: • Khóa có thể là đơn (simple - một trường đơn) hay tổ hợp (composite - nhiều trường ghép lại) • Khoá thường được sử dụng như là chỉ mục (index) để tăng tốc độ xử lý cho các câu truy vấn của người sử dụng Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 10
Khoá chính Khóa ngoại (hiện thực mối quan hệ 1:N giữa CUSTOMER và ORDER) Khoá chính là tổ hợp (ngoài ra chúng còn là khóa ngoại tham khảo đến ORDER và PRODUCT) Các trường khoá (tt) – Ví dụ Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 11
Các ràng buộc toàn vẹn • Ràng buộc toàn vẹn (integrity constraint) • Ràng buộc miền trị (domain): các giá trị cho phép của một thuộc tính. • Toàn vẹn thực thể: thuộc tính khoá chính hoặc thuộc khóa chính không được NULL. • Ràng buộc tác vụ: các qui tắc nghiệp vụ Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 12
Các ràng buộc toàn vẹn (tt) • Toàn vẹn tham chiếu (Referencial integrity constraint): • Giá trị của khoá ngoại là NULL hoặc phải tương ứng với một giá trị khoá chính của quan hệ được tham chiếu. • Ví dụ: qui tắc xoá dữ liệu • Loại trừ - không cho phép xoá bên phía quan hệ cha nếu có các hàng liên quan bên phía quan hệ phụ thuộc. • Cascade - tự động xoá các hàng liên quan bên phía quan hệ phụ thuộc tương ứng • Set-to-Null – gán giá trị của khóa ngoại là NULL điều này không cho phép áp dụng cho các thực thể yếu Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 13
Các ràng buộc toàn vẹn (tt) Các ràng buộc toàn vẹn tham khảo được vẽ bằng các mũi tên từ bên phụ thuộc vào bảng cha Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 14
Chuyển đổi EERD sang các quan hệ • Bước 1: Chuyển các thực thể thường • 1. Thuộc tính đơn: chuyển trực tiếp thành các thuộc tính bên quan hệ • 2. Thuộc tính phức hợp: chỉ sử dụng thuộc tính đơn là các thành phần của nó • 3. Thuộc tính đa trị: chuyển thành một quan hệ riêng lẻ với một khoá ngoại tham khảo đến quan hệ ban đầu Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 15
Chuyển đổi EERD sang các QH (tt) (a) Thực thể CUSTOMER với các thuộc tính đơn (b) Quan hệ CUSTOMER Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 16
Chuyển đổi EERD sang các QH (tt) (a) Thực thể CUSTOMER với một thuộc tính tổ hợp (b) Quan hệ CUSTOMER với các thuộc tính đơn là chi tiết của địa chỉ Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 17
Chuyển đổi EERD sang các QH (tt) (a) Thực thể EMPLOYEE với thuộc tính đa trị (b) Thêm vào một quan hệ và một mối quan hệ 1:N giữa quan hệ gốc và quan hệ mới tạo ra Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 18
Chuyển đổi EERD sang các QH (tt) • Bước 2: Chuyển các thực thể yếu • Chuyển đổi thành một quan hệ riêng lẻ với một khoá ngoại tham khảo đến quan hệ tạo ra từ thực thể mạnh của nó • Khoá chính bao gồm: • Danh định riêng phần của nó • Khoá chính của quan hệ định danh (của thực thể mạnh) Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 19
Chuyển đổi EERD sang các QH (tt) (a) Thực thể yếu DEPENDENT (b) Quan hệ DEPENDENT với khóa riêng phần cộng khóa ngoại (tham khảo đến quan hệ cha) làm khoá chính (danh định đầy đủ) Chú ý: khóa ngoại Employee_ID không được NULL Foreign key Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 20
Chuyển đổi EERD sang các QH (tt) • Bước 3: Chuyển các mối quan hệ hai ngôi • Một-nhiều: Khoá chính ở phía quan hệ một làm khoá ngoại ở phía quan hệ nhiều • Nhiều-nhiều: tạo một quan hệ mới với khoá chính là tổ hợp các khoá chính của các thực thể tham gia vào mối quan hệ (và đồng thời cũng có các khoá ngoại tương ứng) • Một-một: Khoá chính ở phía bắt buộc làm khoá ngoại ở phía tuỳ chọn. Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 21
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ 1:N (b) Tạo thành khóa ngoại Chú ý: Khóa ngoại không được rỗng vì ràng buộc lượng số tối thiểu (ở đầu tham khảo đến) Khoá ngoại Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 22
Mối quan hệ Supplies sẽ trở thành một quan hệ riêng Khoá chính tổ hợp Khoá ngoại Khoá ngoại Quan hệ mới Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ M:N (b) Tạo thành quan hệ mới Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 23
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ 1:1 (b) Tạo thành khóa ngoại Chú ý: tất cả các thuộc tính của mối quan hệ đều được mang sang quan hệ đích Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 24
Chuyển đổi EERD sang các QH (tt) • Bước 4. Chuyển các thực thể kết hợp • Không có danh hiệu riêng: • Giống quan hệ nhiều-nhiều • Có danh hiệu riêng: • Khoá chính là danh hiệu của thực thể • Các mối quan hệ hai ngôi khác chuyển đổi bình thường Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 25
Chuyển đổi EERD sang các QH (tt) (a)Thực thể kết hợp (b) Tạo thành quan hệ mới Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 26
Chuyển đổi EERD sang các QH (tt) • Bước 5. Chuyển các mối quan hệ một ngôi • Một-nhiều: • Tạo ra khóa ngoại đệ qui tham khảo đến khoá chính trong cùng một quan hệ • Nhiều-nhiều: • Tạo ra hai quan hệ • Một cho kiểu thực thể đó • Một cho một quan hệ kết hợp với hai thuộc tính là khoá ngoại cùng tham khảo đến khoá chính của quan hệ kia và khoá chính của nó là tổ hợp của hai thuộc tính đó Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 27
Chuyển đổi EERD sang các QH (tt) (a) Thực thể EMPLOYEE với mối quan hệ một ngôi (b) Quan hệ EMPLOYEE với khóa ngoại đệ qui Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 28
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ Bill-of-materials (M:N) (b) Tạo ra quan hệ COMPONENT Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 29
Chuyển đổi EERD sang các QH (tt) • Bước 6. Chuyển các mối quan hệ ba ngôi (và n-ngôi) • Tạo ra n+1 quan hệ • n quan hệ cho n kiểu thực thể tham gia vào quan hệ • Một quan hệ kết hợp với các khoá ngoại tham khảo đến khoá chính của các quan hệ kia Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 30
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ ba ngôi (b) Tạo ra quan hệ SUPPLIES VENDOR PART WAREHOUSE SUPPLIES Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 31
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ ba ngôi đã được chuyển thành thực thể kết hợp Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 32
Chuyển đổi EERD sang các QH (tt) (b) Chuyển thành một quan hệ mới • Quan trọng: • Xác định khóa chính trong trường hợp này ra sao? • Có khi nào những người khác nhau xác định khóa chính khác nhau cho cùng một ERD? Chú ý rằng khoá chính PHẢI duy nhất Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 33
Chuyển đổi EERD sang các QH (tt) • Bước 7. Chuyển các mối q/hệ thực thể cha/con • Tạo ra các quan hệ cho các thực thể cha và thực thể con • Các thuộc tính của thực thể cha (cả danh hiệu và yếu tố phân biệt) trở thành các thuộc tính của quan hệ cha • Các thuộc tính của thực thể con trở thành các thuộc tính của quan hệ con. • Khoá chính của quan hệ cha trở thành khoá chính của các quan hệ con. • Tạo ra các quan hệ 1:1 giữa thực thể cha với tất cả các thực thể con với thực thể cha là bảng chính Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 34
Chuyển đổi EERD sang các QH (tt) (a) Mối quan hệ thực thể cha/con Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 35
Vừa là khoá chính, vừa là khóa ngoại tham khảo đến bảng cha Chuyển đổi EERD sang các QH (tt) (b) Chuyển thành các quan hệ tương ứng Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 36
Phần II Chuẩn hoá dữ liệu (Data Normalization)
Giới thiệu • Là một công cụ cơ bản để kiểm tra và cải tiến một thiết kế CSDL luận lý để thỏa mãn các ràng buộc toàn vẹn giúp tránh sự trùng lắp dữ liệu (data duplication) không cần thiết. • Là quá trình phân rã các quan hệ không bình thường (anomaly) thành các quan hệ có cấu trúc tốt (well-structured) nhỏ hơn • Quan hệ có cấu trúc tốt • Có sự dư thừa dữ liệu tối thiểu • Cho phép người dùng thêm vào, xoá đi và cập nhật các hàng (row) mà không gây ra sự mâu thuẫn dữ liệu nào Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 38
Giới thiệu (tt) • Mục tiêu để tránh sự dị thường • Dị thường khi thêm vào (Insertion anomaly) – thêm các hàng mới đòi hỏi người dùng tạo ra các dữ liệu trùng lắp • Dị thường khi xoá (Deletion anomaly) – xoá các hàng đã có gây ra sự mất dữ liệu cần thiết cho các hàng khác • Dị thường khi hiệu chỉnh (Modification anomaly) – thay đổi dữ liệu ở một hàng đòi hỏi thay đổi dữ liệu của các hàng khác vì trùng lắp • Luật cơ bản: một bảng không nên thuộc về nhiều hơn 1 kiểu thực thể Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 39
Giới thiệu (tt) Hỏi: Đây có phải là một quan hệ không? Đáp: Phải: các hàng là duy nhất và không có các thuộc tính đa trị Hỏi: Khóa chính là gì? Đáp: Tổ hợp: Emp_ID, Course_Title Sự bất thường ở bảng này • Thêm vào – không thể thêm vào 1 nhân viên mới mà không tham gia lớp nào • Xoá đi– nếu xoá bỏ nhân viên 140, ta sẽ mất thông tin về lớp Tax Acc • Hiệu chỉnh– để tăng lương cho nhân viên 100, đòi hỏi phải cập nhật 2 hàng Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 40
Phụ thuộc hàm • Phụ thuộc hàm (function dependency - FD) • Là một ràng buộc giữa hai (tập) thuộc tính: Trong quan hệ R, B là phụ thuộc hàm vào A nếu với mọi thể hiện đúng của A, giá trị của nó xác định duy nhất giá trị của B • Biểu diễn là AB • A là yếu tố xác định (determinant) • Ví dụ: • Emp_ID, Course_Name Date_Completed • SS# Name, Address, Birthday • ISBN Title, First_Author_Name Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 41
Khóa dự tuyển • Khoá dự tuyển (candidate key) • Là một hoặc bộ các thuộc tính xác định qui nhất 1 hàng của quan hệ • Một trong các khóa dự tuyển sẽ trở thành khóa chính • Các thuộc tính không là khóa sẽ phụ thuộc hàm vào mọi khoá dự tuyển • Ví dụ: • xét quan hệ Employee(Emp_ID, Emp_Name, SS#) • Cả Emp_ID và SS# là các khóa dự tuyển • Emp_ID là khóa chính Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 42
Các bước chuẩn hóa Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 43
Dạng chuẩn 1 – 1stNF • First Normal Form – 1stNF • Không có các thuộc tính đa trị • Tất cả các quan hệ là ở dạng chuẩn 1 (a) Bảng EMPLOYEE với các nhóm dữ liệu lặp lại Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 44
Dạng chuẩn 1 – 1stNF (tt) • Chuyển thành 1stNF • Giải quyết tất cả các thuộc tính đa trị (b) Quan hệ EMPLOYEE2 Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 45
Dạng chuẩn 2 – 2ndNF • Second Normal Form – 2ndNF • Là 1stNF • Tất cả các thuộc tính không là khóa phải phụ thuộc hàm hoàn toàn vào toàn bộ khóa • Chứ không phải 1 phần của khóa • Không có các phụ thuộc hàm riêng phần • Phụ thuộc hàm riêng phần (partial dependency) • Một thuộc tính phụ thuộc hàm vào 1 phần của khóa chính • Ví dụ: • R B • A R. A B Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 46
Dạng chuẩn 2 – 2ndNF (tt) EmpID, CourseTitle DateCompleted EmpID Name, DeptName, Salary Phân rã thành 2 quan hệ riêng biệt có quan hệ với nhau Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 47
Dạng chuẩn 3 – 3rdNF • Third Normal Form – 3rdNF • Là 2ndNF • Không có các quan hệ bắt cầu • Quan hệ bắt cầu (transitive dependency) • Một thuộc tính phụ thuộc hàm vào thuộc tính khác • Thuộc tính này lại phụ thuộc hàm vào thuộc tính khác nữa • Ví dụ: A B, B C A C Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 48
CustID Name CustID Salesperson CustID Region All this is OK (2nd NF) CustID Salesperson Region Transitive dependency (not 3rd NF) Dạng chuẩn 3 – 3rdNF (tt) (a) Quan hệ SALES với các dữ liệu mẫu (b) Quan hệ SALES với phụ thuộc hàm bắt cầu Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 49
Dạng chuẩn 3 – 3rdNF (tt) (c) Phân rã quan hệ SALES Không còn phụ thuộc hàm bắt cầu nữa … Cả hai quan hệ bây giờ là ở dạng chuẩn 3 (d) Quan hệ ở dạng chuẩn 3 CustID Name CustID Salesperson Môn: Lý thuyết Cơ sở dữ liệuChương 5: Thiết kế CSDL luận lý và mô hình quan hệSlide 50