Đây là bảng của bạn.
Shirt
id product color size stock
---------------------------------------------
1 Nike Shirt black M 5
2 Nike Shirt white L 10
3 Nike Shirt blue M 2
4 Nike Shirt blue XL 3
....
Bạn thấy cách bạn đã sao chép tên sản phẩm "Áo sơ mi Nike" và màu "xanh lam". Trong cơ sở dữ liệu quan hệ chuẩn hóa, chúng tôi không muốn sao chép bất kỳ thông tin nào. Bạn nghĩ điều gì sẽ xảy ra nếu ai đó vô tình đổi "Áo sơ mi Nike" thành "Váy Nike" ở hàng 4?
Vì vậy, hãy chuẩn hóa bảng của bạn.
Chúng ta sẽ bắt đầu với bảng Sản phẩm.
Product
id product
------ ------------
0 Nike Shirt
Nói chung, số id cơ sở dữ liệu bắt đầu bằng 0, không phải một.
Tiếp theo, hãy tạo bảng Màu.
Color
id color
------ -------
0 black
1 white
2 blue
Tiếp theo, hãy tạo bảng Kích thước.
Size
id size
------ -----
0 XS
1 S
2 M
3 L
4 XL
5 XXL
Ok, bây giờ chúng ta có 3 bảng đối tượng riêng biệt. Làm cách nào để chúng tôi kết hợp chúng lại với nhau để có thể xem còn hàng trong kho?
Bạn đã có ý tưởng đúng với bảng ban đầu của mình.
Stock
id product color size stock
---------------------------------------------
0 0 0 2 5
1 0 1 3 10
2 0 2 2 2
3 0 2 4 3
Số sản phẩm, màu sắc và kích thước là các khóa ngoại quay lại bảng Sản phẩm, Màu sắc và Kích thước. Lý do chúng tôi làm điều này là để loại bỏ sự trùng lặp của thông tin. Bạn có thể thấy rằng bất kỳ phần thông tin nào cũng được lưu trữ ở một nơi và chỉ một nơi.
Id không cần thiết trên bảng Stock. Sản phẩm, màu sắc và kích thước phải là duy nhất, vì vậy 3 trường đó có thể tạo thành một khóa ghép cho bảng Stock.
Trong một cửa hàng bán lẻ thực tế, một sản phẩm có thể có nhiều thuộc tính khác nhau. Các thuộc tính có thể sẽ được lưu trữ trong một bảng khóa / giá trị . Đối với bảng đơn giản của bạn, chúng tôi có thể chia bảng thành các bảng quan hệ chuẩn hóa.