Una entidad asociativa es un término utilizado en la teoría relacional y de entidad-relación . Una base de datos relacional requiere la implementación de una relación base (o tabla base ) para resolver relaciones de muchos a muchos . Una relación base que representa este tipo de entidad se denomina, informalmente, tabla asociativa .

Como se mencionó anteriormente, las entidades asociativas se implementan en una estructura de base de datos mediante tablas asociativas, que son tablas que pueden contener referencias a columnas de la misma tabla o de tablas diferentes dentro de la misma base de datos.

Una tabla asociativa (o de unión) relaciona dos o más tablas mediante las claves primarias (PK) de cada una. En efecto, contiene varias claves foráneas (FK), cada una con una relación de muchos a uno entre la tabla de unión y las tablas de datos individuales. La clave primaria de la tabla asociativa suele estar compuesta por las propias columnas de clave foránea.
Las tablas asociativas se conocen coloquialmente con muchos nombres, entre ellos tabla de asociación , tabla puente , tabla de referencia cruzada , paso de cruce , tabla intermedia , tabla de intersección , tabla de unión , tabla de cruce , tabla de enlace , tabla de vinculación , resolvedor muchos a muchos , tabla de mapa , tabla de mapeo , tabla de emparejamiento , tabla pivote (como se usa en Laravel , que no debe confundirse con el uso de tabla pivote en hojas de cálculo ) o tabla de transición .
Utilizando tablas asociativas
Un ejemplo del uso práctico de una tabla asociativa sería la asignación de permisos a los usuarios. Puede haber varios usuarios, y a cada uno se le pueden asignar cero o más permisos. Los permisos individuales pueden otorgarse a uno o más usuarios.
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 );-- Esta es la tabla de unión. CREATE TABLE UserPermissions ( UserLogin varchar ( 50 ) REFERENCES Users ( UserLogin ), PermissionKey varchar ( 50 ) REFERENCES Permissions ( PermissionKey ), PRIMARY KEY ( UserLogin , PermissionKey ) );
Una sentencia SELECT en una tabla de unión generalmente implica unir la tabla principal con la tabla de unión:
SELECCIONAR * DE Usuarios UNIR Permisos de usuario USANDO ( Inicio de sesión de usuario );Esto devolverá una lista de todos los usuarios y sus permisos.
La inserción de datos en una tabla de unión implica varios pasos: primero, insertar datos en la(s) tabla(s) principal(es) y, a continuación, actualizar la tabla de unión.
-- Creando un nuevo usuario INSERT INTO Users ( UserLogin , UserPassword , UserName ) VALUES ( 'SomeUser' , 'SecretPassword' , 'UserName' );-- Creación de un nuevo permiso INSERT INTO Permissions ( PermissionKey , PermissionDescription ) VALUES ( 'TheKey' , 'Una clave utilizada para varios permisos' );-- Finalmente, actualizando la unión INSERT INTO UserPermissions ( UserLogin , PermissionKey ) VALUES ( 'SomeUser' , 'TheKey' );Mediante el uso de claves foráneas, la base de datos desreferenciará automáticamente los valores de la tabla UserPermissions a sus propias tablas.
Véase también
Referencias
- Hoffer, Jeffrey A.; Prescott, Mary B.; McFadden, Fred R. (2004). Gestión moderna de bases de datos (7.ª ed.). Prentice Hall. ISBN 978-0131453203.
- Codd, EF (1970). "Un modelo relacional de datos para grandes bancos de datos compartidos" . Communications of the ACM . 13 (6). ACM: 377– 387. doi : 10.1145/362384.362685 .
- Modelo entidad-relación
- Diagramas