Chuẩn hóa bảng quan hệ

Một phần của tài liệu Hệ thống thông tin quản lý (Trang 77 - 79)

Là xử lý phân rã các bảng quan hệ để tạo ra các bảng quan hệ có cấu trúc tốt (Well Structured Relation): là bảng quan hệ chỉ chứa tối thiểu dữ liệu dư thừa và chỉ cho phép thêm, xóa, sửa dữ liệu của bảng một cách có quy tắc để thỏa mãn các ràng buộc toàn vẹn dữ liệu.

Việc chuẩn hóa các bảng dựa trên khái niệm ph thuc hàm (Functional Dependency). Một thuộc tính B được gọi là phụ thuộc hàm vào thuộc tính A nếu với mỗi thể hiện trong bảng, giá trị của thuộc tính A xác định duy nhất (theo logic nào đó, không chỉ là tính toán) giá trị của thuộc tính B. Ví dụ: Trong bảng quan hệ NHÂNVIÊN (Mã_NV, Tên_NV, MứcLương), vì giá trị của tên nhân viên (Tên_NV) và luơng nhân viên (MứcLương) gắn với từng nhân viên (xác định bởi Mã_NV) nên ta nói rằng Tên_NV và MứcLương phụ thuộc hàm vào Mã_NV. Một thuộc tính có thể phụ thuộc hàm vào cả hai thuộc tính khác, hay nhiều hơn nữa. Ví dụ trong hình 4.4b, đơn giá của nguyên liệu là một thuộc tính phụ thuộc hàm vào cả mã số của nguyên liệu lẫn mã số của nhà cung cấp. Phụ thuộc hàm này được ký hiệu là Mã_NL, Mã_NCC → ĐơnGiá. Ví dụ trên cho chúng ta một quy tắc: thuc tính không khóa ph thuc hàm vào khóa.

Dng chun 1 (The First Normal Form, 1NF). Bảng quan hệ thuộc dạng chuẩn 1 là bảng quan hệ không chứa nhóm (thuộc tính/cột) bị lặp lại (repeated group): Không có cột nào được thiết kế để lưu nhiều giá trị trong một ô, và không có nhiều cột mang một ý nghĩa như nhau (ví dụ: SĐT1,SĐT2,..). Ví dụ bảng NHÂNVIÊN sau đây là một bảng quan hệ ở dạng chuẩn 1:

Mã_NV Tên_NV Phòng McLương MônHc NgàyHoànTt

100 Magaret Simpson Marketing 42,000 SPSS 19/06/1999 100 Magaret Simpson Marketing 42,000 Surveys 07/10/1999 150 Susan Martin Marketing 38,500 SPSS 19/06/1999 150 Susan Martin Marketing 38,500 TQM 12/08/1999 190 Lorenzo Davis Finance 38,000 Investments 07/05/1999

Bảng quan hệ thuộc dạng chuẩn 1 vẫn có nhiều nội dung dữ liệu bị trùng lặp giữa các dòng. Trong ví dụ trên, dữ liệu trong các cột Mã_NV, Tên_NV, Phòng và MứcLương bị lặp lại khi một nhân viên học nhiều hơn 1 môn (như Magaret Simpson học 2 môn SPSS và Surveys).

Dng chun 2 (The Second Normal Form, 2NF). Bảng quan hệ thuộc dạng chuẩn 2 là bảng quan hệ thuộc dạng chuẩn 1, và mọi thuộc tính không phải là khóa thì phụ thuộc hàm đầy đủ vào toàn bộ khóa chính (không có thuộc tính không khóa phụ thuộc hàm vào chỉ một phần của khóa chính). Như vậy, bảng có khóa chính chỉ chứa một thuộc tính nguyên tố, hoặc bảng không có thuộc tính không khóa, đều ở dạng chuẩn 2.

Trong bảng NHÂNVIÊN trên, các thuộc tính không phải là khóa như Tên_NV, Phòng và MứcLương phụ thuộc hàm vào Mã_NV mà không phụ thuộc hàm vào MônHọc, trong khi đó NgàyHoànTất môn học phụ thuộc hàm đầy đủ vào Mã_NV, MônHọc

Để chuẩn hóa bảng dạng chuẩn 1 thành dạng chuẩn 2, chúng ta thực hiện 3 buớc sau:

1) Thiết lập bảng quan hệ chỉ chứa các thuộc tính không khóa phụ thuộc hàm đầy đủ vào khóa chính. Trong bảng NHÂNVIÊN chỉ có thuộc tính NgàyHoànTất phụ thuộc hàm đầy đủ vào khóa chính, như vậy ta có bảng quan hệ R1 (Mã_NV, MônHọc, NgàyHoànTất) là một bảng ở dạng chuẩn 2. 2) Thiết lập (các) bảng quan hệ chỉ chứa các thuộc tính không khóa phụ thuộc hàm vào từng phần

của khóa. Trong bảng NHÂNVIÊN có các thuộc tính không khóa Tên_NV, Phòng và MứcLương chỉ phụ thuộc hàm vào Mã_NV, như vậy ta thiết lập được bảng quan hệ R2(Mã_NV, Tên_NV, Phòng, MứcLương) là bảng thuộc dạng chuẩn 2.

3) Thiết lập khóa liên kết giữa các bảng mới. Bảng R1 có chứa khóa Mã_NV, MônHọc, trong khi bảng R2 chỉ có khóa nguyên tố Mã_NV, do đó khóa chính Mã_NV của bảng R2 sẽ được dùng làm khóa ngoại cho bảng R1 (giá trị Mã_NV của R1 được lấy từ Mã_NV của R2).

Từ 3 bước trên ta có bảng quan hệ được vẽ như hình bên. Các bảng R1 và R2 đều ở dạng chuẩn 2.

Dng chun 3 (The Third Normal Form, 3NF). Bảng quan hệ thuộc dạng chuẩn 3 là bảng quan hệ thuộc dạng chuẩn 2, và nó không chứa phụ thuộc hàm bắt cầu (Transitive Dependency). Nếu một thuộc tính C phụ thuộc hàm vào thuộc tính B, mà thuộc tính B lại phụ thuộc hàm vào thuộc tính A thì ta nói giữa A, B và C có phụ thuộc hàm bắc cầu, ký hiệu là A → B → C.

Ví dụ, ta hãy xem bảng quan hệ BÁNHÀNG như sau:

Mã_KH Tên_KH NhânViênPhụTrách KhuVực

8023 Anderson Smith South

7924 Hobbs Smith South

9167 Bancroft Hicks West

8596 Eckersley Hicks West

6837 Tucker Hernandez East

7018 Arnold Fauld North

Bảng này là một bảng quan hệ ở dạng chuẩn 2 (vì khóa là 1 thuộc tính nguyên tố). Một khách hàng có duy nhất một người phụ trách bán hàng (Mã_KH → NhânViênPhụTrách). Mỗi nhân viên sẽ phụ trách

Mã_NV MônHọc Tên_NV Phòng MứcLương NgàyHoànTất

Hình 4.7 Các phụ thuộc hàm trong bảng quan hệ NHÂNVIÊN

Mã_NV Tên_NV Phòng MứcLương

MãNV MônHọc NgàyHoànTất R1

bán hàng ở một khu vực duy nhất: NhânViênPhụTrách → KhuVực. Theo các quy tắc này thì bảng có 2 phụ thuộc hàm:

1. Mã_KH → Tên_KH, NhânViênPhụTrách, KhuVực (phụ thuộc hàm do khóa chính) 2. NhânViênPhụTrách → KhuVực (phụ thuộc hàm từ quy tắc)

Như vậy bảng có chứa phụ thuộc hàm bắc cầu Mã_KH → NhânViênPhụTrách → KhuVực. Vì có chứa phụ thuộc hàm bắc cầu nên bảng có một số khuyết điểm như sau:

• Nếu một nhân viên bán hàng mới được giao nhiệm vụ phụ trách khu vực phía bắc (North region), hệ thống không thể nhập liệu cho đến khi anh ta tìm được một khác hàng nào đó ở phía bắc (vì khóa Mã_KH cần phải có giá trị không rỗng). (adsbygoogle = window.adsbygoogle || []).push({});

• Nếu xóa khách hàng 6837 ra khỏi bảng, chúng ta sẽ bị mất thông tin về người phụ trách bán hàng Hernandez đang phụ trách khu vực phía đông (East region).

• Nếu người phụ trách bán hàng Smith chuyển sang phụ trách khu vực khác, nhiều dòng sẽ phải cập nhật lại (dòng 1, 2).

Để bỏ phụ thuộc hàm bắc cầu, chúng ta chia bảng thành 2 bảng nhỏ: BÁNHÀNG1 (Mã_KH, Tên_KH, NhânViênPT) và NHÂNVIÊNBH (NhânViênPT, KhuVực) để tách riêng các thuộc tính bị phụ thuộc hàm bắc cầu ra khỏi bảng.

NhânViênPT KhuVực Smith South Smith South Hicks West Hicks West Hernandez East Fauld North Chúng ta cần phải bỏ bớt các dòng bị trùng lặp trong bảng SPERSON để các dòng là duy nhất, và lấy khóa là Salesperson cho bảng như hình bên. Hai bảng được liên kết với nhau bằng khóa Salesperson.

Một phần của tài liệu Hệ thống thông tin quản lý (Trang 77 - 79)