Ra đời vào những năm 1970 của thế kỷ trước, Relational Database - RD (Cơ sở dữ liệu quan hệ) đã trải qua một hành trình dài xây dựng và trưởng thành. Hiện nay, RD vẫn đóng vai trò là cơ sở dữ liệu chính trong những ứng dụng đòi hỏi tuân thủ chặt chẽ các quy tắc về tính toàn vẹn dữ liệu. Một số ưu điểm của chính RD:
Trước khi RD ra đời, người ta thường phải làm việc với những cơ sở dữ liệu cứng nhắc mà ở đó cấu trúc lưu trữ phản ánh chính mục đích truy vấn của bài toán. Có thể kể đến như Hierarchical Database và Network Database.
Năm 1970, Edgar F. Codd đã công bố một bài báo mang tính đột phá "A Relational Model of Data for Large Shared Data Banks". Trong bài báo, Codd đã giới thiệu mô hình cơ sở dữ liệu gọi là Relational Model - Mô hình cơ sở dữ liệu quan hệ, ý tưởng chính là:
Nếu bỏ qua cách các file liên kết với nhau và sắp xếp dữ liệu dưới dạng hai chiều, không có thứ tự, thì ta có thể phát triển một phép tính cho các truy vấn và tập trung vào dữ liệu dưới dạng đúng là dữ liệu chứ không phải dưới dạng thể hiện vật lý của một mô hình logic.
Như vậy, Codd tập trung vào dữ liệu ở mức logic hoàn toàn, thể hiện ở hai ý:
Codd dựa trên hai lý thuyết:
Ví dụ, giả sử ta có bảng Customers với các thuộc tính như CustomerID, CustomerName, Email. Khi chuyển về ngôn ngữ RD, ta có tương ứng:
Các phép toán chính trong đại số quan hệ:
Quy trình mô hình hóa dữ liệu là quy trình chuyển yêu cầu người dùng thành các bảng trong một hệ quản trị cơ sở dữ liệu nhất định. Quy trình này phức tạp, được chia thành ba giai đoạn chính. Cụ thể hơn về quy trình này sẽ được bàn bạc sâu hơn ở những bài viết khác. Ba giai đoạn chính bao gồm:
Trong thực tế, có thể bạn không để ý tới các phase này, đặc biệt là phase 1.
Ví dụ về một mô hình ER:
Trong thực tế, bạn thường bỏ qua giai đoạn mô hình hóa khái niệm và đi vào ngay mô hình hóa logic hoặc vật lý. Thực ra, bạn vẫn dùng nó đấy: đó chính là việc bạn cùng với BAs, End Users phân tích yêu cầu với nhau thông qua tài liệu hay trong các buổi meeting. Chỉ khác là, sản phẩm mà bạn trưng bày ra cho họ sau những buổi trao đổi đó là mô hình logic. Với những yêu cầu nghiệp vụ đơn giản (thường đồng nghĩa với mô hình logic đơn giản) thì khác hàng của bạn (tức là BAs, End Users) vẫn có thể nắm bắt được ý tưởng, nhưng nếu đó là những yêu cầu phức tạp thì sao? Liệu bạn có hi vọng họ hiểu hết ý tưởng mô hình hóa của bạn khi xem vào các bảng được liên kết với nhau thông qua các khóa ngoại, các bảng trung gian, tất cả được đặt trong một bức tranh chi tiết: Database Schema? Đó là những kẽ hở khiến cho việc trao đổi nghiệp vụ có thể bị sai sót.
Nhưng nếu bạn dùng mô hình khái niệm mà Chen đề xuất, đó lại là một câu chuyện khác.
Ưu điểm của Chen Notation (công cụ dùng để xây dựng lên mô hình ER của Chen) là dễ hiểu ngay cả với người dùng nghiệp vụ thuần túy. Nếu bạn dành ra khoảng 30 phút để tìm hiểu về các ký hiệu này, bạn sẽ hiểu được các nghiệp vụ sau trong mô hình ví dụ trên:
Chúng ta sẽ bàn luận chi tiết về cách mô hình hóa khái niệm một bài toán trong những bài viết khác.
Như đã đề cập bên trên, mô hình khái niệm được chuyển sang giai đoạn mô hình hóa logic mà sau đó kết quả sẽ là một mô hình logic.
Trong giai đoạn này, mục đích chính là:
Cách chuyển ER sang Logical Model chúng ta sẽ bàn bạc trong những bài viết khác, chúng sẽ có quy tắc và các lựa chọn. Ở đây ta bàn sâu hơn vào việc chuẩn hóa dữ liệu.
(Ở phạm vi bài viết này, "chuẩn hóa dữ liệu" nghĩa là "chuẩn hóa cơ sở dữ liệu quan hệ").
Định nghĩa (chặt chẽ): Chuẩn hóa dữ liệu là phương pháp:
Thay thế R bởi tập các phép chiếu R1, …, Rn sao cho ít nhất một trong R1, …, Rn ở dạng chuẩn hóa cao hơn R và sao choVới mọi giá trị r có thể của R, nếu các giá trị tương ứng r1, …, rn của R1, …, Rn join lại cùng nhau tạo ra kết quả bằng với r.
Định nghĩa khác (dễ hiểu hơn):
Chuẩn hóa cơ sở dữ liệu là quá trình cấu trúc một cơ sở dữ liệu quan hệ theo một loạt các hình thức chuẩn hóa nhằm giảm thiểu sự dư thừa dữ liệu và cải thiện tính toàn vẹn của dữ liệu.
Chuẩn hóa chia làm nhiều cấp độ khác nhau (từ thấp tới cao):
Thường thì ta chỉ xem xét chuẩn hóa dữ liệu tới BCNF nhưng trong một số trường hợp ta cần phải đạt được 4NF và 5NF. Hai chuẩn cuối này dựa trên căn cứ rất khác so với bốn chuẩn đầu tiên, là những chuẩn dựa vào Functional Dependency - Phụ thuộc hàm.
Định nghĩa cụ thể và phân tích chi tiết hơn về từng cấp chuẩn hóa sẽ ở các bài viết khác.
Mục đích chính của chuẩn hóa
Chuẩn hóa dữ liệu nhằm hai mục đích chính1. Sửa một thiết kế không chính xác về mặt logic, và
2. Giảm thiểu dư thừa dữ liệu trong một thiết kế đúng đắn về logic.
Chi tiết tại đây https://softwaredesign.vn/hai-muc-dich-chinh-cua-chuan-hoa-normal-forms
Khi bàn về chuẩn hóa, ta cũng nên đề cập tới phi chuẩn - denormalization.
Denormalization hay "phi chuẩn" thực sự là gì không có định nghĩa chính thức. Điều này xuất phát từ chính hành vi mà nó thực hiện: không có quy tắc cụ thể. Do đó, thường thì người ta sẽ định nghĩa phi chuẩn dựa vào chính chuẩn hóa:
Phi chuẩn là ngược lại với chuẩn hóa, còn chuẩn hóa được định nghĩa rõ ràng.
Khác với quá trình chuẩn hóa - là quá trình dựa trên các quy tắc toán học rõ ràng và ta biết được khi nào cần dừng lại, phi chuẩn khó cho ta biết được ta nên dừng ở đâu. Điều này hoàn toàn dựa vào cảm tính, tình huống, và do đó, không được quy định rõ ràng.
Phi chuẩn thường vì lý do "hiệu năng". Tôi cần lưu thừa dữ liệu này vì dữ liệu này cần truy vấn nhanh chóng đáp ứng nhu cầu người dùng. Nếu tôi chuẩn hóa, nghĩa là dữ liệu này nằm ở bảng khách, tôi sẽ cần join các bảng này lại với nhau, ảnh hưởng rất lớn đến hiệu năng.
Đó là điều mà chúng ta thường nghe, thường nghĩ và rất hay thực hiện. Nhưng, đó không phải là động lực đúng nghĩa của phi chuẩn.
Phi chuẩn gây ra nhiều vấn đề hơn là lợi ích nó mang lại:
Chúng ta sẽ bàn về phi chuẩn ở những bài viết sau nhưng ở đây chúng ta sẽ chốt lại rằng:
Chỉ coi phi chuẩn là lựa chọn cuối cùng khi mà ta không còn cách nào khác có thể nâng cao hiệu năng ứng dụng. Bởi vì một khi đã quyết định phi chuẩn là ta đã quyết định đi trên một con đường rất dễ trơn trượt.
Link nội dung: https://www.sachhayonline.com/hai-bang-trong-mot-co-so-du-lieu-quan-he-lien-ket-voi-nhau-thong-qua-a50334.html