Ассоциативный объект является термином , используемым в реляционной и сущности-связи теории. Реляционная база данных требует реализации базового отношения (или базовой таблицы) для разрешения отношений « многие ко многим» . Базовое отношение, представляющее этот вид сущности, неофициально называется ассоциативной таблицей .
Как упоминалось выше, ассоциативные сущности реализуются в структуре базы данных с использованием ассоциативных таблиц, которые представляют собой таблицы, которые могут содержать ссылки на столбцы из одной или разных таблиц базы данных в одной базе данных.
Ассоциативная (или соединительная) таблица отображает две или более таблиц вместе, ссылаясь на первичные ключи каждой таблицы данных. Фактически, он содержит несколько внешних ключей, каждый из которых находится во взаимосвязи «многие к одному» от таблицы соединений к отдельным таблицам данных. PK ассоциативной таблицы обычно состоит из самих столбцов FK.
Ассоциативные таблицы просторечии известен под многими именами, в том числе объединения таблицы , таблицы моста , таблицы перекрестных ссылок , пешеходном , посреднической таблицы , таблицы пересечений , присоединиться к таблице , распределительную таблицу , ссылка таблицы , связывающую таблицу , многие-ко-многим распознаватель , стол карты , отображение таблицы , спаривать таблицы , сводной таблицы (как используется неправильно в Laravel - не следует путать с правильным использованием сводной таблицы в таблицах ), или таблицы переходов .
Использование ассоциативных таблиц
Примером практического использования ассоциативной таблицы может быть назначение разрешений пользователям. Может быть несколько пользователей, и каждому пользователю может быть назначено ноль или более разрешений. Индивидуальные разрешения могут быть предоставлены одному или нескольким пользователям.
CREATE TABLE пользователей ( 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 ) СПРАВОЧНЫХ пользователей ( UserLogin ), PermissionKey VARCHAR ( 50 ) СПРАВОЧНОЕ разрешения ( PermissionKey ), ПЕРВИЧНЫЙ КЛЮЧ ( UserLogin , PermissionKey ) );
ВЫБОР -statement на столе соединения , как правило , включает в себя присоединение основной таблицы с таблицей соединения:
ВЫБЕРИТЕ * ИЗ Пользователи ПРИСОЕДИНЯЙТЕСЬ к правам пользователя ИСПОЛЬЗУЯ ( 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 на свои собственные таблицы.
Смотрите также
Рекомендации
- Хоффер, Джеффри А .; Прескотт, Мэри Б.; Макфадден, Фред Р. (2004). Современное управление базами данных (7-е изд.). Прентис Холл. ISBN 978-0131453203.
- Кодд, EF (1970). «Реляционная модель данных для больших общих банков данных». Коммуникации ACM . ACM. 13 (6): 377–387. DOI : 10.1145 / 362384.362685 .