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

MySQLの1つの行に複数のIDを割り当てる方法は?

    他の人がすでに示唆しているように、多対多の関係は、物理モデルではジャンクションテーブルによって表されます。私は脚の仕事をして、あなたのためにそれを説明します:

    CATEGORY_ITEMはジャンクションテーブルです。他の2つのテーブルから移行されたFKで構成される複合PKがあります。データの例...

    カテゴリ:

    CATEGORY_ID CATEGORY
    ----------- --------
    1           Apple
    2           Orange
    

    アイテム:

    ITEM_ID     NAME
    -------     ----
    1           Foo
    2           Bar
    

    CATEGORY_ITEM:

    CATEGORY_ID ITEM_ID
    ----------- -------
    1           1
    2           1
    1           2
    

    上記の意味:「FooはAppleとOrangeの両方であり、BarはAppleのみです」

    PKは、カテゴリとアイテムの特定の組み合わせが複数回存在しないようにします。カテゴリは、ではないアイテムに接続されています。複数回接続することはできません。

    主に特定のカテゴリのアイテムを検索するため、PKのフィールドの順序は{CATEGORY_ID、ITEM_ID}であり、基になるインデックスがそのクエリを満たすことができます。理由の正確な説明はこの範囲を超えています-興味がある場合は、 Use The Index、Lukeを読むことを強くお勧めします。 !

    また、InnoDBはクラスタリングを使用している 、これにより、同じカテゴリに属する​​アイテムが物理的に近接して保存されるため、上記のクエリのI/Oにかなり役立つ場合があります。

    (特定のアイテムのカテゴリをクエリする場合は、インデックス内のフィールドの順序を入れ替える必要があります。)



    1. SQL Server2014CTP1でのパーティションレベルのオンラインインデックス操作の調査

    2. MySQLでランダムな文字列を生成します

    3. EBS 12.2.5以降:ログインページボタンのずれ

    4. MariaDBでATAN2()がどのように機能するか