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

結合テーブル(関連付けテーブル)には主キーがありますか?多対多の関係

    純粋な「結合」またはジャンクションテーブルでは、すべてのフィールドが主キーの一部になります。たとえば、次の表について考えてみましょう。

    CREATE TABLE USERS
      (ID_USER NUMBER PRIMARY KEY,
       FIRST_NAME VARCHAR2(32),
       LAST_NAME VARCHAR2(32));
    
    CREATE TABLE ATTRIBUTES
      (ID_ATTRIBUTE NUMBER PRIMARY KEY,
       ATTRIBUTE_NAME  VARCHAR2(64));
    

    多くのユーザーが多くの属性を持つことができるようにするためのこれらの間のジャンクションテーブルは次のようになります

    CREATE TABLE USER_ATTRIBUTES
      (ID_USER NUMBER REFERENCES USERS(ID_USER),
       ID_ATTRIBUTE NUMBER REFERENCES ATTRIBUTES(ID_ATTRIBUTE),
       PRIMARY KEY(ID_USER, ID_ATTRIBUTE));
    

    非プライマリ列をジャンクションテーブルに追加する必要がある場合もありますが、これは比較的まれです。

    共有してお楽しみください。



    1. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート3

    2. 材料とサブレシピを含める必要があるレシピデータベースの設計

    3. Spring Hibernate Templateのexecuteメソッドは、Oracleでのカウントクエリに対してどのオブジェクトタイプを返しますか?

    4. SQLServerで同等の存在しない場合はCREATETABLE