I. Định nghĩa các dạng chuẩn
Vậy phải làm thế nào?
Ta sẽ phải chia bảng Student ban đầu thành 2
bảng, khóa chính trong quan hệ ban đầu có trong cả 2 quan hệ:
Quan hệ thứ nhất chứa các thông tin không bị lặp lại
Hoang Thi Ha
1NF
Diem Sinhvien
student_no subject grade 960100 Databases C 960100 Soft_Dev A 960100 ISDE D 960105 Soft_Dev B 960105 ISDE B 960120 Databases A 960120 Soft_Dev B 960120 Workshop C 960145 Databases B 960150 Databases B 960150 Soft_Dev D 960150 ISDE C 960150 Workshop B
student_no name date_of_birth 960100 Smith, J 14/11/77 960105 White, A 10/05/75 960120 Moore, T 01/03/70 960145 Smith, J 09/01/72 960150 Black, D 21/08/73
1NF
Trong quan hệ Sinhvien sẽ giữ trường
Student_no làm khóa chính
Trong quan hệ Diem sẽ lấy trường Student_no và subject làm khóa chính
Trường Student_no sẽ liên kết hai bảng Sinh viên và điểm, giúp ta tìm được các thông tin về các môn học cùng với điểm các môn học của các sinh viên.Trong bảng Diem trường Student_no sẽ làm khóa ngoại lai.
Hoang Thi Ha
1NF
Vậy, với việc tách trên thì đã giảm bớt được một số sự dị thường:
Khi thêm: Ta có thể thêm sinh viên mới mà không cần biết họ đã tham gia học hay chưa?. Việc thêm này, chỉ nằm trong quan hệ Student và không nằm trong quan hệ
Record cho đến khi sinh viên này sinh viên này học ít nhất một môn
Khi xóa: Ta có thể xóa tất cả các bản ghi trong bảng
Diem nhưng sinh viên có mã student 960145 vẫn còn tồn tại trong bảng Student.