4.1.2. Thông tin dư thừa trong các bộ và sự dị thường cập nhật Một mục tiêu của thiết kế lược đồ là làm tối thiểu không gian lưu trữ các quan hệ
cơ sở. Các thuộc tính được nhóm vào trong các lược đồ quan hệ có một ảnh hưởng đáng
kể đến không gian lưu trữ. Nếu cùng một thông tin được lưu giữ nhiều lần trong cơ sở
dữ liệu thì ta gọi đó là dư thừa thông tin và điều đó sẽ làm lãng phí không gian nhớ. Ví
118
dụ, giả sử ta có bảng cơ sở sau đây:
Bảng 4.1: Bảng cơ sở thông tin nhân viên. Ở đây có sự dư thừa thông tin. Nếu một đơn vị có nhiều nhân viên làm việc thì
thông tin về đơn vị (Mã số, Tên đơn vị, Mã số người quản lý) được lưu giữ nhiều lần
trong bảng. So với việc dùng hai bảng NHÂN VIÊN và ĐƠN VỊ riêng rẽ như trong
lược đồ “CÔNG TY”, việc sử dụng bảng này làm lãng phí không gian nhớ.
Ngoài việc lãng phí không gian nhớ nó còn dẫn đến một vấn đề nghiêm trọng là sự
dị thường cập nhật. Dị thường cập nhật bao gồm: Dị thường Chèn, dị thường Xoá, dị
thường Sửa đổi. Những dị thường cập nhật này sẽ đưa vào cơ sở dữ liệu những thông
tin “lạ” và làm cho cơ sở dữ liệu mất tính đúng đắn.
Dị thường Chèn: Gây ra khó khăn khi chèn các bộ giá trị vào bảng hoặc dẫn đến
vi phạm ràng buộc. Ví dụ: Để chèn một bộ giá trị cho một nhân viên mới vào bảng
NHÂNVIÊN_ĐƠNVỊ ngoài các thông tin về nhân viên, ta phải đưa vào các thông tin
về đơn vị mà anh ta làm việc hoặc các giá trị null (nếu nhân viên không làm việc cho
đơn vị nào cả). Các thông tin về đơn vị phải được đưa vào một cách đúng đắn, phù hợp
với các thông tin của đơn vị đó trong các bộ khác. Trong lúc đó, với lược đồ cơ sở dữ
liệu “CÔNG TY” chúng ta không phải lo lắng gì, vì các thông tin về một đơn vị chỉ
được lưu trữ một lần.
Rất khó chèn một đơn vị mới vào quan hệ NHÂNVIÊN_ĐƠNVỊ nếu đơn vị đó
không có nhân viên nào làm việc.
119
Cách giải quyết duy nhất là điền các giá trị null vào các thuộc tính của nhân viên.
Điều đó làm nảy sinh vấn đề về ràng buộc bởi vì MãsốNV là khóa chính của quan hệ.
Dị thường Xóa: Gây ra việc mất thông tin khi xóa. Ví dụ khi ta xóa một bộ giá trị
trong bảng NHÂNVIÊN_ĐƠNVỊ. Nếu nhân viên tương ứng với bộ giá trị đó là người
cuối cùng làm việc cho đơn vị thì phép xóa sẽ kéo theo việc làm mất thông tin về đơn
vị.