Associative entity là gì?

Noun Database
Thực thể liên kết

Thực thể liên kết (associative entity) là một thuật ngữ được sử dụng trong mô hình quan hệ (relational model) và mô hình thực thể liên kết (entity-relationship model). Nó là một kiểu thực thể (enity type) liên kết các thể hiện (instance) của nhiều kiểu thực thể và chứa các thuộc tính (attribute) là cụ thể cho mối liên kết (relationship) giữa các thể hiện. Nói cách khác nó vừa là kiểu thực thể và vừa là mối liên kết. Nó được biểu diễn bằng hình thoi được bao bọc bởi hình chữ nhật bên ngoài.

Cơ sở dữ liệu quan hệ (relational database) yêu cầu triển khai (implementation) một quan hệ cơ sở (base relation) / hoặc bảng cơ sở (base table) để giải quyết các mối quan hệ nhiều-nhiều (many-to-many relationship). Một quan hệ cơ sở đại diện cho thực thể liên kết (associative entity), còn được gọi là một bảng kết hợp (associative table).

Như đã đề cập ở trên, các thực thể liên kết (associative entity) được triển khai trong một cấu trúc cơ sở dữ liệu bằng cách sử dụng các bảng kết hợp, là các bảng có thể chứa các tham chiếu (reference) đến các cột (column) từ các bảng cơ sở dữ liệu giống nhau hoặc khác nhau trong cùng một cơ sở dữ liệu.

Bên dưới là ví dụ minh họa:

Một ví dụ về cách sử dụng thực tế của bảng kết hợp là gán quyền (permission) cho người dùng. Có thể có nhiều người dùng và mỗi người dùng có thể được chỉ định không hoặc nhiều quyền. Các quyền của người dùng cá nhân có thể được cấp cho một hoặc nhiều người dùng.


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
);

-- This is the junction table.
CREATE TABLE UserPermissions (
    UserLogin varchar(50) REFERENCES Users (UserLogin),
    PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
    PRIMARY KEY (UserLogin, PermissionKey)
);

Câu lệnh SELECT trên bảng kết hợp thường liên quan đến việc join bảng chính (main table) với bảng kết hợp:


SELECT * FROM Users
JOIN UserPermissions USING (UserLogin);

Thao tác này sẽ trả về danh sách tất cả người dùng và quyền của họ.

Chèn vào bảng kết hợp bao gồm nhiều bước: trước tiên chèn vào (các) bảng chính, sau đó cập nhật bảng kết hợp.


-- Creating a new User
INSERT INTO Users (UserLogin, UserPassword, UserName)
VALUES ('SomeUser', 'SecretPassword', 'UserName');

-- Creating a new Permission
INSERT INTO Permissions (PermissionKey, PermissionDescription)
VALUES ('TheKey', 'A key used for several permissions');

-- Finally, updating the junction
INSERT INTO UserPermissions (UserLogin, PermissionKey)
VALUES ('SomeUser', 'TheKey');

Sử dụng các khóa ngoại (foreign key), cơ sở dữ liệu sẽ tự động dereference các giá trị của bảng UserPermissions vào các bảng của riêng chúng.

Learning English Everyday