1) autisti e automobili essendo una condivisione di percorso, suppone che l'automobile sia di un privato che si iscrive al sito per “dare passaggi”. Non credo che abbia un parco auto, ergo, è un collegamento 1 a 1.
2) serve una tabella voti (io parlo italiano)
A questa tabella accedono sia passeggeri che autisti lasciando un voto.
Tabella voti: Id voto, id votante, tipo votante (se autista/utente), voto, commento, destinatario (id autista o id passeggero ambedue unici).
Una query filtra e somma i voti per autista o utente.
3) Percorsi, potrebbe includere delle coincidenze tra vie limitrofe fra autisti, quindi si dovrebbero includere le vie percorse e controllare eventuali coincidenze (anche di orario).
Potrebbe succedere che dal punto a al punto b l'autista caio passi per via della speranza alle 12:30 pre poi andare in via dei tigli, mentre l'autista sempronio la percorra alle 12:50 per proseguire per via degli abeti…
Sarebbe il passeggero a prenotare due “passaggi” aspettando la coincidenza per 20 minuti.
Ergo: id autista, strada, orario, direzione ecc…
Percorso passeggero
Id percorso, id viaggio, utente, autista, data, ora inizio, strada, ora fine, strada.
Viaggi: id viaggio, id percorso.
Così un viaggio inizia con caio e finisce con sempronio.
Oppure n autisti con n passeggeri….
In ogni caso in core del database è il viaggio del/dei passeggero/i gli autisti sono solo un database da cui attingere per formare il viaggio. Non credo che siano gli autisti a prenotare i passeggeri ma i passeggeri a prenotre gli autisti in base alla disponibilità.