Una entidad asociativa es un término utilizado en la teoría relacional y 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) mapea dos o más tablas juntas haciendo referencia a las claves primarias de cada tabla de datos. En efecto, contiene varias claves externas, cada una en una relación de muchos a uno desde la tabla de unión a las tablas de datos individuales. El PK de la tabla asociativa se compone típicamente de las propias columnas FK.
Tablas asociativas se coloquialmente conocidos bajo muchos nombres, incluyendo tabla de asociación , tabla del puente , tabla de referencia cruzada , paso de peatones , tabla intermediario , tabla de intersección , se unen a la tabla , tabla de unión , tabla de enlace , que une mesa , muchos-a-muchos de resolución , tabla de mapa , tabla de asignación , tabla de emparejamiento , tabla dinámica (como se usa incorrectamente en laravel - no debe ser confundido con el uso correcto de tabla dinámica en hojas de cálculo ), o tabla de transición .
Usando tablas asociativas
Un ejemplo del uso práctico de una tabla asociativa sería asignar permisos a los usuarios. Puede haber varios usuarios y a cada usuario se le pueden asignar cero o más permisos. Se pueden otorgar permisos individuales a uno o más usuarios.
CREAR TABLA Usuarios ( UserLogin varchar ( 50 ) PRIMARY KEY , UserPassword varchar ( 50 ) NOT NULL , UserName varchar ( 50 ) NOT NULL );CREAR TABLA Permisos ( PermissionKey varchar ( 50 ) PRIMARY KEY , PermissionDescription varchar ( 500 ) NOT NULL );- Esta es la mesa de conexiones. CREAR TABLA 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 ÚNETE UserPermissions USANDO ( UserLogin );
Esto devolverá una lista de todos los usuarios y sus permisos.
Insertar en una mesa de unión implica varios pasos: primero insertar en la (s) tabla (s) principal (s), luego actualizar la tabla de unión.
- Creación de 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' );
Usando claves foráneas, la base de datos desreferenciará automáticamente los valores de la tabla UserPermissions a sus propias tablas.
Ver 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". Comunicaciones de la ACM . ACM. 13 (6): 377–387. doi : 10.1145 / 362384.362685 .