Các bài đăng và danh mục có thể là nhiều-nhiều, không phải một-nhiều.
Tốt nhất nên thực hiện một bảng mối quan hệ nhiều-nhiều như
CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;
Với điều đó, bạn sẽ tự động nhận được tra cứu "theo nhóm" theo cả hai hướng và bạn tránh được id nhân tạo không cần thiết cho bảng.
(Nhân tiện, N.B., PK ngầm là 6 byte, không phải 8. Có một bài đăng dài của Jeremy Cole về chủ đề này.)
Mối quan hệ một-nhiều không cần bảng phụ này. Thay vào đó, hãy có một id bên trong bảng khác. Ví dụ:bảng Thành phố sẽ có id cho Quốc gia trong đó.