Dvojitý vztah s jednou tabulkou v Pythonu

Předpokládejme, že máme města:

cities
id name
1 city1
2 city2
3 city3

Předpokládejme, že máme trasy mezi městy, přičemž každá trasa má město začátku a město konce:

routes
id name from_city_id to_city_id
1 route1 1 2
2 route2 2 3

Předpokládejme, že chceme získat trasy spolu s městy. Obtížnost zde představuje to, že každá trasa má dvě města: začátek a konec.

Ukazuje se, že tabulku s městy je třeba připojit dvakrát. Při každém připojení bude tabulku nutné přejmenovat:

sqlSELECT
  from_cities.name as from_city_name,
  to_cities.name as to_city_name
FROM
  routes
LEFT JOIN cities as from_cities
  ON from_cities.id=routes.from_city_id
LEFT JOIN cities as to_cities
  ON to_cities.id=routes.to_city_id
Задание 1

Předpokládejme, že máme uživatele. Každý uživatel má otce a matku. Popište strukturu uložení.