2. Chuẩn 1NF

Một bảng đạt chuẩn 1NF nếu không tồn tại các cột chứa dữ liệu đa trị và nhóm cột lặp (repeating group) cùng nhau.

Bảng HÓA ĐƠN chuyển về dạng Bảng 2 để xử lý vấn đề các dữ liệu đa trị

Bảng 2 – Xử lý các cột chứa dữ liệu đa trị

Mặc dù không còn các cột chứa dữ liệu đa trị nhưng vẫn còn nhóm cột lặp cùng nhau bao gồm Mã sản phẩm, Mô tả sản phẩm, Số lượng, Đơn giá, Thành tiền. Cũng cần chú ý rằng, công ty xuất hóa đơn cho nhiều khách hàng và trên mỗi hóa đơn chỉ có một khách hàng, do đó, các cột dữ liệu khách hàng không phải là nhóm cột lặp.

Xử lý nhóm cột lặp bằng cách chuyển các cột này sang một bảng mới theo nguyên tắc:

  • Tạo một bảng mới với một cái tên có ý nghĩa. Thông thường sẽ chứa toàn bộ hay một phần tên của bảng ban đầu. Bảng mới của chúng ta có thể gọi là bảng HÓA ĐƠN_SẢN PHẨM vì liên quan tới hóa đơn và sản phẩm.
  • Sao chép khóa chính từ bảng ban đầu sang bảng mới và sẽ đóng vai trò là khóa ngoại (FK) trong bảng mới. Khóa chính bảng HÓA ĐƠNMã hóa đơn sẽ được sao chép và đóng vai trò là khóa ngoại trong bảng HÓA ĐƠN_SẢN PHẨM.
  • Di chuyển các cột nhóm lặp sang bảng mới. Ở đây là các cột Mã sản phẩm, Mô tả sản phẩm, Số lượng, Đơn giá, Thành tiền
  • Tạo khóa chính cho bảng mới. Khóa chính có thể là sự kết hợp của khóa chính từ bảng cũ và một cột thuộc nhóm lặp. Việc một cột vừa là khóa ngoại vừa là một phần trong khóa chính của một bảng là bình thường trong thiết kế cơ sở dữ liệu. Trong bảng HÓA ĐƠN_SẢN PHẨM có thể tạo khóa chính là cột Mã hóa đơnMã sản phẩm. Lưu ý rằng, Mã hóa đơn đóng vai trò vừa là khóa ngoại vừa là một phần khóa chính trong bảng HÓA ĐƠN_SẢN PHẨM.

Qua quá trình chuẩn hóa 1NF, lúc này chúng ta có 2 bảng như sau:

HÓA ĐƠN: Mã hóa đơn (PK), Mã khách hàng, Tên khách hàng, Địa chỉ khách hàng, Huyện khách hàng, Tỉnh khách hàng, Số điện thoại, Hình thức giao hàng, Ngày đặt hàng, Tổng tiền thanh toán

HÓA ĐƠN_SẢN PHẨM: Mã hóa đơn (PK), Mã sản phẩm (PK), Mô tả sản phẩm, Số lượng, Đơn giá, Thành tiền

Lúc này các bảng HÓA ĐƠN và SẢN PHẨM đạt chuẩn 1NF.