投稿とカテゴリは、おそらく1対多ではなく、多対多です。
多対多の関係テーブルは、次のような方法で実行するのが最適です
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;
これにより、双方向の「クラスター化された」ルックアップが自動的に取得され、テーブルの不要な人工IDが回避されます。
(ちなみに、N.B。、暗黙のPKは8バイトではなく6バイトです。このトピックに関するJeremy Coleによる長い投稿があります。)
1対多の関係では、この追加のテーブルは必要ありません。代わりに、一方のIDをもう一方のテーブル内に配置します。たとえば、CityテーブルにはCountryのIDが含まれます。