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

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

連想テーブル(または結合テーブル)は、各データテーブルの主キー(PK)を参照することで、2つ以上のテーブルを関連付けます。実際には、結合テーブルには複数の外部キー(FK)が含まれており、それぞれが結合テーブルから個々のデータテーブルへの多対一の関係を形成しています。連想テーブルの主キーは、通常、外部キー列自体で構成されます。
連想テーブルは、連想テーブル、ブリッジテーブル、相互参照テーブル、クロスウォーク、中間テーブル、交差テーブル、結合テーブル、ジャンクションテーブル、リンクテーブル、リンキングテーブル、多対多リゾルバー、マップテーブル、マッピングテーブル、ペアリングテーブル、ピボットテーブル( Laravelで使用されるもの-スプレッドシートでのピボットテーブルの使用と混同しないように)、または トランジションテーブルなど、多くの名前で一般的に知られています。
連想テーブルの実用的な使用例としては、ユーザーへの権限割り当てが挙げられます。ユーザーは複数存在し、各ユーザーには0個以上の権限を割り当てることができます。個々の権限は、1人または複数のユーザーに付与することが可能です。
CREATE TABLE 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テーブルの値を、それぞれのテーブルに自動的に参照します。