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 utilizando tablas asociativas, que son tablas que pueden contener referencias a columnas de la misma o diferentes tablas de base de datos dentro de la misma base de datos.
Una tabla asociativa (o de unión) asocia dos o más tablas entre sí haciendo referencia a las claves primarias (PK) de cada tabla de datos. En efecto, contiene una serie de claves externas (FK), cada una en una relación de varios a uno desde la tabla de unión hasta las tablas de datos individuales. La PK de la tabla asociativa normalmente está compuesta por las propias columnas de la FK.
Las tablas asociativas se conocen coloquialmente con muchos nombres, entre ellos , tabla de asociación , tabla puente , tabla de referencia cruzada , tabla de cruce , tabla intermediaria , tabla de intersección , tabla de unión , tabla de unión, tabla de enlace , tabla de enlace , resolver de muchos a muchos , tabla de mapa , tabla de mapeo , tabla de emparejamiento , tabla dinámica (como se usa incorrectamente en Laravel , que no debe confundirse con el uso correcto de la tabla dinámica en las hojas de cálculo ) o tabla de transición .
Un ejemplo del uso práctico de una tabla asociativa sería asignar permisos a los usuarios. Puede haber varios usuarios y a cada uno de ellos se le pueden asignar cero o más permisos. Se pueden conceder permisos individuales a uno o más usuarios.
CREAR TABLA Usuarios ( InicioDeSesiónDeUsuario varchar ( 50 ) CLAVE PRINCIPAL , ContraseñaDeUsuario varchar ( 50 ) NO NULO , NombreDeUsuario varchar ( 50 ) NO NULO ); CREAR TABLA Permisos ( PermissionKey varchar ( 50 ) CLAVE PRIMARIA , PermissionDescription varchar ( 500 ) NO NULO ); -- 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 declaración SELECT en una tabla de unión generalmente implica unir la tabla principal con la tabla de unión:
SELECCIONAR * DE Usuarios UNIRSE PermisosDeUsuario USANDO ( UserLogin );
Esto devolverá una lista de todos los usuarios y sus permisos.
La inserción en una tabla de unión implica varios pasos: primero, insertar en la(s) tabla(s) principal(es) y luego actualizar la tabla de unión.
-- Creando un nuevo usuario INSERT INTO Users ( UserLogin , UserPassword , UserName ) VALUES ( 'SomeUser' , 'SecretPassword' , 'UserName' ); -- Crear 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' );
Al utilizar claves externas, la base de datos desreferenciará automáticamente los valores de la tabla UserPermissions a sus propias tablas.