CHUẨN HÓA DỮ LIỆU

Một phần của tài liệu BÀI GIẢNG HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 81 - 179)

4.4.1 Khái niệm chuẩn hóa dữ liệu

Chuẩn hóa dữ liệu là quá trình rà soát tất cả các danh sách thuộc tính của các thực thể, áp dụng một tập các quy tắc phân tích để chuyển chúng thành dạng sao cho:

MaSV MaMH Lanthi Diemthi …

QT0015 CB01 1 8 … QT0037 CB01 1 9 … QT0174 CB12 2 6 … QT0185 QT05 1 9 … … … … Bảng 4.9.b Tệp dữ liệu SVMH

Qua 3 bảng, chúng ta biết được SV Lê Thu Hà thi Toán cao cấp lần đầu được 8 điểm, SV Trần Đình Chiến thi Lịch sử Đảng lần 2 được 6 điểm…

Khóa chính của tệp SVMH được tổ hợp từ MaSV và MaMH.

#MaSV HovatenSV

QT0015 Lê Thu Hà …

QT0037 Vũ Văn Nam …

QT0174 Trần Đình Chiến … QT0185 Nguyễn Thu Thanh …

… … …

Bảng 4.9.a. Các tệp dữ liệu Sinhvien và Monhoc

#MaMH TenMH … CB01 Toán cao cấp … QT05 Kinh tế vi mô … CB12 Lịch sử Đảng … … … … PTIT

- Tối thiểu việc lặp lại, tránh dư thừa thông tin. Tình trạng một thuộc tính có mặt ở nhiều bảng thực thể chỉ xuất hiện đối với các thuộc tính định danh kết nối và là cần thiết để thể hiện các mối quan hệ.

- Loại bỏ các trường hợp cùng một thuộc tính lại có tên khác nhau ở các bảng thực thể khác nhau. Ví dụ như thuộc tính “Mã sinh viên” và “Số hiệu sinh viên”.

- Không để xảy ra tình trạng một thuộc tính chưa được hiểu rõ hoặc hiểu theo nhiều nghĩa khác nhau trong tình huống có nhiều người sử dụng thông tin. Ví dụ như thuộc tính “Địa chỉ” ở thực thể “Sinh viên” có thể hiểu là địa chỉ tạm trú hiện tại của sinh viên hay địa chỉ của gia đình (ở quê).

Quá trình chuẩn hóa buộc người ta phải xem xét rất cẩn thận về ý nghĩa của từng thuộc tính, từ đó sẽ xây dựng mô hình quan hệ khi đã hiểu rõ tất cả các thuộc tính liên quan.

Quá trình chuẩn hóa được thực hiện dựa trên khái niệm “phụ thuộc hàm” và mô hình

được chuẩn hóa đầy đủ, lý tưởng là mô hình mà ở đấy, mỗi thuộc tính trong mỗi bảng thực thể đều có một phụ thuộc hàm trực tiếp vào toàn bộ các thuộc tính khóa của bảng.

4.4.2 Khái niệm phụ thuộc hàm

Khái niệm phụ thuộc hàm giữa hai thuộc tính A và B được phát biểu như sau: “Thuộc tính B phụ thuộc hàm vào thuộc tính A, viết là A → B nếu với mỗi giá trị của A tương ứng với một giá trị duy nhất của B”. Nói cách khác là tồn tại một ánh xạ từ tập hợp các giá trị của A

đến tập hợp các giá trị của B.

Trong một thực thể, mỗi thuộc tính đều phụ thuộc hàm vào khóa - một thuộc tính duy nhất hoặc hai hay nhiều hơn nữa các thuộc tính khác (tạo thành bộ khóa).

Ví dụ: Xét thực thể “Hóa đơn” với các thuộc tính Số hóa đơn, Tên khách hàng, Tên

hàng hóa, Tiền mua hàng.

Ta thấy có các sự phụ thuộc hàm sau đây: <Số hóa đơn> → <Tên khách hàng> <Số hóa đơn> và <Tên hàng hóa> → <Tiền mua hàng>

Đối với các thực thể, bao giờ cũng phải xác định được ít nhất một thuộc tính là thuộc tính khóa. Ứng với mỗi giá trị của khóa, chúng ta xác định được một bộ giá trị duy nhất của các thuộc tính còn lại.

Ví dụ: Trong bảng thực thể “Khách hàng” (#Mã KH, Tên KH, Địa chỉ KH), khách

hàng có thể thay đổi địa chỉ của mình, nhưng vào mọi lúc, với một giá trị của khóa đã cho là Mã KH, ta có thể nói rằng có một bộ giá trị “Tên KH” và “Địa chỉ KH” duy nhất và luôn luôn xác định được.

Nếu một thuộc tính không phụ thuộc hàm vào khóa thì nó phải thuộc một bảng thực

thể khác. Ví dụ như thực thể “Sinh viên” không thể chứa thuộc tính “Điểm thi” vì thuộc tính

này không phụ thuộc hàm vào khóa là “Mã SV” (một giá trị “Mã SV” ứng với nhiều điểm thi của các môn khác nhau, lần thi khác nhau).

4.4.3 Các dạng chuẩn và quá trình chuẩn hóa

Ta coi danh sách các thuộc tính của một bảng thực thể là “Chưa được chuẩn hóa” nếu nó chưa được xét trong quá trình chuẩn hóa. Quá trình “Chuẩn hóa” bao gồm việc áp dụng ba quy tắc kiểm tra liên tiếp nhau.

Nếu danh sách các thuộc tính của thực thể đã qua quy tắc kiểm tra thứ nhất thì nó được gọi là có “Dạng chuẩn 1” (1NF), nếu qua quy tắc kiểm tra thứ hai thì nó được gọi là có “Dạng chuẩn 2” (2NF), nếu qua quy tắc kiểm tra thứ ba thì nó được gọi là có “Dạng chuẩn 3” (3NF) và được xem như đã được chuẩn hóa đầy đủ.

Lưu ý là trước khi thực hiện việc chuẩn hóa, chúng ta cần rà soát và loại khỏi danh sách các thuộc tính thứ sinh (do giá trị của các thuộc tính này có thể tính toán hoặc suy luận từ giá trị của các thuộc tính khác) và các thuộc tính không quan trọng (không cần quản lý).

Dạng chuẩn 1 (1NF- The First Normal Form) – Quy tắc kiểm tra thứ nhất: Một thực

thể hay một quan hệ được gọi là có dạng chuẩn 1 nếu nó không chứa các thuộc tính lặp. Hay nói cách khác là tất cả giá trị các thuộc tính của nó là sơ cấp.

Nếu trong danh sách thuộc tính của thực thể có chứa các thuộc tính lặp thì phải tách chúng ra thành danh sách con, gán cho nó một tên, tìm cho nó một thuộc tính định danh, kết hợp với thuộc tính định danh của danh sách gốc tạo thành một bộ khóa.

Dạng chuẩn 2 (2NF- The Second Normal Form) – Quy tắc kiểm tra thứ hai: Một thực

thể hay một quan hệ 1NF được coi là dạng chuẩn 2NF nếu tất cả các thuộc tính không phải là khóa đều phụ thuộc hàm vào toàn bộ khóa chính (chứ không phải chỉ là một phần của khóa).

Nếu có một số thuộc tính chỉ phụ thuộc vào một phần của khóa, ta phải tách chúng thành danh sách mới, lấy bộ phận của khóa đó làm thuộc tính định danh cho danh sách mới, gán cho nó một cái tên phù hợp với nội dung mà nó phản ánh.

Dạng chuẩn 3 (3NF- The Thirst Normal Form) – Quy tắc kiểm tra thứ ba: Một thực

thể đã là 2NF được xem là có dạng chuẩn 3NF nếu tất cả các phụ thuộc hàm giữa khóa chính và các thuộc tính khác của nó đều là trực tiếp (tức là không có sự phụ thuộc bắc cầu giữa các thuộc tính).

Trong một thực thể không cho phép có sự phụ thuộc bắc cầu giữa các thuộc tính. Giả sử có thuộc tính A phụ thuộc vào thuộc tính B, thuộc tính B phụ thuộc vào thuộc tính C thì chúng ta phải tách chúng ra làm 2 thực thể: thực thể thứ nhất chứa quan hệ A và B, thực thể thứ hai chứa quan hệ B và C.

Ví dụ 1. Sau đây là một thực thể chưa có dạng chuẩn:

Bảng 4.10. Thực thể “Nhân viên – Khóa học”

Mã NV Họ và tên NV Phòng CT Mức

lương Khóa học ngắn hạn

Ngày hoàn thành 100 Nguyễn Văn An Marketing 42,000 Quan hệ công chúng 19/06/2009 100 Nguyễn Văn An Marketing 42,000 Thương hiệu 07/10/2008

150 Phạm Ngọc Hoa Marketing 38,500 Quan hệ công chúng 19/06/2009 150 Phạm Ngọc Hoa Marketing 38,500 Nghiên cứu thị trường 12/08/2007 190 Vũ Minh Hà Finance 38,000 Kế toán quản trị 07/05/1999

Hãy thực hiện chuẩn hóa thực thể trên.

Hướng dẫn làm bài:

- Thực thể không chứa các thuộc tính thứ sinh hay thuộc tính không quan trọng. - Phân tích mối quan hệ phụ thuộc hàm giữa các thuộc tính:

Trong bảng trên, các thuộc tính không phải là khóa như “Họ và tên NV”, “Phòng CT” và “Mức lương” chỉ phụ thuộc hàm vào “Mã NV”, trong khi đó “Ngày hoàn thành” lại phụ thuộc hàm vào bộ thuộc tính “Mã NV” và “Khóa học ngắn hạn”.

Biểu diễn mối quan hệ phụ thuộc hàm như sau:

Từ đó ta xác định bộ khóa chính của thực thể gồm hai thuộc tính là “Mã NV” và “Khóa học ngắn hạn”.

- Thực hiện quá trình chuẩn hóa theo 3 bước:

Bước 1. Thực thể này không chức các thuộc tính lặp nên đã có dạng chuẩn 1.

Tuy nhiên, bảng thực thể có nhiều 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”, “Họ và tên NV”, “Phòng CT” và “Mức lương” bị lặp lại khi một nhân viên học nhiều hơn một khóa học (như Nguyễn Văn An, Phạm Ngọc Hoa).

Bước 2. Do các thuộc tính không phải là khóa như “Họ và tên NV”, “Phòng CT” và “Mức lương” chỉ phụ thuộc hàm vào một phần của bộ khóa chính là “Mã NV” nên thực thể chưa có dạng chuẩn 2.

Để chuẩn hóa thực thể “Nhân viên – Khóa học” dạng chuẩn 1 thành dạng chuẩn 2, chúng ta thực hiện 3 bước sau:

- Thiết lập thực thể chỉ chứa các thuộc tính không khóa phụ thuộc hàm đầy đủ vào bộ khóa (hay gọi là khóa chính). Trong bảng “Nhân viên – Khóa học” chỉ có thuộc tính “Ngày hoàn thành” phụ thuộc hàm đầy đủ vào khóa chính “Mã NV” và “Khóa học ngắn hạn”, như vậy ta có bảng quan hệ R1(Mã NV, Khóa học ngắn hạn, Ngày hoàn thành) là một bảng ở dạng chuẩn 2.

- Thiết lập (các) thực thể 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ân viên – Khóa học” có các thuộc tính không khóa “Họ và tên NV”, “Phòng CT” và “Mức lương” chỉ phụ thuộc hàm vào “Mã NV”, như vậy ta thiết lập

Mã NV Khóa học ng.hạn Họ tên NV Phòng CT Mức lương Ngày hoàn thành

Hình 4.25. Các phụ thuộc hàm trong bảng thực thể “Nhân viên – Khóa học”

được bảng quan hệ R2(#Mã NV, Họ và tên NV, Phòng CT, Mức lương) là bảng thuộc dạng chuẩn 2.

- Mối quan hệ giữa bảng R1 và bảng R2 sẽ được thể hiện bằng “Mã NV”.

Sau 3 bước trên ta có thực thể như hình vẽ dưới đây. Các bảng R1 và R2 đều ở dạng chuẩn 2. Chúng cũng có dạng chuẩn 3NF do tất cả các phụ thuộc hàm giữa khóa chính và các thuộc tính khác của nó đều là trực tiếp.

Ví dụ 2. Công ty Văn phòng phẩm Hồng Hà có hệ thống đại lý ở các quận trên địa bàn Thành phố Hà Nội. Mỗi quận có một đại lý, mỗi đại lý có duy nhất một người phụ trách bán hàng và ngược lại mỗi người bán hàng chỉ phụ trách duy nhất một đại lý. Mỗi khách hàng bán lẻ lấy hàng ở một đại lý.

Nếu chúng ta xây dựng thực thể “Khách hàng – Người phụ trách” như bảng 4.11 thì sẽ

có sự phụ thuộc bắc cầu giữa các thuộc tính:

(1) Mã KH → Họ tên KH, Họ tên người bán hàng, Đại lý (phụ thuộc hàm vào khóa) (2) Đại lý → Họ tên người bán hàng (phụ thuộc hàm từ quy tắc)

Như vậy thực thể có chứa phụ thuộc hàm bắc cầu: Mã KH → Đại lý → Họ tên người bán hàng.

Bảng 4.11. Thực thể “Khách hàng – Người phụ trách” #Mã KH Họ tên KH Họ tên người bán hàng Đại lý

231 Trần Đình Chiến Lê Ngọc Hà Đống Đa

179 Nguyễn Mai Hoa Lê Ngọc Hà Đống Đa

167 Lê Kim Nhung Nguyễn Văn Nam Cầu Giấy 106 Vũ Thúy Hòa Nguyễn Văn Nam Cầu Giấy 370 Phan Thu Thủy Hoàng Văn Hải Hai Bà Trưng

… … … …

#Mã NV Họ tên NV Phòng CT Mức lương

Mã NV Khóa học ng.hạn Ngày hoàn thành

R1 R2

Hình 4.26. Thực thể “Nhân viên” (R2) và thực thể “Nhân viên – Khóa học” (R1) ở dạng chuẩn 3

Vì thực thể “Khách hàng – Người phụ trách” có chứa phụ thuộc hàm bắc cầu nên sẽ có một số khuyết điểm như sau:

- Nếu một người bán hàng mới được giao nhiệm vụ phụ trách đại lý mới, hệ thống không thể nhập dữ liệu cho đến khi người đó tìm được một khách hàng nào đó (vì khóa “Mã KH” cần phải có giá trị không rỗng).

- Giả sử đại lý “Hai Bà Trưng” chỉ có một khách hàng 370, nếu xóa khách hàng 370 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 “Hoàng Văn Hải” đang phụ trách đại lý “Hai Bà Trưng”.

- Nếu người phụ trách bán hàng “Lê Ngọc Hà” chuyển sang phụ trách khu vực khác, nhiều dòng sẽ phải cập nhật lại...

Để xóa bỏ phụ thuộc hàm bắc cầu, chúng ta chia bảng thành 2 bảng nhỏ tương ứng với

hai thực thể “Khách hàng – Đại lý” và “Đại lý - Người phụ trách” (bảng 3.12.a, b). Hai thực

thể mới không có các thuộc tính bắc cầu nên đều ở dạng chuẩn 3.

Ví dụ 3. Để thiết kế các tệp dữ liệu quản lý các hóa đơn bán hàng (hình 4.27), chúng ta thực hiện các bước như sau:

Bước 1: Xác định các thông tin liên quan như danh sách khách hàng, danh mục hàng

hóa, phiếu xuất kho…

Bước 2: Liệt kê tất cả các thuộc tính liên quan đến hóa đơn bán hàng, xác định các

thuộc tính lặp (R) và thuộc tính thứ sinh (S). Đặt tên cho thực thể ban đầu là “Hóa đơn (1)” với các thuộc tính sau:

Số hóa đơn, Liên số, Mã KH, Họ và tên KH, Địa chỉ KH, Số tài khoản, Mã số thuế, Phương thức thanh toán, Stt (R), Tên hàng hóa (R), Đơn vị tính (R), Đơn giá (R), Số lượng (R), Thành tiền (R) & (S), Tổng cộng (S), Thuế VAT (S), Tổng tiền thanh toán (S), Viết bằng chữ (S), Ngày bán, Người bán, Người mua.

#Mã

KH Họ tên KH Đại lý

231 Trần Đình Chiến Đống Đa 179 Nguyễn Mai Hoa Đống Đa 167 Lê Kim Nhung Cầu Giấy 106 Vũ Thúy Hòa Cầu Giấy 370 Phan Thu Thủy Hai Bà Trưng

… … …

# Đại lý Họ tên người bán hàng

Đống Đa Lê Ngọc Hà Đống Đa Lê Ngọc Hà Cầu Giấy Nguyễn Văn Nam Cầu Giấy Nguyễn Văn Nam Hai Bà Trưng Hoàng Văn Hải

… … Bảng 4.12.a. Thực thể “Khách hàng – Đại lý” Bảng 4.12.b. Thực thể “Đại lý - Người phụ trách” PTIT

Vì “Số hoá đơn” đủ để phân biệt hoá đơn này với hoá đơn khác nên khoá chính của thực thể này là “Số hoá đơn”.

Hình 4.27. Ví dụ về hóa đơn bán hàng

Bước 3: Loại bỏ các thuộc tính thứ sinh và các thuộc tính ít có ý nghĩa trong quản lý

(Liên số, Stt), thực thể “Hoá đơn (1)” còn lại các thuộc tính sau:

#Số hóa đơn, Mã KH, Họ và tên KH, Địa chỉ KH, Số tài khoản, Mã số thuế, Phương thức thanh toán, Tên hàng hóa (R), Đơn vị tính (R), Đơn giá (R), Số lượng (R), Ngày bán, Người bán, Người mua.

Bước 4:

a) Thực hiện chuẩn hóa mức 1 (1NF). Theo yêu cầu của chuẩn hóa mức 1, thực thể

“Hoá đơn (1)” chứa các thuộc tính lặp là “Tên hàng hóa (R), Đơn vị tính (R), Đơn giá (R), Số lượng (R)” nên phải tách chúng ra thành danh sách con, gán cho nó một tên là “Hàng mua (1)” với thuộc tính định danh mới là “Mã hàng hoá”, kết hợp với thuộc tính định danh của danh sách gốc “Số hoá đơn” tạo thành một bộ khóa.

Sau khi chuẩn hóa mức 1, ta được 2 thực thể:

Hóa đơn (2) Hàng mua (1)

#Số hóa đơn, Mã KH, Họ và tên KH, Địa chỉ KH, Số tài khoản, Mã số thuế, Phương thức thanh toán, Ngày bán, Người bán, Người mua.

Số hóa đơn, Mã hàng hóa, Tên hàng hóa, Đơn vị tính, Đơn giá, Số lượng

HÓA ĐƠN BÁN HÀNG Số: 123/HĐ Liên số: 2

Mã khách hàng: A045 Họ và tên khách hàng: Nguyễn Văn Anh Địa chỉ khách hàng: Học viện Công nghệ BCVT

Số tài khoản: 011001432 Mã số thuế: 0100684378082 Phương thức thanh toán: Tiền mặt

Stt Tên hàng hóa Đơn vị

tính Đơn giá

Số

lượng Thành tiền

1 Máy in Laser Chiếc 4500000 1 4500000

2 Máy in HP Chiếc 2350000 3 7050000

… … … … …

Tổng cộng: 11.550.000 đồng Thuế VAT: 1.155.000 đồng Tổng tiền thanh toán: 12.705.000 đồng

Viết bằng chữ: Mười hai triệu bảy trăm linh năm nghìn đồng./.

Ngày 18 tháng 5 năm 2009 Người mua Người bán V.Anh K.Liên

b) Thực hiện chuẩn hóa mức 2 (2NF). Theo yêu cầu của chuẩn hóa mức 2, trong mỗi

thực thể, các thuộc tính không phải là khóa phải phụ thuộc toàn bộ vào khóa. Nếu có thuộc tính chỉ phụ thuộc vào một phần của khóa, ta phải tách chúng thành danh sách mới, lấy bộ phận của khóa đó làm thuộc tính định danh cho danh sách mới, gán cho nó một cái tên phù hợp với nội dung mà nó phản ánh.

Thực thể “Hoá đơn (2)” đã có dạng chuẩn 2 do mọi thuộc tính đều phụ thuộc vào “Số hoá đơn”.

Trong thực thể “Hàng mua (1)”, ta thấy thuộc tính “Số lượng” phụ thuộc toàn bộ vào khóa “Số hóa đơn” và “Mã hàng hóa”, còn các thuộc tính “Tên hàng hóa”, “Đơn vị tính”, “Đơn giá” chỉ phụ thuộc vào “Mã hàng hóa”. Chúng ta tách thực thể “Hàng mua (1)” thành hai thực thể “Hàng mua” và “Hàng hoá” có dạng chuẩn 2:

Hàng mua Hàng hoá

Số hóa đơn, Mã hàng hóa, Số lượng #Mã hàng hóa, Tên hàng hóa, Đơn vị tính, Đơn giá

Một phần của tài liệu BÀI GIẢNG HỆ THỐNG THÔNG TIN QUẢN LÝ (Trang 81 - 179)

Tải bản đầy đủ (PDF)

(179 trang)