Professional Documents
Culture Documents
Trong bảng trên có dư thừa dữ liệu ví dụ dữ liệu về lớp như tên lớp, ngày thành lập
được lặp lại ở nhiều nơi. Khi có dư thừa dữ liệu thì thường xảy ra các dị thường cập nhật,
chúng bao gồm:
● Dị thường khi chèn: Không thể thêm môn CSDL vào bảng vì môn này chưa
có sinh viên nào học và thi.
● Dị thường khi sửa: Khi sửa tên một lớp thì phải sửa nhiều dòng.
● Dị thường khi xóa: Khi xóa sinh viên mã 693 thì môn HTML cũng bị xóa
Trang 1
Học phần: Hệ thống cơ sở dữ liệu
khỏi CSDL.
● Thuộc tính suy diễn: là các thuộc tính có thể tính toán được từ các thuộc tính khác.
Ví dụ: ThTien = DG x SL
Thuộc tính lặp: Thuộc tính A là lặp nếu nó có nhiều giá trị khác nhau tương ứng với
một giá trị của nhóm thuộc tính tương ứng. Ví dụ: MaHang, TenHang, DG, SL, ThTien.
Ngay MaDH NgNhan DiaChi MaHang TenHang DG SL ThTien
A3 Yên xe 50 5 250
A5 Giỏ xe 10 10 100
Trong thiết kế các quan hệ không được phép có nhóm lặp vì tất cả các thuộc tính cần
phải có giá trị nguyên tố (tức là mỗi ô chỉ có một giá trị).
● Phụ thuộc hàm bộ phận vào khóa: Là các phụ thuộc hàm có tập thuộc tính xác
định hàm là một phần của khóa chính. Ngược lại là phụ thuộc hàm đầy đủ vào khóa.
Ví dụ:
PK = {SoHD, MaHang}
MaHang -TenHang là phụ thuộc hàm bộ phận vào khóa
{SoHD, MaHang} -SoLuong là phụ thuộc hàm đầy đủ vào khóa
● Phụ thuộc hàm không khóa: Là phụ thuộc hàm giữa các thuộc tính không nằm
trong khóa chính. Ví dụ
Trang 2
Học phần: Hệ thống cơ sở dữ liệu
PK = {SoHD, MaHang}
MaNCC - TenNCC là phụ thuộc hàm không khóa
5. 2. Các dạng chuẩn
Chuẩn hóa là tiến trình tách dữ liệu từ một quan hệ lớn vào một tập các quan hệ nhỏ
hơn mà vẫn đảm bảo tính toàn vẹn dữ liệu đồng thời loại bỏ được các dư thừa dữ liệu trong
quan hệ. Tiến trình chuẩn hóa dựa trên một tập các luật được gọi là các dạng chuẩn. Có 7
dạng chuẩn trong đó 4 dạng chuẩn được Edgar F. Codd đưa ra vào năm 1974. Chúng là:
● Dạng chuẩn một (1NF)
● Dạng chuẩn hai (2NF)
● Dạng chuẩn ba (3NF)
● Dạng chuẩn Boyce-Codd (BCNF)
● Dạng chuẩn bốn (4NF)
● Dạng chuẩn năm (5NF)
● Dạng chuẩn miền khóa (DKNF)
Ba dạng chuẩn đầu là các luật cần thiết nhất trong tất cả các thiết kế cơ sở dữ liệu còn
bốn dạng chuẩn sau phức tạp hơn và chỉ được yêu cầu trong một số trường hợp. Trong bài
học này chúng ta chỉ xem xét ba dạng chuẩn đầu tiên.
Dạng chuẩn 1 (1NF - First Normal Form): Một quan hệ là ở dạng chuẩn 1 nếu toàn bộ
các miền thuộc tính đều là các miền đơn và không tồn tại nhóm thuộc tính lặp.
Ví dụ: Khoá chính là Mã SV. Nhóm thuộc tính lặp là Môn học và Điểm.
Trang 3
Học phần: Hệ thống cơ sở dữ liệu
Dạng chuẩn 2 (2NF - Second Normal Form): Một quan hệ ở dạng chuẩn 2 nếu nó đã
ở dạng chuẩn 1 và không tồn tại phụ thuộc hàm bộ phận vào khoá.
Ví dụ: Cho một quan hệ: R (A, B, C, D, E); Khoá chính là {A, B}
D- E là phụ thuộc hàm giữa các thuộc tính không khoá
Quá trình chuẩn hóa quan hệ là quá trình chuyển từ quan hệ chưa chuẩn hóa (quan hệ
có chứa một hay nhiều nhóm dữ liệu lặp) về quan hệ ở dạng chuẩn cần thiết (thường là dạng
chuẩn 3).
Ví dụ
● Quan hệ chưa chuẩn hóa (dạng chuẩn 0NF): Quan hệ không ở 1NF vì có các thuộc
tính lặp Ma_mh, Ten_mh, Diem
Trang 4
Học phần: Hệ thống cơ sở dữ liệu
● Quan hệ ở 3NF: Quan hệ có các phụ thuộc hàm Ma_sv- Ten, Ten_lop. Khóa của
quan hệ là {Ma_sv}
Trang 5
Học phần: Hệ thống cơ sở dữ liệu
Trang 6
Học phần: Hệ thống cơ sở dữ liệu
đối tượng quan trọng (hay các thực thể) dựa vào những dữ liệu mà hệ thống lưu giữ và sau
đó xác định các thuộc tính là những đặc điểm mô tả mỗi thực thể cùng với các mối quan hệ
giữa các thực thể.
Chuẩn hóa được xem là cách tiếp cận từ dưới lên (bottom-up) bởi vì nó bắt đầu với một
tập hợp các thuộc tính và tổ chức chúng thành các quan hệ có cấu trúc tốt hơn loại bỏ dư thừa
dữ liệu (có thể loại bỏ dữ liệu trùng lặp mà không làm mất mát thông tin).
Chuẩn hóa còn được sử dụng để kiểm tra các thực thể đã được xác định trong quá trình
mô hình hóa thực thể-quan hệ thành các nhóm dữ liệu logic và khẳng định chúng không là
dữ liệu dư thừa.
Quá trình chuẩn hóa quan hệ có thể chia thành 5 bước:
● Bước 1: Lấy danh sách thuộc tính.
● Bước 2: Chuẩn hoá về dạng chuẩn 1.
● Bước 3: Chuẩn hoá về dạng chuẩn 2.
● Bước 4: Chuẩn hoá về dạng chuẩn 3.
● Bước 5: Viết quan hệ dưới dạng bản ghi logic.
Trang 7
Học phần: Hệ thống cơ sở dữ liệu
● Tách nhóm thuộc tính lặp: Tách các thuộc tính không nằm trong nhóm lặp
thành một quan hệ. Xác định phụ thuộc hàm cho các thuộc tính trong quan
hệ này từ đó xác định khoá chính của quan hệ.
● Các thuộc tính của nhóm lặp và khoá chính của quan hệ trên tạo thành một
quan hệ. Xác định phụ thuộc hàm cho các thuộc tính trong quan hệ này từ
đó xác định khoá chính của quan hệ (khóa chính của quan hệ này thường là
khóa ghép).
5. 3. 3. Chuẩn hóa về dạng chuẩn 2 (2NF)
Chuẩn hóa từ 1NF về 2NF bằng cách loại bỏ phụ thuộc bộ phận vào khoá. Vì phụ thuộc
bộ phận vào khóa chỉ có ở các quan hệ có khoá ghép nên các quan hệ có khóa là một thuộc
tính đã ở 1NF thì đương nhiên cũng ở 2NF.
● Tách các thuộc tính tham gia phụ thuộc bộ phận vào khoá vào một quan hệ
mới. Khoá chính của quan hệ là thuộc tính xác định hàm.
● Phần còn lại cùng với khoá chính của quan hệ trên tạo thành một quan hệ giữ
nguyên khoá chính như quan hệ ban đầu.
5. 3. 4. Chuẩn hoá về dạng chuẩn 3 (3NF)
Chuẩn hóa từ 2NF về 3NF bằng cách loại bỏ phụ thuộc hàm giữa các thuộc tính không
khoá.
● Tách các thuộc tính tham gia vào phụ thuộc hàm giữa các thuộc tính không
khoá vào một quan hệ mới. Khoá chính của quan hệ là thuộc tính xác định
hàm.
● Phần còn lại và khoá chính của quan hệ trên là một quan hệ giữ nguyên khoá
chính như quan hệ ban đầu.
5. 3. 5. Viết quan hệ dưới dạng các bản ghi logic
● Đặt tên cho các quan hệ tương ứng với dữ liệu lưu trữ.
● Viết các quan hệ dưới dạng bản ghi logic, xác định khóa chính, khóa ngoài
tương ứng.
5. 4. Ví dụ chuẩn hóa quan hệ
Xây dựng mô hình quan hệ ở dạng chuẩn 3 từ biểu mẫu sau:
Trang 8
Học phần: Hệ thống cơ sở dữ liệu
Chú ý: Đơn giá hàng thay đổi trong các hóa đơn khác nhau.
Trang 9
Học phần: Hệ thống cơ sở dữ liệu
0NF 1NF
SoHD Phụ thuộc hàm
SoHD
NgayLap NgayLap
MaKH
MaKH
TenKH
TenKH
ĐienThoai NgayLap TenKH
ĐienThoai
ĐiaChi MaKH DiaChi
ĐiaChi SoHD
GhiChu
GhiChu DienThoai
MaNV
HoTenNV MaNV HoTenN
V
& MaHang SoHD TenHang
MaHang
& TenHang MaHang
Loai
TenHang
& Loai SoHD
Loai
DonGia
& ĐonGia
ĐonGia SoLuong
& SoLuong
SoLuong
GhiChu
MaNV
HoTenNV
Trang 10
Học phần: Hệ thống cơ sở dữ liệu
Tách về 2NF
SoLuong
Trang 11
Học phần: Hệ thống cơ sở dữ liệu
Tách về 3NF
Trang 12
Học phần: Hệ thống cơ sở dữ liệu
*Nhận xét: Chuyển đồ thị phụ thuộc hàm của ví dụ trên thành bản ghi logic cũng chính
là chuẩn hóa quan hệ về 3NF. Vì vậy khi thực hành chỉ cần xác định đồ thị phụ thuộc hàm
sau đó tách đồ thị phụ thuộc hàm thành các bản ghi logic ta sẽ có các quan hệ ở 3NF.
Vào thời kỳ đầu của mô hình quan hệ khi mô hình hóa chưa được phát triển, cách tiếp
cận duy nhất để thiết kế cơ sở dữ liệu chính là chuẩn hóa quan hệ. Tuy nhiên, khi phương
pháp mô hình hóa được sử dụng trong thiết kế cở sở dữ liệu, hầu hết quá trình chuẩn hóa đã
thực sự được tiến hành trong suốt giai đoạn mô hình hóa bởi vì các luật và các quy tắc mô
hình hóa được xây dựng trên cơ sở của các luật chuẩn hóa. Vì vậy việc chuẩn hóa bây giờ
được sử dụng chủ yếu chỉ để kiểm tra các quan hệ được rút ra từ quá trình mô hình hóa đã
thực sự chuẩn hay chưa.
Bài tập
Xây dựng các quan hệ ở dạng 3NF từ các biểu mẫu sau:
1)
2)
Trang 13
Học phần: Hệ thống cơ sở dữ liệu
3)
Trang 14
Học phần: Hệ thống cơ sở dữ liệu
Trang 15