Các loại chuẩn hoá trong CSDL Quan hệ

Cùng LPTECH tìm hiểu các loại chuẩn hoá trong CSDL Quan hệ quan trọng cho việc thiết kế cơ sở dữ liệu trong Thiết kế website. Đó là các chuẩn hóa cơ sở dữ liệu quan hệ. Thông thường, chủ đề này mang tính học thuật do vậy phù hợp hơn ở trung tâm, viện nghiên cứu. Tuy nhiên, việc hiểu biết những nguyên lý cơ bản của chuẩn hóa cơ sở dữ liệu và áp dụng chúng vào công việc thiết kế cơ sỡ dữ liệu hàng ngày mà chúng ta phải làm thực sự là không phức tạp mà còn giúp cải thiện hiệu năng hoạt động của cơ sở dữ liệu.

Cơ sở dữ liệu quan hệ là gì ?

RDBMS - Relational Database Management System là hệ quản trị cơ sở dữ liệu quan hệ được giới thiệu bởi E.F.Codd.

RDBMS là mô hình cơ bản cho ngôn ngữ SQL và cho tất cả các cơ sở dữ liệu hư MS SQL Server, IBM Server, IBM DB2, Oracle, MySQL và Microsoft Access

Chuẩn hóa CSDL là gì ?

Chuẩn hóa CSDL là để giúp cho việc tổ chức dữ liệu trong cơ sở dữ liệu một cách hiệu quả. Có hai mục đích chính để chuẩn hóa dữ liệu:

  1. Giảm lượng dữ liệu dư thừa (ví dụ như lưu trữ cùng một dữ liệu trong 1 bảng)
  2. Đảm bảo độc lập dữ liệu (dữ liệu liên quan đặt trong cùng 1 bảng) Cả 2 mục đích trên đều giúp giảm thiểu không gian sử dụng trong cơ sở dữ liệu và đảm bảo dữ liệu được lưu trữ một cách logic.

Các Chuẩn thông thường

Cộng đồng những người phát triển cở sở dữ liệu đã đưa ra 5 chuẩn được đánh số từ 1 (chuẩn 1 hoặc 1NF-Normal form) đến 5 (chuẩn 5 hoặc 5NF). Trong thực tế làm việc, chúng ta sẽ thường xuyên gặp 1NF, 2NF, 3NF và 4NF. Tuy nhiên, chuẩn 5 gần như là không gặp nên sẽ không bàn luận trong bài viết này.

Ngay bây giờ hãy cùng LPTech tìm hiểu qua các loại chuẩn hoá CSDL Quan hệ Phổ biến nào.

Chuẩn 1Normal Form - 1NF

Chuẩn 1 hay gọi tắt là 1NF là tập hợp các quy định cơ bản để tổ chức cơ sở dữ liệu như sau:

  1. Giảm cột dữ liệu dư thừa từ cùng 1 bảng
  2. Tạo các bảng riêng biệt cho mỗi nhóm dữ liệu liên quan đến nhau và định nghĩa mỗi dòng với một cột duy nhất (gọi là primary key) Để thỏa mãn các tiêu chí của chuẩn 1 chúng ta phải không được để trùng lặp các giá trị trong dòng của bảng. Nguyên lý này được gọi là nguyên tử hóa bảng (atomicity of table)và bảng như này gọi là bảng nguyên tử. Để hiểu hơn về chuẩn 1 chúng ta xem xét ví dụ sau: bảng quản lý nhân sự lưu trữ quan hệ giữa quản lý và nhân viên. Để hiểu rõ hơn về chuẩn hóa 1 chúng ta có quy tắc sau mỗi quản lý có một hoặc nhiều nhân viên nhưng mỗi nhân viên chỉ có duy nhất một quản lý.

Khi tạo bảng tính cho việc quản lý trên, chúng ta tạo một bảng có các cột sau:

- Manager
- Subordiante 1
- Subordiante 2
- Subordiante 3
- Subordiante 4

Tuy nhiên, khi áp chuẩn 1 vào chúng ta cần loại bỏ cột dữ liệu lặp trong cùng 1 bảng. Cụ thể trong trường hợp này, cột nhân viên 1,2,3,4 bị lặp lại. Nếu quản lý có 1 nhân viên thì cột nhân viên 2,3,4 sẽ thừa và như vậy gây lãng phí không gian lưu trữ. Hơn nữa, quản lý có 4 nhân viên rồi thì chuyện gì xảy ra khi có thêm nhân viên mới? Cấu trúc bảng lúc này sẽ phải chỉnh lại. Thay đổi cấu trúc bảng như sau:

- Manager
- Subordinates

Vì vậy, chúng ta không cần có nhiều cột nhân viên nữa mà sẽ chỉ còn 2 cột quản lý và nhân viên. Tuy nhiên, cột nhân viên lúc này có nhiều giá trị như “A,B,C”. Giải pháp này cũng ko được vì cột nhân viên vẫn có lặp dữ liệu và không duy nhất (non-atomic). Chuyện gì xảy ra khi chúng ta muốn thêm hoặc loại bỏ 1 nhân viên. Chúng ta sẽ phải đọc và ghi lại nội dung của cột đó. Nó sẽ không là vấn đề nếu như quản lý có ít nhân viên, nhưng nếu quản lý có hàng trăm nhân viên thì điều này là phức tạp cho việc xử lý truy vấn dữ liệu.

Hướng tiếp cận khác, cột nhân viên sẽ là duy nhất một giá trị, tuy nhiên cột quản lý sẽ có nhiều giá trị.

- Manager
- Subordinate

Bây giờ, vấn đề sẽ là tìm ra cột làm khóa chính. Với hướng tiếp cận như này thì cột nhân viên sẽ là khóa chính. Trong thực tế, lựa chọn trên có vẻ hợp lý khi mà mỗi nhân viên chỉ có duy nhất một quản lý. Tuy nhiên, chuyện gì sẽ xảy ra khi chúng ta thuê một nhân viên tên Nguyen Van A và chúng ta đã lưu trữ quan hệ của người này rồi.

Cách tốt nhất là sử dụng mã số duy nhất(employee ID) cho nhân viên làm khóa chính. Và bảng cuối cùng của chúng ta sẽ trông như sau:

- Manager ID
- Subordinate ID

Chuẩn 2Normal Form - 2NF

Chuẩn 2NF sẽ giúp các lập trình viên loại bỏ các giá trị trùng lặp. Khi thiết kế cơ cơ sở dữ liệu cho KH cần chú ý đến việc trùng lặp, hãy áp dụng chuẩn 2NF nhé:

  1. Bao gồm toàn bộ yêu cầu của chuẩn1.
  2. Xóa bỏ tập con dữ liệu trong nhiều hảng của 1 bảng và đặt chúng vào các bảng riêng biệt.
  3. Tạo quan hệ giữa các bảng mới thông qua sử dụng khóa ngoại (foreign keys)

Để hiểu rõ hơn chúng ta cùng tìm hiểu ví dụ sau:  Bảng lưu trữ thông tin khách hàng của một shop online. Chúng ta có một bảng đơn gọi là Customers có các cột sau:

- CustNum
- FirstName
- LastName
- Address
- City
- State
- ZIP

Có một sự dư thừa nhỏ là chúng ta đang lưu trữ “Sea Cliff, NY 11579” and “Miami, FL 33157” 2 lần cho mỗi dòng. Điều này có thể không ảnh hưởng quá nhiều cho không gian lưu trữ nhưng nếu chúng ta ko hàng trăm trường hợp như vậy thì sẽ rất lãng phí không gian lưu trữ. Ngoài ra, nếu ZIP code cho Sea Cliff có bị thay đổi thì chúng ta cần thay đổi cho rất nhiều chỗ trong cơ sở dữ liệu.

Trong chuẩn 2, việc làm giảm thông tin dư thừa là tách ra và lưu trữ vào các bảng riêng biệt. Bảng mới của chúng có (gọi là bảng ZIPs) có những cột sau:

- ZIP
- City
- State

Như vậy, chúng ta sẽ loại bỏ được giá trị trùng lặp trong bảng Customers. Đấy là tiêu chí đầu tiên của chuẩn 1 đã được thỏa mãn. Chúng ta vẫn cần sử dụng khóa ngoại để nối 2 bảng lại với nhau. Chúng ta sử dụng ZIP code (khóa chính cho bảng ZIPs) để tạo quan hệ. Và đây là bảng Customers mới:


- CustNum
- FirstName
- LastName
- Address
- ZIP

Như vậy chúng ta đã làm giảm thiểu tối đa việc lặp thông tin và cấu trúc lại bảng theo chuẩn 2.

Chuẩn 3Normal Form - 3NF

Chuẩn 3 Normal Form sẽ áp dụng một số tiêu chí sau để đảm bảo tính tối ưu nhất của CSDL:

  1. Bao gồm tất cả yêu cầu của chuẩn 1 và chuẩn 2.
  2. Xóa bỏ những cột không phụ thuộc vào khóa chính

Để hiểu rõ hơn chúng ta xem xét ví dụ sau: Chúng ta có bảng orders bao gồm các thuộc tính sau:

- Order Number
- Customer Number
- Unit Price
- Quantity
- Total

Chú ý, điều đầu tiên là bảng của chúng ta cần phải thỏa mãn chuẩn 1NF, 2 NF. Có sự lặp cột dữ liệu không? - Không. Có khóa chính chưa ? - Có rồi, chính là cột order number. Do đó, bảng này thỏa mãn 1NF. Có tập con dữ liệu trong nhiều dòng ko ? - Không, vì thế bảng này cũng thỏa mãn 2NF.

Bây giờ, chúng ta cùng xem tất cả cột có phụ thuộc vào khóa chính không? Qua bảng trên chúng ta thấy cột total được xác định bằng unit price nhân với quantity. Do vậy cột này không phụ thuộc vào khóa chính. Và bảng của chúng ta lúc này chỉ sử dụng các thuộc tính sau:

- Order Number
- Customer Number
- Unit Price
- Quantity

Và bây giờ bảng của chúng ta đã thỏa mãn chuẩn 3NF. Và total lúc này không được lưu trữ trong cơ sở dữ liệu và được tính trực tiếp khi chúng ta truy vấn.

SELECT OrderNumber, UnitPrice*Quantity AS Total FROM Orders

Chuẩn 4 (4NF)

Cuối cùng, chuẩn 4 (4NF) có thêm một số yêu cầu sau:

  1. Tất cả yêu cầu của chuẩn 3
  2. Một quan hệ là chuẩn 4 nếu nó không có phụ thuộc nhiều giá trị Chú ý, các chuẩn hóa trên có tích chất tích lũy. Vì vậy, cơ sở dữ liệu đã đạt chuẩn 2 thì nó phải đạt đầy đủ tiêu chí của chuẩn 1.

Chuẩn Boyce-Codd (BCNF hoặc 3.5NF)

Chuẩn Boyce-Codd bao gồm các yêu cầu sau:

  1. Toàn bộ yêu cầu của chuẩn 3
  2. Mọi sự xác định phải là khóa ứng viên (candidate key) Ví dụ: bảng lưu thông tin của nhân viên có các thuộc tính sau: employee_id, first_name, last_name, title. Trong bảng này, cột emloyee_id giúp xác định first_name và last_name. Tương tự, cặp (first_name, last_name) cũng sẽ xác định được employee_id

Tóm lại, Các đơn vị thiết kế website hoặc các bạn đang là lập trình viên hãy luôn nhớ các tiêu chuẩn trên để áp dụng triệt để vào dự án của mình. Đem lại hiệu quả tốt nhất và chất lượng dự án cao. CSDL rất quan trọng nên việc thiết kế cơ sở dữ liệu quan hệ chiếm đến 50% chất lượng toàn dự án.

Thông tin liên hệ

Nếu bạn có thắc mắc gì, có thể gửi yêu cầu cho chúng tôi, và chúng tôi sẽ liên lạc lại với bạn sớm nhất có thể .

Công ty TNHH TMĐT Công nghệ LP

Giấy phép kinh doanh số 0315561312/GP bởi Sở Kế Hoạch và Đầu Tư TP. Hồ Chí Minh.

Văn phòng: Lầu 4, Toà nhà Lê Trí, 164 Phan Văn Trị, phường Bình Thạnh, TP. HCM.

Hotline: 0338 586 864

Mail: sales@lptech.asia

Zalo:LP Tech Zalo Official

Liên hệ qua Zalo: 0338586864 ( hoặc bấm vào link này: http://lptech.asia/zalo-lptech). Hoặc nhập thông tin mà bạn cần hỗ trợ vào ô liên hệ bên dưới để lên lạc với LPTech nhé.

Bài viết cùng chuyên mục

Zalo Mini App ngành chăm sóc sức khỏe: Tối ưu vận...

Zalo Mini App ngành chăm sóc sức khỏe giúp tối ưu vận hành, nâng cao trải nghiệm bệnh nhân và tăng tỷ lệ tái khám. Khám phá ngay giải...

Zalo Mini App ngành gia dụng: Giải pháp bảo hành...

Zalo Mini App ngành gia dụng giúp doanh nghiệp tối ưu vận hành, quản lý khách hàng và tăng doanh thu hiệu quả. Khám phá ngay tính năng,...

Zalo Mini App ngành thời trang: Tạo trải nghiệm...

Zalo Mini App ngành thời trang giúp tối ưu hành trình mua sắm của khách hàng. Khám phá ngay cách triển khai để không bỏ lỡ cơ hội bứt phá...

Zalo Mini App Ngành F&B: Nâng Tầm Lợi Thế Cạnh Tranh

Khám phá cách Zalo Mini App ngành F&B giúp doanh nghiệp bứt phá khả năng cạnh tranh và giữ chân khách hàng hiệu quả. Xem ngay.

Zalo Mini App Bất Động Sản: Giải Pháp Đột Phá...

Chuyển đổi số ngành địa ốc với Zalo Mini App bất động sản. Giải pháp giúp doanh nghiệp tiếp cận 80 triệu người dùng. Xem ngay.

Zalo Mini App Ngành Trang Sức: Đón Sóng Tăng...

Khám phá cách Zalo Mini App ngành trang sức hỗ cập doanh nghiệp chăm sóc khách hàng và đột phá doanh thu. Xem ngay.

Bài viết mới nhất


Zalo Mini App ngành chăm sóc sức khỏe: Tối ưu...

Zalo Mini App ngành chăm sóc sức khỏe giúp tối ưu vận hành, nâng cao trải nghiệm bệnh nhân và tăng tỷ lệ tái khám. Khám phá ngay giải pháp hiệu quả.

Zalo Mini App ngành gia dụng: Giải pháp bảo...

Zalo Mini App ngành gia dụng giúp doanh nghiệp tối ưu vận hành, quản lý khách hàng và tăng doanh thu hiệu quả. Khám phá ngay tính năng, lợi ích chi...

Zalo Mini App ngành thời trang: Tạo trải nghiệm...

Zalo Mini App ngành thời trang giúp tối ưu hành trình mua sắm của khách hàng. Khám phá ngay cách triển khai để không bỏ lỡ cơ hội bứt phá doanh thu.

Zalo Mini App Ngành F&B: Nâng Tầm Lợi Thế Cạnh...

Khám phá cách Zalo Mini App ngành F&B giúp doanh nghiệp bứt phá khả năng cạnh tranh và giữ chân khách hàng hiệu quả. Xem ngay.

Zalo Mini App Bất Động Sản: Giải Pháp Đột Phá...

Chuyển đổi số ngành địa ốc với Zalo Mini App bất động sản. Giải pháp giúp doanh nghiệp tiếp cận 80 triệu người dùng. Xem ngay.

Thông báo lịch nghỉ lễ Mùng 10 tháng 3, 30/4 và...

Công ty TNHH Thương mại Điện tử Công nghệ LP xin thông báo đến Quý Khách hàng, Đối tác và toàn thể Nhân viên lịch nghỉ lễ 10/3, 30/4 và 1/5 năm 2026

Zalo Mini App Ngành Trang Sức: Đón Sóng Tăng...

Khám phá cách Zalo Mini App ngành trang sức hỗ cập doanh nghiệp chăm sóc khách hàng và đột phá doanh thu. Xem ngay.

Zalo Mini App ngành du lịch: Giải pháp chuyển...

Khám phá hiệu quả khi triển khai Zalo Mini App ngành du lịch như tối ưu trải nghiệm khách hàng, quản lý đặt tour và tăng doanh thu hiệu quả. Xem ngay.

Zalo Mini App Ngành Giáo Dục: Nâng Cao Hiệu Quả...

Zalo Mini App ngành giáo dục giúp tối ưu trải nghiệm di động, truy cập nhanh, ổn định, hỗ trợ tra cứu điểm và quản lý học tập hiệu quả. Xem ngay.

Zalo Mini App ngành Spa: Giải pháp chăm sóc...

Khám phá cách quản lý khách hàng hiệu quả bằng Zalo Mini App ngành spa như: kết hợp đặt lịch, tích điểm và chăm sóc tự động. Xem ngay.