Връзката между Locations
и Events
е пример за връзка 1 към много. Това означава, че всяко отделно местоположение може да има много събития, свързани с него. Тези типове релации обикновено се реализират чрез добавяне на външен ключ към таблицата „много“ (събития), който препраща към първичния ключ на таблицата „един“ (местоположения).
Връзката между „Местоположения“ и „Типове“ е пример за връзка „много към много“. Това означава, че едно местоположение може да има много типове и тип може да бъде свързан с много местоположения. Тези видове връзки обикновено се реализират с таблица с връзки, която съдържа външни ключове за свързаните редове. Таблицата с връзки обикновено има съставен първичен ключ от двата външни ключа, което означава, че едно местоположение не може да бъде свързано с типа „бар“ два пъти.
Така че следните структури на таблици може да са подходящи за вас:
Location: ID (primary key), LocationName, ...
Events: ID (primary key), LocationID (foreign key), Date, Name, ...
LocationTypes: LocationID (fk), TypeID (fk)
Types: ID (pk), Name, ...
За да потърсите информацията в няколко от таблиците, трябва да използвате връзки. За връзката 1 към много ще работи следната заявка:
SELECT
l.LocationName, e.Name, e.Date
FROM Location l
JOIN Events e ON l.ID = e.LocationID
За връзка много към много, следната заявка ще обедини информацията.
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
Тези примери просто показват стандартно вътрешно съединение, има и други типове присъединяване, които може да отговарят по-добре на вашите нужди.