sql >> Base de Datos >  >> RDS >> Mysql

Implementación de tablas de asociación

La relación entre Locations y Events es un ejemplo de una relación de 1 a muchos. Esto significa que cada ubicación individual puede tener muchos eventos asociados. Estos tipos de relaciones generalmente se implementan agregando una clave externa a la tabla "muchos" (eventos) que hace referencia a la clave principal de la tabla "uno" (ubicaciones).

La relación entre 'Ubicaciones' y 'Tipos' es un ejemplo de una relación de muchos a muchos. Esto significa que una ubicación puede tener muchos tipos y un tipo puede estar relacionado con muchas ubicaciones. Estos tipos de relaciones generalmente se implementan con una tabla de enlaces, que contiene claves externas para las filas relacionadas. La tabla de enlaces generalmente tiene una clave principal compuesta de las dos claves externas, lo que significa que una ubicación no se puede vincular dos veces al tipo 'barra'.

Por lo tanto, las siguientes estructuras de tablas podrían ser adecuadas para usted:

Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...

Para consultar la información en varias de las tablas, debe usar combinaciones. Para la relación de 1 a muchos, funcionará la siguiente consulta:

SELECT
    l.LocationName, e.Name, e.Date
FROM Location l
    JOIN Events e ON l.ID = e.LocationID

Para una relación de muchos a muchos, la siguiente consulta unirá la información.

SELECT
    l.LocationName, t.Name as TypeName
FROM Location l
    JOIN LocationTypes lt ON l.ID = lt.LocationID
    JOIN Types t ON lt.TypeID = t.ID

Estos ejemplos solo muestran una unión interna estándar, hay otros tipos de unión que pueden adaptarse mejor a sus necesidades.