連想エンティティは、 リレーショナル理論およびエンティティ リレーションシップ理論で使用される用語です。リレーショナル データベースでは、多対多の関係を解決するために基本リレーション (または基本テーブル)を実装する必要があります。この種のエンティティを表す基本リレーションは、非公式には連想テーブルと呼ばれます。

前述のように、連想エンティティは、連想テーブルを使用してデータベース構造に実装されます。連想テーブルは、同じデータベース内の同じまたは異なるデータベース テーブルの列への参照を含めることができるテーブルです。

連想 (またはジャンクション) テーブルは、各データ テーブルの主キー(PK) を参照して、2 つ以上のテーブルをマッピングします。実際には、ジャンクション テーブルから個々のデータ テーブルへの多対 1 の関係にある多数の外部キー(FK) が含まれます。連想テーブルの PK は通常、FK 列自体で構成されます。
連想テーブルは、通称で関連テーブル、ブリッジ テーブル、相互参照テーブル、クロスウォーク、中間テーブル、交差テーブル、結合テーブル、ジャンクションテーブル、リンク テーブル、リンクテーブル、多対多リゾルバ、マップ テーブル、マッピング テーブル、ペアリング テーブル、ピボット テーブル( Laravelで使用されます。スプレッドシートのピボット テーブルと混同しないでください)、遷移テーブルなど、 さまざまな名前で知られています。
連想テーブルの使用
連想テーブルの実際の使用例としては、ユーザーに権限を割り当てることが挙げられます。ユーザーは複数存在でき、各ユーザーには 0 個以上の権限を割り当てることができます。個別の権限は 1 人以上のユーザーに付与できます。
テーブルUsersを作成します(UserLogin varchar (50 )PRIMARY KEY 、UserPassword varchar (50 )NOT NULL 、UserName varchar (50 )NOT NULL )。
CREATE TABLE Permissions ( PermissionKey varchar ( 50 ) PRIMARY KEY 、PermissionDescription varchar ( 500 ) NOT NULL );
-- これはジャンクション テーブルです。
CREATE TABLE UserPermissions ( UserLogin varchar ( 50 ) REFERENCES Users ( UserLogin ), PermissionKey varchar ( 50 ) REFERENCES Permissions ( PermissionKey ), PRIMARY KEY ( UserLogin , PermissionKey ) );

ジャンクション テーブルに対するSELECTステートメントでは、通常、メイン テーブルとジャンクション テーブル を結合します。
SELECT * FROM Users JOIN UserPermissions USING ( UserLogin );
これにより、すべてのユーザーとその権限のリストが返されます。
ジャンクション テーブルへの挿入には、最初にメイン テーブルに挿入し、次にジャンクション テーブルを更新するという複数の手順が含まれます。
-- 新しいユーザーを作成する
INSERT INTO Users ( UserLogin 、UserPassword 、UserName ) VALUES ( 'SomeUser' 、'SecretPassword' 、'UserName' );
-- 新しい権限の作成
INSERT INTO Permissions ( PermissionKey , PermissionDescription ) VALUES ( 'TheKey' , '複数の権限に使用されるキー' );
-- 最後に、ジャンクションを更新します
INSERT INTO UserPermissions ( UserLogin 、PermissionKey ) VALUES ( 'SomeUser' 、'TheKey' );
外部キーを使用すると、データベースは UserPermissions テーブルの値を独自のテーブルに自動的に参照解除します。
