3.1 Chuẩn hóa cơ sở dữ liệu
Dạng chuẩn là một thuộc tính của một quan hệ trong mô hình dữ liệu quan hệ đặc trưng cho nó ở dạng dư thừa, có khả năng dẫn đến kết quả sai về mặt logic của việc lấy mẫu hoặc thay đổi dữ liệu. Dạng chuẩn được định nghĩa là tập hợp các yêu cầu mà một quan hệ (các bảng trong cơ sở dữ liệu) phải đáp ứng.
Quá trình chuyển đổi các mối quan hệ cơ sở dữ liệu thành một dạng phù hợp với các dạng bình thường được gọi là chuẩn hóa. Chuẩn hóa nhằm đưa cấu trúc của cơ sở dữ liệu về dạng cung cấp dự phòng logic tối thiểu và không nhằm mục đích giảm hoặc tăng hiệu suất cũng như giảm hoặc tăng khối lượng vật lý của cơ sở dữ liệu .
Mục tiêu cuối cùng của chuẩn hóa là giảm sự không nhất quán tiềm ẩn của thông tin được lưu trữ trong cơ sở dữ liệu. Mục đích chung của quá trình chuẩn hóa là như sau:
- loại trừ một số loại dự phòng;
- sửa một số bất thường cập nhật;
- phát triển một dự án cơ sở dữ liệu là một đại diện đủ “chất lượng cao” của thế giới thực, trực quan và có thể làm cơ sở tốt cho việc mở rộng tiếp theo;
- đơn giản hóa thủ tục áp dụng các ràng buộc toàn vẹn cần thiết.
Sự dư thừa thường được loại bỏ bằng cách phân tách các quan hệ theo cách mà chỉ các sự kiện chính được lưu trữ trong mỗi quan hệ (nghĩa là các sự kiện không được dẫn xuất từ các sự kiện được lưu trữ khác).
Mặc dù các ý tưởng chuẩn hóa rất hữu ích cho thiết kế cơ sở dữ liệu, nhưng chúng không phải là phương tiện phổ biến hoặc toàn diện để cải thiện chất lượng của thiết kế cơ sở dữ liệu. Điều này là do thực tế là có quá nhiều lỗi và thiếu sót có thể xảy ra trong cấu trúc cơ sở dữ liệu mà không thể loại bỏ bằng cách chuẩn hóa.
Bất chấp những cân nhắc này, lý thuyết chuẩn hóa là một thành tựu rất có giá trị của lý thuyết và thực tiễn quan hệ, vì nó cung cấp các tiêu chí hợp lý và chặt chẽ về mặt khoa học cho chất lượng của một dự án cơ sở dữ liệu và các phương pháp chính thức để cải thiện chất lượng này. Điều này làm cho lý thuyết chuẩn hóa nổi bật so với các phương pháp thiết kế thuần túy theo kinh nghiệm được cung cấp trong các mô hình dữ liệu khác. Hơn nữa, có thể lập luận rằng trong toàn bộ lĩnh vực công nghệ thông tin, thực tế không có phương pháp nào để đánh giá và cải thiện các giải pháp thiết kế có thể so sánh với lý thuyết chuẩn hóa cơ sở dữ liệu quan hệ về mức độ nghiêm ngặt của hình thức.
Chuẩn hóa đôi khi bị chỉ trích với lý do "đó chỉ là lẽ thường" và bất kỳ chuyên gia có năng lực nào cũng sẽ "tự nhiên" thiết kế một cơ sở dữ liệu được chuẩn hóa hoàn toàn mà không cần phải áp dụng lý thuyết phụ thuộc.
Tuy nhiên, như Giáo sư Christopher Date đã lưu ý, chuẩn hóa chính xác là các nguyên tắc thông thường hướng dẫn một nhà thiết kế trưởng thành trong tâm trí của anh ta, nghĩa là các nguyên tắc chuẩn hóa là lẽ thường được chính thức hóa . Trong khi đó, xác định và chính thức hóa các nguyên tắc của lẽ thường là một nhiệm vụ rất khó khăn và thành công trong việc giải quyết nó là một thành tựu đáng kể.
3.2 Dạng chuẩn tắc thứ nhất
Dạng chuẩn đầu tiên (1NF) là dạng chuẩn cơ bản của một quan hệ trong mô hình dữ liệu quan hệ.
Một biến quan hệ ở dạng chuẩn đầu tiên khi và chỉ khi, trong bất kỳ giá trị hợp lệ nào của biến đó, mỗi bộ quan hệ chứa chính xác một giá trị cho mỗi thuộc tính.
Trong một mô hình quan hệ, một quan hệ luôn ở dạng chuẩn đầu tiên, theo định nghĩa của khái niệm quan hệ.
Đối với các bảng khác nhau, chúng có thể không phải là biểu diễn chính xác của các mối quan hệ và theo đó, có thể không ở dạng 1NF. Theo định nghĩa của Christopher Date cho trường hợp như vậy, một bảng được chuẩn hóa (tương đương, ở dạng chuẩn đầu tiên) khi và chỉ khi nó là biểu diễn trực tiếp và đúng của một số quan hệ. Cụ thể hơn, bảng được đề cập phải thỏa mãn năm điều kiện sau:
- Không có thứ tự của các hàng từ trên xuống dưới (nói cách khác, thứ tự của các hàng không truyền tải bất kỳ thông tin nào).
- Không có thứ tự từ trái sang phải của các cột (nói cách khác, thứ tự của các cột không chứa thông tin).
- Không có dòng trùng lặp.
- Mỗi giao điểm của một hàng và một cột chứa chính xác một giá trị từ miền tương ứng (và không có giá trị nào khác).
- Tất cả các cột là "thông thường".
"Tính đều đặn" của tất cả các cột của bảng có nghĩa là không có thành phần "ẩn" nào trong bảng chỉ có thể được truy cập khi gọi một số toán tử đặc biệt thay vì tham chiếu đến tên cột thông thường hoặc dẫn đến tác dụng phụ cho hàng hoặc các bảng khi gọi các toán tử tiêu chuẩn.
Bảng ban đầu không được chuẩn hóa (nghĩa là không phải là biểu diễn chính xác của một số quan hệ):
Người lao động | Số điện thoại |
---|---|
Ivanov I.I. |
283-56-82 390-57-34 |
Petrov P.P. | 708-62-34 |
Sidorov S.S. |
Một bảng giảm xuống 1NF, đây là biểu diễn chính xác của một số mối quan hệ:
Người lao động | Số điện thoại |
---|---|
Ivanov I.I. | 283-56-82 |
Ivanov I.I. | 390-57-34 |
Petrov P.P. | 708-62-34 |
3.3 Dạng chuẩn tắc thứ hai
Một biến quan hệ ở dạng chuẩn tắc thứ hai khi và chỉ khi nó ở dạng chuẩn tắc thứ nhất và mọi thuộc tính không khóa phụ thuộc hoàn toàn vào (mọi) khóa ứng viên của nó .
Tính bất khả quy có nghĩa là khóa tiềm năng không chứa một tập con nhỏ hơn các thuộc tính mà từ đó sự phụ thuộc chức năng này cũng có thể được suy ra. Đối với một phụ thuộc hàm bất khả quy, khái niệm tương đương "phụ thuộc hàm đầy đủ" thường được sử dụng.
Nếu khóa ứng cử viên là đơn giản, nghĩa là nó bao gồm một thuộc tính duy nhất, thì bất kỳ sự phụ thuộc chức năng nào vào nó là không thể rút gọn (đầy đủ). Nếu khóa ứng viên là khóa tổng hợp, thì theo định nghĩa của dạng chuẩn thứ hai, không được có thuộc tính không phải khóa trong quan hệ phụ thuộc vào một phần của khóa ứng viên tổng hợp.
Một ví dụ về chuyển đổi một quan hệ sang dạng bình thường thứ hai
Cho cặp thuộc tính {Chi nhánh công ty, Vị trí} làm khóa chính trong quan hệ sau:
chi nhánh công ty | chức danh công việc | Lương | Sự sẵn có của một máy tính |
---|---|---|---|
Chi nhánh ở Tomsk | Sạch hơn | 20000 | KHÔNG |
Chi nhánh tại Mátxcơva | lập trình viên | 40000 | Ăn |
Chi nhánh ở Tomsk | lập trình viên | 25000 | Ăn |
Giả sử rằng mức lương phụ thuộc vào chi nhánh và vị trí, và sự sẵn có của máy tính chỉ phụ thuộc vào vị trí.
Có sự phụ thuộc hàm Vị trí -> Có một máy tính, trong đó vế trái (phần xác định) chỉ là một phần của khóa chính, điều này vi phạm điều kiện của dạng chuẩn thứ hai.
Để giảm xuống 2NF, quan hệ ban đầu phải được phân tách thành hai quan hệ:
chi nhánh công ty | chức danh công việc | Lương |
---|---|---|
Chi nhánh ở Tomsk | Sạch hơn | 20000 |
Chi nhánh tại Mátxcơva | lập trình viên | 40000 |
Chi nhánh ở Tomsk | lập trình viên | 25000 |
chức danh công việc | Sự sẵn có của một máy tính |
---|---|
Sạch hơn | KHÔNG |
lập trình viên | Ăn |
lập trình viên | Ăn |
3.4 Dạng chuẩn thứ ba (3NF)
Một biến quan hệ R ở dạng 3NF khi và chỉ khi các điều kiện sau là đúng:
- rở dạng bình thường thứ hai.
- không có thuộc tính không khóarkhông phụ thuộc chức năng bắc cầu vào khóa ứng cử viênr.
Giải thích cho định nghĩa:
Thuộc tính không khóa của quan hệ R là thuộc tính không thuộc bất kỳ khóa ứng viên nào của R.
Sự phụ thuộc hàm của tập thuộc tính Z vào tập thuộc tính X (được viết là X → Z, phát âm là “x xác định z”) là bắc cầu nếu tồn tại một tập thuộc tính Y sao cho X → Y và Y → Z. Trong trường hợp này trường hợp, không có tập X, Y và Z nào không phải là tập con của tập kia, tức là các phụ thuộc hàm X → Z, X → Y và Y → Z là không tầm thường và cũng không có phụ thuộc hàm Y → X.
Định nghĩa của 3NF, tương đương với định nghĩa của Codd nhưng diễn đạt khác, được đưa ra bởi Carlo Zaniolo vào năm 1982. Theo nó, một biến quan hệ ở dạng 3NF khi và chỉ khi mỗi phụ thuộc hàm X → A của nó thỏa mãn ít nhất một trong các điều kiện sau:
- X chứa A (nghĩa là X → A là một phụ thuộc hàm tầm thường)
- X - siêu phím
- A là một thuộc tính khóa (nghĩa là A là một phần của khóa dự tuyển).
Định nghĩa của Zaniolo xác định rõ ràng sự khác biệt giữa 3NF và Biểu mẫu chuẩn Boyce-Codd (BCNF) nghiêm ngặt hơn: BCNF loại trừ điều kiện thứ ba ("A là thuộc tính khóa").
Bill Kent đã đưa ra một bản tóm tắt mô tả truyền thống và đáng nhớ về định nghĩa 3NF của Codd: mỗi thuộc tính không phải khóa "nên cung cấp thông tin về khóa, khóa đầy đủ và không có gì khác ngoài khóa ".
Điều kiện phụ thuộc vào "khóa đầy đủ" của các thuộc tính không khóa đảm bảo rằng mối quan hệ ở dạng bình thường thứ hai; và điều kiện để chúng phụ thuộc vào "không có gì ngoài chìa khóa" là chúng ở dạng bình thường thứ ba.
Chris Date nói về bản tóm tắt của Kent như một "tính năng hấp dẫn về mặt trực giác" của 3NF, và nhận xét rằng, với một sửa đổi nhỏ, nó cũng có thể đóng vai trò là định nghĩa của dạng chuẩn Boyce-Codd chặt chẽ hơn: "mỗi thuộc tính phải cung cấp thông tin về một khóa , một khóa đầy đủ và không có gì khác ngoài khóa.
Phiên bản định nghĩa 3NF của Kent ít nghiêm ngặt hơn so với phiên bản dạng thông thường Boyce-Codd của công thức Dữ liệu, vì phiên bản đầu tiên chỉ nói rằng các thuộc tính không khóa phụ thuộc vào khóa.
Các thuộc tính chính (là các khóa hoặc một phần của chúng) hoàn toàn không cần phụ thuộc vào chức năng; mỗi người trong số họ cung cấp thông tin về khóa bằng cách cung cấp chính khóa hoặc một phần của khóa. Ở đây cần lưu ý rằng quy tắc này chỉ hợp lệ đối với các thuộc tính không phải khóa, vì áp dụng nó cho tất cả các thuộc tính sẽ vô hiệu hóa hoàn toàn tất cả các khóa thay thế phức tạp, vì mỗi thành phần của khóa như vậy sẽ vi phạm điều kiện "khóa đầy đủ".
Xét biến quan hệ R1 làm ví dụ:
Người lao động | Phòng | Điện thoại |
---|---|---|
Grishin | Kế toán | 22-11-33 |
Vasilyev | Kế toán | 22-11-33 |
Petrov | Cung cấp | 44-55-66 |
Mỗi nhân viên chỉ thuộc về một bộ phận; mỗi bộ phận có một điện thoại duy nhất. Thuộc tính Nhân viên là khóa chính. Nhân viên không có điện thoại cá nhân và số điện thoại của nhân viên chỉ phụ thuộc vào bộ phận.
Trong ví dụ này tồn tại các phụ thuộc hàm sau: Nhân viên → Bộ phận, Bộ phận → Điện thoại, Nhân viên → Điện thoại.
Biến quan hệ R1 ở dạng chuẩn tắc thứ hai vì mỗi thuộc tính có một phụ thuộc hàm bất khả quy vào nhân viên khóa tiềm năng.
Mối quan hệ Nhân viên → Điện thoại là mối quan hệ bắc cầu, vì vậy mối quan hệ không ở dạng bình thường thứ ba.
Việc tách R1 dẫn đến hai biến quan hệ ở dạng 3NF:
Phòng | Điện thoại |
---|---|
Kế toán | 22-11-33 |
Cung cấp | 44-55-66 |
Người lao động | Phòng |
---|---|
Grishin | Kế toán |
Vasilyev | Kế toán |
Petrov | Cung cấp |
Mối quan hệ ban đầu R1, nếu cần, có thể dễ dàng thu được do thao tác nối các mối quan hệ R2 và R3.
GO TO FULL VERSION