Ví dụ: Có quan hệ Student:

Một phần của tài liệu Bài giảng Cơ sở dữ liệu: Chương 4 - Hoàng Thị Hà (Trang 66 - 71)

I. Định nghĩa các dạng chuẩn

Ví dụ: Có quan hệ Student:

student_no name date_of_birth subject grade 960100 Smith, J 14/11/77 Databases Soft_Dev ISDE C A D 960105 White, A 10/05/75 Soft_Dev ISDE B B 960120 Moore, T 01/03/70 Databases Soft_Dev Workshop A B C 960145 Smith, J 09/01/72 Databases B 960150 Black, D 21/08/73 Databases Soft_Dev ISDE Workshop B D C B

Nhận xét

 Quan hệ sinh viên trên sẽ không ở dạng chuẩn 1NF(hay gọi là dạng không chuẩn)

 Ta có thể chuyển quan hệ sinh viên trên về dạng chuẩn 1NF như sau:

Hoang Thi Ha

Student

student_no name date_of_birth subject grade 960100 Smith, J 14/11/77 Databases C 960100 Smith, J 14/11/77 Soft_Dev A 960100 Smith, J 14/11/77 ISDE D 960105 White, A 10/05/75 Soft_Dev B 960105 White, A 10/05/75 ISDE B 960120 Moore, T 01/03/70 Databases A 960120 Moore, T 01/03/70 Soft_Dev B 960120 Moore, T 01/03/70 Workshop C 960145 Smith, J 09/01/72 Databases B 960150 Black, D 21/08/73 Databases B 960150 Black, D 21/08/73 Soft_Dev D 960150 Black, D 21/08/73 ISDE C 960150 Black, D 21/08/73 Workshop B

Mặc dù cách giải quyết này có cải tiến nhưng sẽ gặp phải một số vấn đề:

student_no không thể làm primary key vì bị lặp lại

Vì vậy phải tìm một khóa mới, trong trường hợp này nó phải là khóa phức- có nhiều hơn một thuộc tính. Khóa mới là student_no subject.

Nhưng dữ liệu lại bị lặp lại nhiều, dư thừa dữ liệu ->

việc xử lý dữ liệu có thể sai sót. Mà sự dư thừa dữ liệu lại là nguyên nhân chính gây nên sự dị thường của dữ liệu mỗi khi thực hiện các thao tác chèn, xóa, và cập nhật dữ liệu.

Hoang Thi Ha

1NF

 Dị thường khi thêm bộ: Ta không thể thêm một sinh viên mới vào database nếu như sinh viên đó chưa tham gia học môn nào(vì ta không thể bỏ trống trường Subject)

 Dị thường khi cập nhật dữ liệu

Một phần của tài liệu Bài giảng Cơ sở dữ liệu: Chương 4 - Hoàng Thị Hà (Trang 66 - 71)