Bình thường hóa cơ sở dữ liệu của bạn: Chuyển sang biểu mẫu bình thường thứ hai (2NF)

Đưa một cơ sở dữ liệu vào biểu mẫu bình thường thứ hai

Trong tháng vừa qua, chúng tôi đã xem xét một số khía cạnh bình thường hóa một bảng cơ sở dữ liệu. Đầu tiên, chúng tôi đã thảo luận các nguyên tắc cơ bản về chuẩn hóa cơ sở dữ liệu. Lần trước, chúng tôi đã khám phá các yêu cầu cơ bản được đặt ra bởi biểu mẫu thông thường đầu tiên (1NF). Bây giờ, chúng ta hãy tiếp tục cuộc hành trình của chúng tôi và bao gồm các nguyên tắc của hình thức bình thường thứ hai (2NF).

Nhớ lại các yêu cầu chung của 2NF:

Các quy tắc này có thể được tóm tắt trong một tuyên bố đơn giản: 2NF cố gắng giảm lượng dư thừa dữ liệu trong một bảng bằng cách giải nén nó, đặt nó vào (các) bảng mới và tạo mối quan hệ giữa các bảng đó.

Hãy xem một ví dụ. Hãy tưởng tượng một cửa hàng trực tuyến duy trì thông tin khách hàng trong cơ sở dữ liệu. Họ có thể có một bảng duy nhất được gọi là Khách hàng với các yếu tố sau:

Một cái nhìn ngắn gọn về bảng này cho thấy một lượng nhỏ dữ liệu dư thừa. Chúng tôi đang lưu trữ các mục "Sea Cliff, NY 11579" và "Miami, FL 33157" hai lần. Bây giờ, điều đó có thể không giống như lưu trữ quá nhiều trong ví dụ đơn giản của chúng ta, nhưng hãy tưởng tượng không gian lãng phí nếu chúng ta có hàng ngàn hàng trong bảng của chúng ta. Ngoài ra, nếu mã ZIP cho Sea Cliff đã thay đổi, chúng tôi cần thực hiện thay đổi đó ở nhiều nơi trong toàn bộ cơ sở dữ liệu.

Trong cấu trúc cơ sở dữ liệu tuân thủ 2NF, thông tin dư thừa này được trích xuất và lưu trữ trong một bảng riêng biệt. Bảng mới của chúng tôi (chúng ta hãy gọi nó là ZIP) có thể có các trường sau:

Nếu chúng tôi muốn siêu hiệu quả, chúng tôi thậm chí có thể điền vào bảng này trước - bưu điện cung cấp một thư mục gồm tất cả các mã ZIP hợp lệ và mối quan hệ thành phố / tiểu bang của họ. Chắc chắn, bạn đã gặp phải tình huống mà loại cơ sở dữ liệu này được sử dụng. Một người nào đó đang nhận đơn đặt hàng có thể đã yêu cầu bạn cung cấp mã ZIP của bạn trước rồi biết thành phố và tiểu bang mà bạn đang gọi. Kiểu sắp xếp này làm giảm lỗi của nhà điều hành và tăng hiệu quả.

Bây giờ chúng tôi đã xóa dữ liệu trùng lặp khỏi bảng Khách hàng, chúng tôi đã thỏa mãn quy tắc thứ nhất của biểu mẫu thông thường thứ hai. Chúng tôi vẫn cần phải sử dụng một khóa nước ngoài để buộc hai bảng lại với nhau. Chúng tôi sẽ sử dụng mã ZIP (khóa chính từ bảng ZIP ) để tạo mối quan hệ đó. Dưới đây là bảng Khách hàng mới của chúng tôi:

Bây giờ chúng tôi đã giảm thiểu lượng thông tin dư thừa được lưu trữ trong cơ sở dữ liệu và cấu trúc của chúng tôi ở dạng bình thường thứ hai!

Nếu bạn muốn đảm bảo cơ sở dữ liệu của bạn được chuẩn hóa, hãy khám phá các bài viết khác của chúng tôi trong loạt bài này: