Ассоциативная сущность
Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( Май 2018 г. ) |
Ассоциативная сущность — это термин, используемый в реляционной теории и теории сущность-связь . Реляционная база данных требует реализации базового отношения (или базовой таблицы ) для разрешения отношений «многие ко многим» . Базовое отношение, представляющее такой тип сущности, неофициально называется ассоциативной таблицей .
Как упоминалось выше, ассоциативные сущности реализуются в структуре базы данных с помощью ассоциативных таблиц, которые представляют собой таблицы, которые могут содержать ссылки на столбцы из одной и той же или разных таблиц базы данных в одной базе данных.
Ассоциативная (или соединительная) таблица сопоставляет две или более таблиц вместе, ссылаясь на первичные ключи (PK) каждой таблицы данных. По сути, он содержит несколько внешних ключей (FK), каждый из которых находится в отношении «многие к одному» от соединительной таблицы к отдельным таблицам данных. PK ассоциативной таблицы обычно состоит из самих столбцов FK.
Ассоциативные таблицы в просторечии известны под многими названиями, включая таблицу связей , таблицу мостов , таблицу перекрестных ссылок , перекрестный переход , промежуточную таблицу , таблицу пересечений , таблицу соединений , таблицу соединений , таблицу связей , таблицу связей , преобразователь «многие-ко-многим» , таблицу отображения. , таблица сопоставления , таблица сопряжения , сводная таблица (неправильно используемая в Laravel — не путать с правильным использованием сводной таблицы в электронных таблицах ) или таблица переходов .
Использование ассоциативных таблиц
[ редактировать ]Примером практического использования ассоциативной таблицы может быть назначение разрешений пользователям. Пользователей может быть несколько, и каждому пользователю может быть назначено ноль или более разрешений. Отдельные разрешения могут быть предоставлены одному или нескольким пользователям.
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)
);
Оператор SELECT в соединительной таблице обычно включает в себя соединение основной таблицы с соединительной таблицей:
SELECT * FROM Users
JOIN UserPermissions USING (UserLogin);
Это вернет список всех пользователей и их разрешений.
Вставка в соединительную таблицу включает в себя несколько шагов: сначала вставка в основную(ые) таблицу(и), затем обновление соединительной таблицы.
-- 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');
Используя внешние ключи, база данных автоматически разыменовывает значения таблицы UserPermissions в свои собственные таблицы.
См. также
[ редактировать ]Ссылки
[ редактировать ]- Хоффер, Джеффри А.; Прескотт, Мэри Б.; Макфадден, Фред Р. (2004). Современное управление базами данных (7-е изд.). Прентис Холл. ISBN 978-0131453203 .
- Кодд, Э.Ф. (1970). «Реляционная модель данных для больших общих банков данных» . Коммуникации АКМ . 13 (6). АКМ: 377–387. дои : 10.1145/362384.362685 .