Your SlideShare is downloading. ×
Bài 5: Chuẩn hóa cơ sở dữ liệu
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Bài 5: Chuẩn hóa cơ sở dữ liệu

18,337
views

Published on

Các bất thường khi cập nhật dữ liệu …

Các bất thường khi cập nhật dữ liệu
Giải thích sự cần thiết phải chuẩn hóa dữ liệu
Tìm hiểu một số khái niệm:
Khóa của quan hệ
Phụ thuộc hàm
Tìm hiểu quy trình chuẩn hóa CSDL
Tìm hiểu 3 dạng chuẩn: 1NF, 2NF, 3NF
Trình tự chuẩn hóa theo 3 dạng chuẩn
Tìm hiểu khái niệm khử chuẩn


0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
18,337
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1,264
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Bài 5: CHUẨN HÓA CƠ SỞ DỮ LIỆU
  • 2. Giới thiệu ngôn ngữ SQL Giới thiệu Oracle SQL Tìm hiểu các nhóm ngôn ngữ của SQL Hệ thống bài cũ Giới thiệu ngôn ngữ SQL Giới thiệu Oracle SQL Tìm hiểu các nhóm ngôn ngữ của SQL Slide 5 -Chuẩn hóa cơ sở dữ liệu 2
  • 3. Các bất thường khi cập nhật dữ liệu Giải thích sự cần thiết phải chuẩn hóa dữ liệu Tìm hiểu một số khái niệm: Khóa của quan hệ Phụ thuộc hàm Tìm hiểu quy trình chuẩn hóa CSDL Tìm hiểu 3 dạng chuẩn: 1NF, 2NF, 3NF Trình tự chuẩn hóa theo 3 dạng chuẩn Tìm hiểu khái niệm khử chuẩn Mục tiêu bài học hôm nay Các bất thường khi cập nhật dữ liệu Giải thích sự cần thiết phải chuẩn hóa dữ liệu Tìm hiểu một số khái niệm: Khóa của quan hệ Phụ thuộc hàm Tìm hiểu quy trình chuẩn hóa CSDL Tìm hiểu 3 dạng chuẩn: 1NF, 2NF, 3NF Trình tự chuẩn hóa theo 3 dạng chuẩn Tìm hiểu khái niệm khử chuẩn Slide 5 -Chuẩn hóa cơ sở dữ liệu 3
  • 4. Ví dụ với CSDL là bảng hóa đơn (INVOICE) cho khách hàng như sau: Các bất thường khi cập nhật dữ liệu Slide 5 -Chuẩn hóa cơ sở dữ liệu 4
  • 5. Bất thường khi thêm dữ liệu: Không thể thêm một khách hàng vào CSDL nếu khách hàng không mua một mặt hàng nào. Bất thường khi cập nhật dữ liệu: Muốn thay đổi địa chỉ của khách hàng, phải thay đổi địa chỉ trên tất cả các hóa đơn của khách hàng đó bởi vì địa chỉ của khách hàng lưu trữ dư thừa trong tất cả các hóa đơn của khách hàng. Các bất thường khi cập nhật dữ liệu Bất thường khi thêm dữ liệu: Không thể thêm một khách hàng vào CSDL nếu khách hàng không mua một mặt hàng nào. Bất thường khi cập nhật dữ liệu: Muốn thay đổi địa chỉ của khách hàng, phải thay đổi địa chỉ trên tất cả các hóa đơn của khách hàng đó bởi vì địa chỉ của khách hàng lưu trữ dư thừa trong tất cả các hóa đơn của khách hàng. Slide 5 -Chuẩn hóa cơ sở dữ liệu 5
  • 6. Bất thường khi xóa dữ liệu: Nếu xóa hóa đơn cuối cùng của một khách hàng thì tất cả dữ liệu về khách hàng đó bị mất. Các bất thường khi cập nhật dữ liệu Bất thường khi xóa dữ liệu: Nếu xóa hóa đơn cuối cùng của một khách hàng thì tất cả dữ liệu về khách hàng đó bị mất. Slide 5 -Chuẩn hóa cơ sở dữ liệu 6
  • 7. Mục đích của chuẩn hóa CSDL là nhóm các thuộc tính vào các quan hệ nhằm giảm thiểu dư thừa dữ liệu, loại bỏ các bất thường khi cập nhật CSDL. -> Cần có các bước chuẩn hoá dữ liệu từ một CSDL chưa chuẩn hóa sang chuẩn hóa. Dạng chưa chuẩn hóa (unnormalized form - UNF): quan hệ chưa chuẩn hóa là quan hệ chứa các bộ dữ liệu bị lặp lại giá trị. Sự cần thiết phải chuẩn hóa CSDL Mục đích của chuẩn hóa CSDL là nhóm các thuộc tính vào các quan hệ nhằm giảm thiểu dư thừa dữ liệu, loại bỏ các bất thường khi cập nhật CSDL. -> Cần có các bước chuẩn hoá dữ liệu từ một CSDL chưa chuẩn hóa sang chuẩn hóa. Dạng chưa chuẩn hóa (unnormalized form - UNF): quan hệ chưa chuẩn hóa là quan hệ chứa các bộ dữ liệu bị lặp lại giá trị. Slide 5 -Chuẩn hóa cơ sở dữ liệu 7
  • 8. Bảng hóa đơn (INVOICE) ở trên biểu diễn dưới dạng bảng như sau. Bảng này ở dạng không chuẩn Ví dụ Slide 3 - Truy vấn cơ sở dữ liệu trên form 8
  • 9. Bảng này được chuẩn hóa bằng cách tách thành hai bảng như sau: Ví dụ Slide 3 - Truy vấn cơ sở dữ liệu trên form 9
  • 10. Khóa (Primary Key) là một (một nhóm) thuộc tính của quan hệ cho phép xác định mỗi bộ khác nhau trong quan hệ. Ví dụ: Trong quan hệ SINHVIEN: MaSV, HoTenSV, NgaySinh, DiaChi thì thuộc tính khóa là MaSV. Khái niệm khóa của quan hệ Khóa (Primary Key) là một (một nhóm) thuộc tính của quan hệ cho phép xác định mỗi bộ khác nhau trong quan hệ. Ví dụ: Trong quan hệ SINHVIEN: MaSV, HoTenSV, NgaySinh, DiaChi thì thuộc tính khóa là MaSV. Slide 5 -Chuẩn hóa cơ sở dữ liệu 10
  • 11. Cho hai thuộc tính A và B B được gọi là phụ thuộc hàm vào A nếu có không quá một giá trị của thuộc tính B liên kết với một giá trị của thuộc tính A. Khái niệm phụ thuộc hàm Cho hai thuộc tính A và B B được gọi là phụ thuộc hàm vào A nếu có không quá một giá trị của thuộc tính B liên kết với một giá trị của thuộc tính A. Slide 5 -Chuẩn hóa cơ sở dữ liệu 11
  • 12. Định nghĩa cách khác: Cho r là một quan hệ được định nghĩa trên lượt đồ quan hệ R. X và Y là hai tập con (khác rỗng) các thuộc tính của R. Ta nói X xác định hàm Y, ký hiệu: X  Y là một phụ thuộc hàm định nghĩa trên R nếu: ∀ t1, t2 ∈ r(R): t1(X) = t2(X) ⇒ t1(Y) = t2(Y) Ví dụ: Quan hệ SINHVIEN: MASV, HOTENSV, NAMSINH có phụ thuộc MASV, HOTENSV  NAMSINH Khái niệm phụ thuộc hàm Định nghĩa cách khác: Cho r là một quan hệ được định nghĩa trên lượt đồ quan hệ R. X và Y là hai tập con (khác rỗng) các thuộc tính của R. Ta nói X xác định hàm Y, ký hiệu: X  Y là một phụ thuộc hàm định nghĩa trên R nếu: ∀ t1, t2 ∈ r(R): t1(X) = t2(X) ⇒ t1(Y) = t2(Y) Ví dụ: Quan hệ SINHVIEN: MASV, HOTENSV, NAMSINH có phụ thuộc MASV, HOTENSV  NAMSINH Slide 5 -Chuẩn hóa cơ sở dữ liệu 12
  • 13. Quy trình chuẩn hóa dữ liệu Quan hệ chưa được chuẩn hóa Quan hệ ở dạng chuẩn I Loại bỏ các thuộc tính lặp và đa trị Loại bỏ các thuộc tính phụ thuộc bộ phận Slide 5 -Chuẩn hóa cơ sở dữ liệu 13 Quan hệ ở dạng chuẩn II Quan hệ ở dạng chuẩn III Quan hệ được chuẩn hóa hoàn toàn Loại bỏ các thuộc tính phụ thuộc bộ phận Loại bỏ các thuộc tính phụ thuộc bắc cầu Áp dụng các dạng chuẩn khác
  • 14. Chuẩn hóa là quá trình phân rã lược đồ quan hệ dựa trên một tập phụ thuộc hàm nhằm đảm các lược đồ quan hệ thoả mãn 2 tính chất: Trùng lắp dữ liệu ít nhất Khả năng gây ra bất thường khi cập nhật được giảm thiểu. Các dạng chuẩn: Dạng chuẩn 1 (1NF) Dạng chuẩn 2 (2NF) Dạng chuẩn 3 (3NF) Chuẩn hóa CSDL Chuẩn hóa là quá trình phân rã lược đồ quan hệ dựa trên một tập phụ thuộc hàm nhằm đảm các lược đồ quan hệ thoả mãn 2 tính chất: Trùng lắp dữ liệu ít nhất Khả năng gây ra bất thường khi cập nhật được giảm thiểu. Các dạng chuẩn: Dạng chuẩn 1 (1NF) Dạng chuẩn 2 (2NF) Dạng chuẩn 3 (3NF) Slide 5 -Chuẩn hóa cơ sở dữ liệu 14
  • 15. Xét bảng dữ liệu đơnvị sau: Ta thấy trường ĐịaĐiểm của đơn vị 5 chứa các thuộc tính đa trị (nhiều hơn 1 giá trị) có 3 nơi là: Nam Định, Hà Nội, Bắc Ninh vì vậy bảng dữ liệu này chưa đạt dạng chuẩn hóa. Ví dụ 1 dạng chưa chuẩn Xét bảng dữ liệu đơnvị sau: Ta thấy trường ĐịaĐiểm của đơn vị 5 chứa các thuộc tính đa trị (nhiều hơn 1 giá trị) có 3 nơi là: Nam Định, Hà Nội, Bắc Ninh vì vậy bảng dữ liệu này chưa đạt dạng chuẩn hóa. Slide 5 -Chuẩn hóa cơ sở dữ liệu 15
  • 16. Xét bảng dữ liệu NHÂN VIÊN_DỰÁN: Ta thấy nhóm thuộc tính {Tênnhânviên, sốgiờ} bị lặp lại nhiều lần trong các dự án khác nhau. Vì vậy cơ sở dữ liệu này chưa đạt chuẩn hóa. Ví dụ 2 dạng chưa chuẩn Xét bảng dữ liệu NHÂN VIÊN_DỰÁN: Ta thấy nhóm thuộc tính {Tênnhânviên, sốgiờ} bị lặp lại nhiều lần trong các dự án khác nhau. Vì vậy cơ sở dữ liệu này chưa đạt chuẩn hóa. Slide 5 -Chuẩn hóa cơ sở dữ liệu 16
  • 17. Xét bảng dữ liệu Invoice Đây là 1 hóa đơn của 1 khách hàng, Nếu có thêm 1 hóa đơn khác thì các thuộc tính {Product No, Description, Quantity, Unit Price, Extended Mount} sẽ lặp lại trong các hóa đơn khác vì vậy bảng này chưa đạt dạng chuẩn hóa. Ví dụ 3 dạng chưa chuẩn Xét bảng dữ liệu Invoice Đây là 1 hóa đơn của 1 khách hàng, Nếu có thêm 1 hóa đơn khác thì các thuộc tính {Product No, Description, Quantity, Unit Price, Extended Mount} sẽ lặp lại trong các hóa đơn khác vì vậy bảng này chưa đạt dạng chuẩn hóa. Slide 5 -Chuẩn hóa cơ sở dữ liệu 17
  • 18. Khái niệm: Lược đồ quan hệ R được gọi là 1NF nếu và chỉ nếu tất cả các thuộc tính của R thoả mãn cả 3 điều kiện sau: Là nguyên tố Giá trị của các thuộc tính trên các bộ là đơn trị, không chứa nhóm lặp. Không có một thuộc tính nào có giá trị mà có thể tính toán được từ một số thuộc tính khác. Dạng chuẩn 1 (1NF) Khái niệm: Lược đồ quan hệ R được gọi là 1NF nếu và chỉ nếu tất cả các thuộc tính của R thoả mãn cả 3 điều kiện sau: Là nguyên tố Giá trị của các thuộc tính trên các bộ là đơn trị, không chứa nhóm lặp. Không có một thuộc tính nào có giá trị mà có thể tính toán được từ một số thuộc tính khác. Slide 5 -Chuẩn hóa cơ sở dữ liệu 18
  • 19. Ví dụ 1: Một lược đồ quan hệ đạt chuẩn 1NF Dạng chuẩn 1 (1NF) MSKH TÊNKH TP PVC MSMH TÊNMH ĐG SL S1 S1 S1 S2 S2 S3 S4 An An An Hòa Hoà Thanh Trang HCM HCM HCM HN HN NT NT 01 01 01 02 02 03 03 P1 P2 P3 P1 P3 P2 P2 Táo Chanh Táo Chanh Táo Chanh Chanh 650 500 450 650 450 500 500 300 200 400 100 300 200 210 Slide 5 -Chuẩn hóa cơ sở dữ liệu 19 S1 S1 S1 S2 S2 S3 S4 An An An Hòa Hoà Thanh Trang HCM HCM HCM HN HN NT NT 01 01 01 02 02 03 03 P1 P2 P3 P1 P3 P2 P2 Táo Chanh Táo Chanh Táo Chanh Chanh 650 500 450 650 450 500 500 300 200 400 100 300 200 210
  • 20. Ví dụ 2: Quan hệ sau được chuẩn hóa về dạng chuẩn 1 Dạng chuẩn 1 (1NF) Họ Tên Nguyễn Văn Trần Duy Hưng An Họ và tên Họ Tên Không nguyên tố nguyên tố Slide 5 -Chuẩn hóa cơ sở dữ liệu 20 Nguyễn Văn Trần Duy Hưng An Họ và tên Nguyễn Văn Hưng Trần Duy An Họ Tên Nguyễn Văn Trần Duy Hưng An nguyên tố
  • 21. Nguyên tắc chung: Loại bỏ thuộc tính lặp hoặc đa trị Các bước thực hiện: Tách nhóm thuộc tính lặp / đa trị sang một bảng mới. Khóa của bảng mới là Khóa của bảng ban đầu và khóa nhóm lặp Bảng còn lại là bảng gồm có khóa và các thuộc tính còn lại. Ví dụ: cho quan hệ Với A1 là khóa chính của quan hệ, {A4,A5,A5} là thuộc tính lặp. Quan hệ R sẽ được tách thành 2 quan hệ R1, R2 Quy tắc chuyển bảng từ dạng chưa chuẩn về chuẩn 1 NF Nguyên tắc chung: Loại bỏ thuộc tính lặp hoặc đa trị Các bước thực hiện: Tách nhóm thuộc tính lặp / đa trị sang một bảng mới. Khóa của bảng mới là Khóa của bảng ban đầu và khóa nhóm lặp Bảng còn lại là bảng gồm có khóa và các thuộc tính còn lại. Ví dụ: cho quan hệ Với A1 là khóa chính của quan hệ, {A4,A5,A5} là thuộc tính lặp. Quan hệ R sẽ được tách thành 2 quan hệ R1, R2 Slide 5 -Chuẩn hóa cơ sở dữ liệu 21
  • 22. Cho bảng ĐƠN VỊ Ta có quan hệ sau R(MãsốĐV, TênDV, MãsốNQL, {Địa điểm} ) Thuộc tính đa trị là {Địa điểm} quan hệ này được tách thành: R1(MãsốĐV, Địa điểm ) R2(MãsốĐV, TênDV, MãsốNQL) Ví dụ 1 đưa bảng dữ liệu về dạng chuẩn 1NF Cho bảng ĐƠN VỊ Ta có quan hệ sau R(MãsốĐV, TênDV, MãsốNQL, {Địa điểm} ) Thuộc tính đa trị là {Địa điểm} quan hệ này được tách thành: R1(MãsốĐV, Địa điểm ) R2(MãsốĐV, TênDV, MãsốNQL) Slide 5 -Chuẩn hóa cơ sở dữ liệu 22
  • 23. Cho bảng NHÂNVIÊN_DỰÁN Quan hệ này là R(MãsốDA, TênDA, {Tênnhânviên, Số giờ} ) Thuộc tính lặp là {Tênnhânviên, Số giờ} quan hệ được tách thành: R1(MãsốĐV, Tênnhânviên, Số giờ) R2(MãsốĐV, TênDA) Ví dụ 2 đưa bảng dữ liệu về dạng chuẩn 1NF Cho bảng NHÂNVIÊN_DỰÁN Quan hệ này là R(MãsốDA, TênDA, {Tênnhânviên, Số giờ} ) Thuộc tính lặp là {Tênnhânviên, Số giờ} quan hệ được tách thành: R1(MãsốĐV, Tênnhânviên, Số giờ) R2(MãsốĐV, TênDA) Slide 5 -Chuẩn hóa cơ sở dữ liệu 23
  • 24. Xét bảng INVOICE được viết thành quan hệ sau (thêm Invoice Number làm thuộc tính khóa cho bảng Invoice vì mỗi hóa đơn có Số hóa đơn là Khóa) R(Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, {Product Number, Product Description, Quantity, Unit Price, Extended Amount, Total Order Amount }) Thuộc tính lặp được bôi đỏ và đặt trong dấu { } quan hệ được tách R1-INVOICE (Invoice Number (PK), Product Number, Product Description, Quantity, Unit Price, Extended Amount, Total Order Amount) R2-INVOICE LINE ITEM (Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date) Ví dụ 3 đưa bảng dữ liệu về dạng chuẩn 1NF Xét bảng INVOICE được viết thành quan hệ sau (thêm Invoice Number làm thuộc tính khóa cho bảng Invoice vì mỗi hóa đơn có Số hóa đơn là Khóa) R(Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, {Product Number, Product Description, Quantity, Unit Price, Extended Amount, Total Order Amount }) Thuộc tính lặp được bôi đỏ và đặt trong dấu { } quan hệ được tách R1-INVOICE (Invoice Number (PK), Product Number, Product Description, Quantity, Unit Price, Extended Amount, Total Order Amount) R2-INVOICE LINE ITEM (Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date) Slide 5 -Chuẩn hóa cơ sở dữ liệu 24
  • 25. Kết quả bảng được tách thành hai bảng như sau Ví dụ 3 đưa bảng dữ liệu về dạng chuẩn 1NF(tiếp) Slide 5 -Chuẩn hóa cơ sở dữ liệu 25
  • 26. Quan hệ R được gọi là đạt dạng chuẩn 2 nếu đã là 1NF và tất cả các thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa. Thuộc tính không khóa: là thuộc tính không tham gia vào bất kỳ khoá nào. Dạng chuẩn 2 (2NF) Quan hệ R được gọi là đạt dạng chuẩn 2 nếu đã là 1NF và tất cả các thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa. Thuộc tính không khóa: là thuộc tính không tham gia vào bất kỳ khoá nào. Slide 5 -Chuẩn hóa cơ sở dữ liệu 26
  • 27. Quy tắc chuẩn hóa từ 1NF - 2NF: Bước 1: Loại bỏ các thuộc tính không khoá phụthuộc vào một bộ phận khoá chính và tách thành ra một bảng riêng, khoá chính của bảng là bộ phận khoá mà chúng phụ thuộc vào. Bước 2: Các thuộc tính còn lại lập thành một quan hệ, khóa chính của nó là khóa chính ban đầu. Quy tắc chuẩn hóa từ 1NF - 2NF Quy tắc chuẩn hóa từ 1NF - 2NF: Bước 1: Loại bỏ các thuộc tính không khoá phụthuộc vào một bộ phận khoá chính và tách thành ra một bảng riêng, khoá chính của bảng là bộ phận khoá mà chúng phụ thuộc vào. Bước 2: Các thuộc tính còn lại lập thành một quan hệ, khóa chính của nó là khóa chính ban đầu. Slide 5 -Chuẩn hóa cơ sở dữ liệu 27
  • 28. Quy tắc chuẩn hóa từ 1NF - 2NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 28
  • 29. Ví dụ: cho quan hệ R(MSKH, TÊNKH, TP, PVC, MSMH, TÊNMH, ĐG, SL) và tập phụ thuộc hàm F được định nghĩa trên R: Quan hệ này được tách thành các quan hệ sau R1(MSKH, TÊNKH, TP, PVC) R2(MSKH, MSMH, TÊNMH, ĐG, SL) Trong R2 chứa phụ thuộc hàm {MSMH} {TÊNMH, ĐG} tách thành R21(MSMH, TÊNMH, ĐG) R22(MSKH, MSMH,SL) Ví dụ 1 tách chuẩn từ 1NF-2NF Ví dụ: cho quan hệ R(MSKH, TÊNKH, TP, PVC, MSMH, TÊNMH, ĐG, SL) và tập phụ thuộc hàm F được định nghĩa trên R: Quan hệ này được tách thành các quan hệ sau R1(MSKH, TÊNKH, TP, PVC) R2(MSKH, MSMH, TÊNMH, ĐG, SL) Trong R2 chứa phụ thuộc hàm {MSMH} {TÊNMH, ĐG} tách thành R21(MSMH, TÊNMH, ĐG) R22(MSKH, MSMH,SL) Slide 5 -Chuẩn hóa cơ sở dữ liệu 29
  • 30. Tách thành các quan hệ sau Ví dụ 1 tách chuẩn từ 1NF-2NF (tiếp) Slide 5 -Chuẩn hóa cơ sở dữ liệu 30
  • 31. Quan hệ này được tách thành các quan hệ sau Ví dụ 2 tách chuẩn từ 1NF-2NF Quan hệ này được tách thành các quan hệ sau Slide 5 -Chuẩn hóa cơ sở dữ liệu 31
  • 32. Kết quả tách ta được 3 bảng sau Ví dụ 2 tách chuẩn từ 1NF-2NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 32
  • 33. Xét Quan hệ INVOICE LINE ITEM: (Invoice Number (PK), Product Number (PK), Product Description, Quantity, Unit Price, Extended Amount) Ta thấy có phụ thuộc hàm vào một phần của khóa như sau {Product Number} -> {Product Description, Unit Price} Quan hệ này được tách thành 2 quan hệ sau: PRODUCT (Product Number,Product Description, Unit Price) INVOICE LINE ITEM (Invoice Number (PK), Product Number (PK), Quantity, ExtAmount) Ví dụ 3 tách chuẩn từ 1NF-2NF Xét Quan hệ INVOICE LINE ITEM: (Invoice Number (PK), Product Number (PK), Product Description, Quantity, Unit Price, Extended Amount) Ta thấy có phụ thuộc hàm vào một phần của khóa như sau {Product Number} -> {Product Description, Unit Price} Quan hệ này được tách thành 2 quan hệ sau: PRODUCT (Product Number,Product Description, Unit Price) INVOICE LINE ITEM (Invoice Number (PK), Product Number (PK), Quantity, ExtAmount) Slide 5 -Chuẩn hóa cơ sở dữ liệu 33
  • 34. Cho quan hệ R, F là tập phụ thuộc hàm định nghĩa trên R. R được gọi là đạt dạng chuẩn 3 nếu thoả mãn các điều kiện sau: R phải đạt dạng chuẩn 2NF Mọi thuộc tính không khoá không phụ thuộc bắc cầu vào khóa (tức là tất cả các thuộc tính phải được suy ra trực tiếp từ khóa). Dạng chuẩn 3 (3NF) Cho quan hệ R, F là tập phụ thuộc hàm định nghĩa trên R. R được gọi là đạt dạng chuẩn 3 nếu thoả mãn các điều kiện sau: R phải đạt dạng chuẩn 2NF Mọi thuộc tính không khoá không phụ thuộc bắc cầu vào khóa (tức là tất cả các thuộc tính phải được suy ra trực tiếp từ khóa). Slide 5 -Chuẩn hóa cơ sở dữ liệu 34
  • 35. Ví dụ: quan hệ R(MSKH, TÊNKH, TP, PVC), FR = {MSKH } {TÊNKH, TP,PVC} MSKH là khóa chính {TP}  PVC} chưa đạt chuẩn NF3 vì có thuộc tính PVC được suy ra từ thuộc tính TP (không phải là khóa). Dạng chuẩn 3 (3NF) Ví dụ: quan hệ R(MSKH, TÊNKH, TP, PVC), FR = {MSKH } {TÊNKH, TP,PVC} MSKH là khóa chính {TP}  PVC} chưa đạt chuẩn NF3 vì có thuộc tính PVC được suy ra từ thuộc tính TP (không phải là khóa). Slide 5 -Chuẩn hóa cơ sở dữ liệu 35
  • 36. Quy tắc chuẩn hóa về NF3: Bước 1: Loại bỏ các thuộc tính phụ thuộc bắc cầu ra khỏi quan hệ và tách chúng thành một quan hệ riêng có khoá chính là thuộc tính bắc cầu. Bước 2: Các thuộc tính còn lại lập thành một quan hệ có khóa chính là quan hệ ban đầu. Quy tắc chuẩn hóa về 3NF Quy tắc chuẩn hóa về NF3: Bước 1: Loại bỏ các thuộc tính phụ thuộc bắc cầu ra khỏi quan hệ và tách chúng thành một quan hệ riêng có khoá chính là thuộc tính bắc cầu. Bước 2: Các thuộc tính còn lại lập thành một quan hệ có khóa chính là quan hệ ban đầu. Slide 5 -Chuẩn hóa cơ sở dữ liệu 36
  • 37. Quy tắc chuẩn hóa về 3NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 37
  • 38. Ví dụ: Quan hệ R(MSKH, TÊNKH, TP, PVC) được tách thành 2 bảng R-VC (TP, PVC) R-KHÁCHHÀNG (MSKH, TÊNKH, TP) Ví dụ 1 chuyển sang chuẩn 3NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 38
  • 39. Quan hệ này được tách thành các quan hệ sau Ví dụ 2 chuyển sang chuẩn 3NF Quan hệ này được tách thành các quan hệ sau Slide 5 -Chuẩn hóa cơ sở dữ liệu 39
  • 40. Ví dụ 2 chuyển sang chuẩn 3NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 40
  • 41. Xét quan hệ INVOICE đã được tách như sau: INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount Ta thấy có chứa thuộc tính bắc cầu sau {Customer Number} -> {Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone} Bảng này được tách thành hai bảng sau: CUSTOMER (Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone ) INVOICE (Invoice Number (PK), Customer Number, Terms, Ship Via, Order Date, Total Order Amount) Ví dụ 3 chuyển sang chuẩn 3NF Xét quan hệ INVOICE đã được tách như sau: INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount Ta thấy có chứa thuộc tính bắc cầu sau {Customer Number} -> {Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone} Bảng này được tách thành hai bảng sau: CUSTOMER (Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone ) INVOICE (Invoice Number (PK), Customer Number, Terms, Ship Via, Order Date, Total Order Amount) Slide 5 -Chuẩn hóa cơ sở dữ liệu 41
  • 42. Cách làm: Chuẩn hóa quan hệ INVOICE về dạng chuẩn 1NF Tiếp tục chuẩn hóa về dạng 2NF Chuẩn hóa về dạng 3NF Ví dụ Cách làm: Chuẩn hóa quan hệ INVOICE về dạng chuẩn 1NF Tiếp tục chuẩn hóa về dạng 2NF Chuẩn hóa về dạng 3NF Slide 5 -Chuẩn hóa cơ sở dữ liệu 42
  • 43. Sau khi chuyển sang dạng chuẩn 1NF, CSDL sẽ gồm hai quan hệ như sau: Quan hệ INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount Quan hệ INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Product Description, Quantity, Unit Price, Extended Amount Chuẩn hóa về 1NF Sau khi chuyển sang dạng chuẩn 1NF, CSDL sẽ gồm hai quan hệ như sau: Quan hệ INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount Quan hệ INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Product Description, Quantity, Unit Price, Extended Amount Slide 5 -Chuẩn hóa cơ sở dữ liệu 43
  • 44. Ví dụ 2: Quan hệ INVOICE được phân rã về dạng 2NF như sau: INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Quantity, Sale Unit Price, Extended Amount PRODUCT: Product Number (PK), Product Description, List Unit Price Chuẩn hóa về NF2 Ví dụ 2: Quan hệ INVOICE được phân rã về dạng 2NF như sau: INVOICE: Invoice Number (PK), Customer Number, Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone, Terms, Ship Via, Order Date, Total Order Amount INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Quantity, Sale Unit Price, Extended Amount PRODUCT: Product Number (PK), Product Description, List Unit Price Slide 5 -Chuẩn hóa cơ sở dữ liệu 44
  • 45. Quan hệ INVOICE được phân rã về dạng 3NF như sau: INVOICE: Invoice Number (PK), Customer Number, Terms, Ship Via, Order Date INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Quantity, Sale Unit Price PRODUCT: Product Number (PK), Product Description, List Unit Price CUSTOMER : Customer Number (PK), Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone Chuẩn hóa về 3NF Quan hệ INVOICE được phân rã về dạng 3NF như sau: INVOICE: Invoice Number (PK), Customer Number, Terms, Ship Via, Order Date INVOICE LINE ITEM: Invoice Number (PK), Product Number (PK), Quantity, Sale Unit Price PRODUCT: Product Number (PK), Product Description, List Unit Price CUSTOMER : Customer Number (PK), Customer Name, Customer Address, Customer City, Customer State, Customer Zip Code, Customer Phone Slide 5 -Chuẩn hóa cơ sở dữ liệu 45
  • 46. Bài tập Slide 5 -Chuẩn hóa cơ sở dữ liệu 46 Đáp án R1(F,I,J), R2(A,E,F,G,H), R3(A,B,C,D) Bài tập về nhà: Giảng viên yêu cầu sinh viên làm chuẩn hóa cơ sơ dữ liệu UTLA Academic Tracking và Computer Books Company trong sách sau đó nộp lại cho giảng viên.
  • 47. Quá trình chuẩn hóa làm tăng thêm số lượng các bảng và các liên kết. Khi người sử dụng CSDL gặp vấn đề về hiệu suất mà không thể được giải quyết được bằng các phương tiện khác (chẳng hạn như điều chỉnh các cơ sở dữ liệu hoặc nâng cấp phần cứng) -> Cần phải khử chuẩn. Các bước khử chuẩn: Kết hợp lại các quan hệ đã chia để thỏa mãn các quy tắc chuẩn hóa Lưu trữ dữ liệu dư thừa trong các bảng Lưu trữ dữ liệu tóm tắt trong các bảng Khử chuẩn (Denormalization) Quá trình chuẩn hóa làm tăng thêm số lượng các bảng và các liên kết. Khi người sử dụng CSDL gặp vấn đề về hiệu suất mà không thể được giải quyết được bằng các phương tiện khác (chẳng hạn như điều chỉnh các cơ sở dữ liệu hoặc nâng cấp phần cứng) -> Cần phải khử chuẩn. Các bước khử chuẩn: Kết hợp lại các quan hệ đã chia để thỏa mãn các quy tắc chuẩn hóa Lưu trữ dữ liệu dư thừa trong các bảng Lưu trữ dữ liệu tóm tắt trong các bảng Slide 5 -Chuẩn hóa cơ sở dữ liệu 47
  • 48. Các thao tác trên dữ liệu (thêm, sửa, xóa) trên CSDL chưa chuẩn hóa có thể gây ra các bất thường trên CSDL. Chuẩn hóa CSDL để đảm bảo dữ liệu không dư thừa và loại bỏ các bất thường trên CSDL 3 bước chuẩn hóa thông thường: Chuẩn hóa về dạng 1NF: Loại bỏ dữ liệu dư thừa Chuẩn hóa về dạng 2NF: Loại bỏ các phụ thuộc hàm bộ phận Chuẩn hóa về dạng 3NF: Loại bỏ các phụ thuộc hàm bắc cầu Tổng kết bài học Các thao tác trên dữ liệu (thêm, sửa, xóa) trên CSDL chưa chuẩn hóa có thể gây ra các bất thường trên CSDL. Chuẩn hóa CSDL để đảm bảo dữ liệu không dư thừa và loại bỏ các bất thường trên CSDL 3 bước chuẩn hóa thông thường: Chuẩn hóa về dạng 1NF: Loại bỏ dữ liệu dư thừa Chuẩn hóa về dạng 2NF: Loại bỏ các phụ thuộc hàm bộ phận Chuẩn hóa về dạng 3NF: Loại bỏ các phụ thuộc hàm bắc cầu Slide 5 -Chuẩn hóa cơ sở dữ liệu 48