DANH MỤC TÀI LIỆU
Tìm hiểu về chuẩn hóa cơ sở dữ liệu
Tìm hi u v chu n hóa c s d li u ơ ở
Khi phát tri n ng d ng trên m t c s d li u quan h , m t trong nh ng ơ ở
khía c nh quan tr ng nh t c n đ c tính đ n là đ m b o r ng s nhân đôi ấ ầ ượ ế
d li u đ c gi m thi u.ữ ệ ư
Đi u này th c hi n cho hai m c đích: ự ệ
Gi m dung l ng l u tr c n thi t đ l u tr d li u. ượ ư ế ể ư
Tránh xung đ t d li u không c n thi t b i vì m t s b n ghi đ c ộ ữ ế ở ượ
sao chép c a cùng m t d li u đ c l u tr . ữ ệ ượ ư
Chu n hóa trong DBMS
Chu n hóa c s d li u là m t k thu t giúp thi t k l c đ c a c s ơ ộ ỹ ế ế ượ ơ
d li u m t cách t i u đ đ m b o các đi m trên. Ý t ng c t lõi c a ố ư ưở
vi c chu n hóa c s d li u là chia các b ng thành các ph n con nh h n ơ ở ữ ỏ ơ
và l u tr các con tr vào d li u thay vì sao chép nó. Đ hi u rõ h n v ư ữ ệ ơ
nh ng gì chúng ta v a nói, hãy cùng xem m t ví d đ n gi n: ụ ơ
Giả sử chúng ta phải lưu trữ thông n của các khóa học và giáo viên hướng dẫn trong một trường đại
học. Đây là cơ sở dữ liệu mẫu:
Course code Course venue Instructor Name Instructor’s phone
number
CS101 Lecture Hall 20 Prof. George +1 6514821924
CS152 Lecture Hall 21 Prof. Atkins +1 6519272918
CS154 CS Auditorium Prof. George +1 6514821924
đây, d li u v c b n l u tr mã khóa h c, đ a đi m khóa h c, tên ề ơ ư
ng i h ng d n và s đi n tho i c a ng i h ng d n. Lúc đ u, thi t ườ ướ ố ệ ườ ướ ế
k này có v n. Tuy nhiên, các v n đ b t đ u n y sinh khi chúng ta ế ấ ề ầ ả
c n s a đ i thông tin. Ví d , gi s , Giáo s George thay đ i s đi n tho i ả ử ư
di d ng c a mình. Trong tình h ng này, chúng ta s ph i ch nh s a s ướ ử ố
đi n tho i đ i v i CS101, nh ng quên ch nh s a s đó cho CS154? Đi u ạ ố ớ ư
này s d n đ n thông tin cũ/sai trong c s d li u. ế ơ ở
Tuy nhiên, v n đ này có th d dàng gi i quy t b ng cách chia b ng c a ể ễ ế
chúng ta thành 2 b ng đ n gi n h n: ơ ả ơ
B ng 1(Instructor)
Instructor ID
Instructor Name
Instructor mobile number
B ng 2 (Course):
Course code
Course venue
Instructor ID
Bây gi , hãy cùng xem d li u c a chúng ta ra sao nhé: ữ ệ
Table 1 (Instructor):
Insturctor's ID Instructor's name Instructor's number
1 Prof. George +1 6514821924
2 Prof. Atkins +1 6519272918
Table 2 (Course):
Course code Course venue Instructor ID
CS101 Lecture Hall 20 1
CS152 Lecture Hall 21 2
CS154 CS Auditorium 1
V c b n, chúng ta l u tr các gi ng viên m t cách riêng bi t và trong ề ơ ư
b ng khóa h c, chúng ta không l u tr toàn b d li u c a ng i h ng ộ ữ ườ ướ
d n. Đi u này cũng ti t ki m dung l ng l u tr . Có th đi u này không ế ượ ư ể ề
đ c rõ ràng trong ví d trên. Tuy nhiên, hãy suy nghĩ v tr ng h p khi cóượ ề ườ
hàng trăm khóa h c và ng i h ng d n; và m i ng i h ng d n, chúng ườ ướ ườ ướ
ta ph i l u tr không ch s đi n tho i di đ ng, mà còn r t nhi u các thông ư ỉ ố
tin khác nh đ a ch văn phòng, đ a ch email, chuyên môn, tính kh d ng,...ư ị ỉ ị ỉ
Trong tình hu ng nh v y, vi c sao chép quá nhi u d li u s làm tăng yêu ư ậ
c u l u tr không c n thi t.ầ ư ế
Mình v a gi i thi u v i các b n v m t ví d đ n gi n v cách ho t đ ng ụ ơ
c a c s d li u. Bây gi chúng ta s nghiên c u nó m t cách chính th c ơ ở
h n nhé!!!!!ơ
Các lo i chu n hóa d li u: ữ ệ
Có nhi u d ng chu n hóa c s d li u khác nhau. M i hình th c này có ơ ở
t m quan tr ng trong vi c giúp t i u c s d li u đ l u tr và gi m d ố ư ơ ể ư ư
th a d li u. ữ ệ
D ng chu n hóa 1 (1NF)ạ ẩ
Dạng chuẩn hóa 1 chỉ đơn giản nói rằng mỗi ô của một bảng phải chứa duy nhất một giá trị. Chúng ta
hãy lấy một ví dụ. Giả sử chúng ta đang lưu trữ các khóa học mà một người hướng dẫn cụ thể thực hiện,
chúng ta có thể lưu trữ như sau:
Instructor's name Course code
Prof. George (CS101, CS154)
Prof. Atkins (CS152)
Vấn đề là ở hàng đầu ên, chúng ta đang lưu trữ 2 khóa học của giáo sư George. Đây không phải là cách
tối ưu từ khi cơ sở dữ liệu SQL được thiết kế để sử dụng. Một cách tốt hơn để lưu trữ các khóa học riêng
biệt:
Instructor's name Course code
Prof. George CS101
Instructor's name Course code
Prof. George CS154
Prof. Atkins CS152
B ng cách này, n u chúng ta mu n ch nh s a m t s thông tin liên quan ế ộ ố
đ n CS101, chúng ta s không ph i đ ng vào d li u t ng ng v i ế ữ ệ ươ
CS154. Ngoài ra, hãy quan sát r ng m i hàng l u tr ch 1 thông tin duy ư ữ ỉ
nh t. Không có s l p l i d li u. Đây là d ng chu n hóa 1. ự ặ
D ng chu n hóa 2 (2NF)ạ ẩ
Đ i v i m i b ng d ng chu n 2, c n đáp ng 2 đi u ki n sau: ở ạ
B ng ph i th a mãn chu n 1 (1NF). ả ỏ
Khóa chính c a b ng t ng ng v i m t c t trong b ngủ ả ươ ứ ớ ộ .
Điều đầu ên rõ ràng là đơn giản vì chúng ta vừa nghiên cứu 1NF ở trên. Chúng ta hãy Um hiểu điểm đầu
ên - cột khóa chính. Vâng, khóa chính là tập hợp các cột xác định Ynh duy nhất cho một hàng. Về cơ
bản, không có 2 hàng có cùng một khóa chính. Hãy cùng xem ví dụ:
Course code Course venue Instructor Name Instructor’s
phone number
CS101 Lecture Hall 20 Prof. George +1 6514821924
CS152 Lecture Hall 21 Prof. Atkins +1 6519272918
CS154 CS Auditorium Prof. George +1 6514821924
Trong bảng này, mã khóa học là duy nhất. Vì vậy, nó trở thành khóa chính của chúng ta. Chúng ta hãy lấy
một ví dụ khác về lưu trữ các khóa học của các học sinh. Mỗi sinh viên có thể nằm trong nhiều khóa học.
Hãy cùng xem bảng dưới đây:
Student name Course code
Rahul CS152
Student name Course code
Rajat CS101
Rahul CS154
Raman CS101
C t đ u tiên l u tên h c sinh và c t th 2 là khóa h c mà sinh viên tham ộ ầ ư
gia. Rõ ràng, c t tên sinh viên không ph i là duy nh t vì chúng ta có th ả ấ
th y r ng có 2 hàng t ng ng v i tên "Rahul" trong hàng 1 và hàng 3. ấ ằ ươ
T ng t , c t mã khóa h c không ph i là duy nh t vì chúng ta có th th y ươ ự ộ
r ng có 2 hàng t ng ng v i mã khóa h c CS101 là hàng 2 và hàng 4. Tuy ươ ứ
nhiên, n u c p (tên sinh viên, mã khóa h c) thì l i là duy nh t vì sinh viên ế ặ
không th đăng ký h c cùng m t khóa h c nhi u l n. v y, 2 c t này khi ề ầ
k t h p l i thì t o thành khóa chính cho c s d li u.ế ơ ở
Theo đ nh nghĩa c a d ng chu n hóa 2, b ng đăng ký trên không d ng ở ạ
chu n 2. Đ đ t đ c đi u này, chúng ta có th chia nó thành 2 b ng: ể ạ ượ
Students:
Student name Enrolment number
Rahul 1
Rajat 2
Raman 3
V i b ng này, c t th 2 là duy nh t và cho bi t ch s c a khóa h c mà ế ỉ ố
h c sinh tham gia. Rõ ràng, ch s c a khóa h c là duy nh t. Bây gi , ỉ ố
chúng ta có th đính kèm t ng ch s c a khóa h c v i mã khóa h c. ỉ ố
Courses:
Course code Enrolment number
CS101 2
Course code Enrolment number
CS101 3
CS152 1
CS154 1
S k t h p c a hai b ng này cùng cung c p cho chúng ta thông tin chính ự ế
xác gi ng nh b ng ban đ u. ư ả
D ng chu n hóa 3 (3NF)ạ ẩ
Tr c khi tìm hi u d ng chu n hóa 3, hãy cùng tìm hi u khái ni m v s ướ ề ự
ph thu c ch c năng trên m t b ng nhé. ộ ả
Cột A được cho là phụ thuộc vào chức năng trên cột B, nếu thay đổi giá trị của A có thể yêu cầu thay đổi
giá trị của B. Hãy cùng xem ví dụ:
Course code Course venue Instructor's name Department
MA214 Lecture Hall 18 Prof. George CS
Department
ME112 Auditorium building Prof. John Electronics
Department
Trong bảng trên, cột bộ phận (Department) phụ thuộc vào cột tên giáo sư (Instructor's name). Điều này
là do nếu trong một hàng cụ thể, chúng ta thay đổi tên của giáo sư (Instructor's name), chúng ta cũng sẽ
phải thay đổi giá trị của bộ phần (Department). Ví dụ: giả sử MA214 hiện đang được thực hiện bởi Giáo
sư Ronald, người đến từ khoa Toán học, bảng sẽ trông như thế này:
Course code Course venue Instructor's name Department
MA214 Lecture Hall 18 Prof. Ronald Mathematics
Department
ME112 Auditorium building Prof. John Electronics
Department
thông tin tài liệu
Chuẩn hóa cơ sở dữ liệu là một kỹ thuật giúp thiết kế lược đồ của cơ sở dữ liệu một cách tối ưu. Để hiểu rõ hơn về chuẩn hóa cơ sở dữ liệu hãy đọc tài liệu sau
Mở rộng để xem thêm
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×