連想エンティティ
連想エンティティ (英: associative entity) は関係モデル理論や実体関連モデル理論で使用される用語である。リレーショナルデータベースでは、多対多の関係を解決するために、基本関係(または基本テーブル)を実装する必要がある。この種のエンティティを表す基本関係は、非公式に連想テーブルと呼ばれる。 上記のように、連想エンティティは、連想テーブルを使用してデータベース構造に実装される。連想テーブルは、同じデータベース内の同じまたは異なるデータベーステーブルからの列への参照を含むことができるテーブルである。
連想(またはジャンクション)テーブルは、各データテーブルの主キーを参照することにより、2つ以上のテーブルを一緒にマップする。実際には、多数の外部キーが含まれており、それぞれがジャンクションテーブルから個々のデータテーブルまで多対1の関係にある。連想テーブルのPKは通常、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', 'A key used for several permissions');
-- 最後にジャンクションを更新
INSERT INTO UserPermissions (UserLogin, PermissionKey)
VALUES ('SomeUser', 'TheKey');
外部キーを使用して、データベースはUserPermissionsテーブルの値を独自のテーブルに自動的に逆参照する。
関連項目
[編集]参考文献
[編集]- Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Modern Database Management (7th ed.). Prentice Hall. ISBN 978-0131453203Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Modern Database Management (7th ed.). Prentice Hall. ISBN 978-0131453203 Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Modern Database Management (7th ed.). Prentice Hall. ISBN 978-0131453203