Fiz algumas pesquisas e descobri que devo armazenar uma rota como uma sequência de paradas. Algo como:
Start -> Stop A -> Stop B -> Stop C -> End
Criei três tabelas:
- Rotas
- paradas
- Pontos de rota
...onde RouteStops é uma tabela de junção.
Eu tenho algo como:
Rotas
+---------+
| routeId |
+---------+
| 1 |
+---------+
| 2 |
+---------+
Estações
+-----------+------+
| stationId | Name |
+-----------+------+
| 1 | A |
+-----------+------+
| 2 | B |
+-----------+------+
| 3 | C |
+-----------+------+
| 4 | D |
+-----------+------+
RouteStations
+-------------+---------------+
| routeId(fk) | stationId(fk) |
+-------------+---------------+
| 1 | A |
+-------------+---------------+
| 1 | C |
+-------------+---------------+
| 1 | D |
+-------------+---------------+
| 2 | A |
+-------------+---------------+
| 2 | D |
+-------------+---------------+
A rota 1 passa por
Station A -> Station C -> Station D
A rota 2 passa por
Station A -> Station D
Esta é uma boa maneira de armazenar rotas?
De acordo com a Wikipédia :
[...] o sistema de banco de dados não garante nenhuma ordem das linhas, a menos que uma
ORDER BY
cláusula seja especificada [...]
Posso confiar em tal esquema de banco de dados ou talvez isso deva ser feito de maneira diferente?
Este é realmente o meu projeto universitário, então estou apenas imaginando se esse esquema pode ser considerado correto. Para este caso, eu provavelmente armazenaria apenas várias rotas (aproximadamente 3-5) e estações (aproximadamente 10-15), cada rota consistiria em cerca de 5 estações. Também ficaria feliz em saber como isso deve ser no caso de uma empresa de ônibus real e grande.