Articulo de referencia

Entidad asociativa

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 ta...

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 .

Una entidad asociativa (utilizando la notación de Chen )

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.

Concepto de tabla de correspondencia
Concepto de tabla de correspondencia

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 ) );
Representación visual del esquema de la tabla descrita, con las relaciones indicadas.
Representación visual del esquema de la tabla descrita, con las relaciones indicadas.

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 .