V .T liệu hoá kết quả khảo sát
4. Chuẩn hoá quan hệ
Trong ví dụ trên, chúng ta đã quan sát việc phân tích, chỉ ra cấu trúc của quan hệ BANDOC2 là không tốt và cách thức cải thiện chất lợng của các quan hệ. Quá trình phân tích chuyển từ BANDOC2 thành các quan hệ BANDOC, SACH và
BANDOC_SACH còn gọi là quá trình chuẩn hoá các quan hệ. Nh vậy, chuẩn hoá là quá trình tách (phân rã) một cấu trúc dữ liệu phức hợp thành các cấu trúc dữ liệu đơn giản và có chất lợng tốt hơn.
Chuẩn hoá một quan hệ thờng đợc hoàn thành sau một số bớc, tại đó, sau mỗi bớc, quan hệ nhận đợc tơng ứng với một dạng chuẩn. Dạng chuẩn là một trạng thái của quan hệ có thể đợc xác định thông qua tập các phụ thuộc hàm giữa các thuộc tính trong quan hệ.
4.1. Phụ thuộc hàm và khoá
Cho quan hệ R và A, B là các tập thuộc tính trong R. Ta nói rằng B là phụ thuộc hàm
(Functional Dependence) vào A nếu với mọi hàng của quan hệ R, giá trị của tập thuộc tính A xác định duy nhất giá trị của tập thuộc tính B hay với hai dòng bất kỳ bằng nhau trên tập thuộc tính A thì chúng phải bằng nhau trên tập thuộc tính B và kí hiệu là:
AB. Nếu B phụ thuộc hàm vào A thì ta nói rằng A xác định hàm B.
Ví dụ, trong các quan hệ bandoc, sach và bandoc_sach:
bandoc :số thẻ →{ Tên bạn đọc, Cơ quan, Hạn SD}
sach : Mã sách→{Tên sách, Tác giả}
Phụ thuộc hàm A→B trong R đợc gọi là sơ đẳng ( hay B gọi là phụ thuộc hàm đầy
đủ vào A) nếu nh không tồn tại ∅≠ A’⊂ A mà A’→B. Ví dụ, trong quan hệ SINHVIEN:
SINHVIEN (Mã SV, Tên SV, Ngày sinh, Giới tính, Quê quán) có phụ thuộc hàm Mã
SV→ {Tên SV, Ngày sinh, Giới tính, Quê quán} và Tên SV, Ngày sinh, ... phụ thuộc
hàm đầy đủ vào Mã SV.
Cho quan hệ R(A,B), trong đó A và B là các thuộc tính đơn, hoặc tập các thuộc tính. A gọi là khoá ( Key) của quan hệ R(A,B) nếu mỗi giá trị của A xác định duy nhất một giá trị của B trong R, tức là 2 hàng bất kỳ trong R phải khác nhau trên A và A là tối thiểu, nghĩa là nếu A là một tập có các thuộc tính, đem xoá đi một thuộc tính nào đó của A thì tính xác định duy nhất sẽ bị phá vỡ.
Nói cách khác, A là khoá trong quan hệ R nếu A→B là một phụ thuộc hàm sơ đẳng
trong R hay B phụ thuộc hàm đầy đủ vào A.
Một thuộc tính của R nằm trong một khoá bất kỳ của R đợc gọi là thuộc tính khoá, ngợc lại một thuộc tính của R không nằm trong bất cứ khoá nào của R gọi là thuộc tính không khoá.
Trong quan hệ, thuộc tính khoá đợc gạch dới để phân biệt với các thuộc tính khác. Ví dụ, các thuộc tính khoá:
Số thẻ trong BANDOC ( Số thẻ, Tên bạn đọc, Cơ quan, Hạn SD) Mã sách trong Sách ( Mã sách, Tên sách, Tác giả)
Số thẻ, mã sách trong bandoc_sach ( số thẻ, mã sách, ngày mợn) và các thuộc tính không khoá nh: Tên bạn đọc, Cơ quan, Hạn SD trong BANDOC.
Trong mỗi quan hệ có thể có một hoặc nhiều khoá, chúng đợc gọi là khoá dự tuyển( Candidate Key).
Thờng trong các khoá dự tuyển ngời ta chọn một trong chúng làm khoá và gọi nó là khoá chính (Primery Key).
Khoá ngoài (Foreign Key) của một quan hệ là một thuộc tính, hoặc tập thuộc tính của quan hệ nhng lại là khoá chính trong một quan hệ khác. Ví dụ, xét hai quan hệ DONHANG và KHACHHANG có lợc đồ:
DONHANG (SODH, NG_LD, MA_KH) Và
KHACHHANG (MA_KH, TEN_KH, DIA_CHI, SO_TK, SO_NO) thì thuộc tính MA_KH trong quan hệ DON_HANG là khoá ngoài.
4.2. Các dạng chuẩn
Nh đã trình bày ở phần trớc, lợc đồ quan hệ đợc xây dựng ở thời điểm ban đầu thờng chứa nhiều nhợc điểm nh d thừa dữ liệu, dễ gây ra không nhất quán khi bổ sung, sửa chữa hoặc loại bỏ các dòng quan hệ. Chất lợng của các lợc đồ quan hệ đợc cải thiện trên cở sở biến đổi nó theo các dạng chuẩn. Trên thực tế, các chuyên gia đa ra dạng chuẩn, mỗi dạng chuẩn loại bỏ khỏi mô hình dữ liệu một vài loại khuyết tật. Trong giáo trình này, chúng ta chỉ đề cập tới ba dạng chuẩn cơ bản đợc sử dụng rộng rãi nhất.
Dạng chuẩn 1(First Normal Form): Một quan hệ R là dạng chuẩn 1 (1NF) nếu các thuộc tính của nó đều nguyên tố tức là không đa trị và không có kiểu bản ghi.
Dạng chuẩn 2(Second Normal Form): Một quan hệ R đạt chuẩn 2 (2NF) nếu nó là 1NF và các thuộc tính không khoá đều phụ thuộc hàm đầy đủ vào khoá.
Dạng chuẩn 3 (Third Normal Form): Một quan hệ R là dạng chuẩn 3 (3 NF) nếu nó là 2 NF và nếu các phụ thuộc hàm giữa các thuộc tính ngoài khoá và khoá đều là các thuộc tính trực tiếp – nghĩa là không tồn tại những phụ thuộc hàm ngoài khoá
Ví dụ: Dạng chuẩn 1NF
SODH MA_KH TEN_KH Dia_chi Ng_ld Ma_mh Ten_mh dv sl dg tien
1031 K12 Trần V.K 15,ltt,hp 12/10/1999 20-vn20-fa K3-v1 Que hàn Que hàn Máy hàn Kg Kg Cái 12 24 1 17 24 105 204 588 105 1032 K14 Lê X.V 27,txs,hp 21/11/2000 K3-v1 Máy hàn Cái 1 105 105 Hình 4.16. Bảng DONHANG ban đầu
SODH MA_KH TEN_KH Dia_chi Ng_ld
1031 K12 Trần V.K 15,ltt,hp 12/10/1999
1032 K14 Lê X.V 27,txs,hp 21/11/2000
Hình 4.17. Quan hệ DONHANG sau khi tách lập
SODH Ma_mh Ten_mh dv sl dg tien
1031 20-vn Que hàn Kg 12 17 204
1031 20-fa Que hàn Kg 24 24 588
1031 K3-v1 Máy hàn Cái 1 105 105
1032 K3-v1 Máy hàn Cái 1 105 105
Từ bảng DONHANG ban đầu với các thuộc tính:
SODH, MA_KH, TEN_KH, DIA_CHI, NG_LD, MA_KH, TEN_MH, DV, SL, DG và TIEN
Chứa các thuộc tính lặp: MA_MH, TEN_MH, DV, SL, DG, TIEN
Các thuộc tính lặp đợc tách thành bảng DONG_DH, trong đó bổ sung thuộc tính SODH từ các thuộc tính còn lại để tạo khoá. Phần còn lại của bảng DONHANG và bảng mới không chứa các thuộc tính lặp. Các bảng này thoả mãn các tính chất của quan hệ, chúng đều đạt chuẩn 1 NF
Tuy nhiên, bên cạnh biện pháp tách thành nhiều bảng, có thể chuyển đổi quan hệ (đạt chuẩn 1) bằng cách bổ sung giá trị ở các ô trống bằng giá trị ở các ô tơng ứng
SODH MA_KH TEN_KH Dia_chi Ng_ld Ma_mh Ten_mh dv sl gd tien 1031 K12 Trần V.K 15,ltt,hp 12/10/1999 20-vn Que hàn Kg 12 17 204 1031 K12 Trần v.k 15,ltt,hp 12/10/1999 20-fa Que hàn Kg 24 24 588 1031 K12 Trần v.k 15,ltt,hp 12/10/1999 K3-v1 Máy hàn Cái 1 105 105 1032 K14 Lê v.k 27,txs,hp 21/11/2000 K3-v1 Máy hàn Cái 1 105 105
Hình 4.19 . Quan hệ DONHANG2 không có thuộc tính lặp
Ví dụ: Dạng chuẩn 2NF
Xét quan hệ DONG_DH đợc mô tả trong hình 4.18 có lợc đồ: DONG_DH (SO_DH, MA_MH, TEN_MH, DV, SL, DG, TIEN) Các phụ thuộc hàm trực tiếp trong quan hệ sẽ là
MA_MH -> (TEN_MH, DV, DG) SO_DH, MA_MH -> (SL, TIEN)
Rõ ràng DONG_DH không phải là 2NF. Tách các thuộc tính TEN_MH, DV, DG có phụ thuộc hàm vào bộ phận MA_MH của khoá thành một nhóm. Nhóm còn lại SODH, MA_MH, SL, TIEN là quan hệ 2 NF:
DONG_DH (SO_DH, MA_MH, SL, TIEN)
Nhóm bị tách ra sẽ đợc bổ sung bộ phận của khoá MA_MH và nhận MA_MH làm khoá. Đó là quan hệ 2NF
MATHANG1 (MA_MH, TEN_MH, DV, DG)
Ví dụ: Dạng chuẩn 3NF
Ví dụ, quan hệ DONHANG đã xét ở phần trớc, đợc nêu trong hình 4.17, không phải là 3NF. Xét lợc đồ quan hệ DONHANG
DONHANG ( SO_DH, MA_KH, TEN_KH, DIA_CHI, NG_LD) SO_DH -> (MA_KH, NG_LD)
MA_KH-> (TEN_KH, DIA_CHI)
Nhóm mới đợc tách ra gồm có MA_KH, TEN_KH, DIA_CHI. Thuộc tính MA_KH sẽ là khoá của quan hệ mới này. Nhóm còn lại tạo thành một quan hệ với khoá nh cũ:
DONHANG (SO_DH, MA_KH, NG_LD)
KHACHHANG (MA_KH, TEN_KH, DIA_CHI)
1031 K12 Trần V.K 15,ltt,hp 12/10/1999
1032 K14 Lê X.V 27,txs,hp 21/11/2000
Quan hệ DONHANG ban đầu
SODH MA_KH Ng_ld
1031 K12 12/10/1999
1032 K14 21/11/2000
Quan hệ DONHANG Quan hệ KHACHHANG
2. Phơng pháp lập lợc đồ dữ liệu theo mô hình quan hệ
Quy trình thành lập lợc đồ dữ liệu theo mô hình quan hệ cho hệ thống có thể đợc mô tả nh sau:
Từ các thông tin thu nhập đợc qua khảo sát hệ thống, có thể:
- Mô hình hoá sơ bộ với mô hình thực thể liên hệ, trong đó miêu tả các tập thực thể cùng với các thuộc tính của chúng. Các tập thực thể này đợc hình dung nh các bảng thực thể .
- Dựa vào các thông tin vào hoặc ra của hệ thống, của các tiến trình, ví dụ một chứng từ, một tài liệu tổng kết, hoặc một màn hình giao tiếp ngời/máy để xác định một danh sách các thuộc tính (bảng dữ liệu).
Hiệu chỉnh các danh sách thuộc tính này nhằm loại bỏ bớt các thuộc tính đồng nghĩa, các thuộc tính tính toán nh:
Thành tiền và Đơn giá x Số lợng hoặc ngày sinh và tuổi. Vẽ sơ đồ thực thể liên hệ.
Chuyển sơ đồ thực thể liên hệ về lợc đồ cơ sở dữ liêu quan hệ. Thực hiện phép chuẩn hoá các lợc đồ quan hệ về dạng 1NF. Tìm tập các phụ thuộc hàm cho mỗi lợc đồ quan hệ.
Thực hiện phép chuẩn hoá các lợc đồ quan hệ về dạng 3NF có kết nối không mất