sql >> データベース >  >> RDS >> Mysql

MySQLピボットテーブルに自動インクリメントの主キーを含めることには何か利点がありますか?

    投稿とカテゴリは、おそらく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が含まれます。



    1. MYSQL、PHPはデータベースの複数のテーブルに挿入します

    2. Datagridviewセル値変更更新データベース

    3. MySQLリッスン通知同等

    4. 右側のテーブルへの内部結合後に左側のテーブルから個別の行を選択するSQLクエリ