salve, questo è l'esercizio su cui mi sono cimentato

Disegnare ERD e codice SQL per la creazione di un DB riguardante una
compagnia di linee aeree.
Aggiungere ulteriori campi o tabelle se ritenuti necessari al completamento della struttura del database.
Un viaggiatore puo' prenotare molti voli, un volo puo' accogliere molti viaggiatori.
Creare:
-Entità viaggiatore contenente almeno gli attributi nome e cognome
-Entità volo contenente almeno gli attributi data, partenza, destinazione, ora di partenza e di arrivo.
Scrivere il codice SQL per le seguenti query:
-Dato un viaggiatore trovare tutti i voli
-Trovare tutti i voli in una certa data
-Dato un volo trovare tutti i viaggiatori

per la parte di creazione del DB non ho riscontrato molte difficoltà, ma riporto il codice nel caso vogliate suggerirmi qualche miglioria o qualche correzione
codice:
CREATE TABLE viaggiatore
(
nome VARCHAR(30),
cognome VARCHAR(30),
ID INT
);
ALTER TABLE viaggiatore ADD PRIMARY KEY(ID);
CREATE TABLE volo
(
datavolo DATE,
orapart TIME,
oraarr TIME,
part VARCHAR(20),
dest VARCHAR(20),
CODE INT
);
ALTER TABLE volo ADD PRIMARY KEY(CODE);
CREATE TABLE prenotazione
(
ID INT,
CODE INT
);
ALTER TABLE prenotazione ADD PRIMARY KEY(ID,CODE);
ALTER TABLE prenotazione ADD CONSTRAINT prenota FOREIGN KEY(ID) REFERENCES viaggiatore(ID);
ALTER TABLE prenotazione ADD CONSTRAINT prenotato FOREIGN KEY(CODE) REFERENCES volo(CODE);
per quanto riguarda le query ho l'impressione di non aver ancora ben capito come gestire le relazioni molti a molti, il risultato è questo (che,nonostante vada bene in questo caso, mi sembra un po' forzato)
codice:
dato un passeggero trovare tutti i voli
SELECT datavolo,orapart,oraarr,part,dest FROM volo JOIN prenotazione ON prenotazione.CODE=volo.CODE
WHERE prenotazione.ID=input;


dato un volo trovare tutti i passeggeri
SELECT nome,cognome FROM viaggiatore JOIN prenotazione ON prenotazione.ID=viaggiatore.ID WHERE prenotazione.CODE=input;


ora, tralasciando gli "input" che ho indicato così perchè suppongo che l'unico modo per avere valori precisi siano funzioni come (in php) mysql_query('etc...'.$ID), ho l'impressione che il codice sia troppo poco versatile e che ci siano alternative più complete alle query che ho scritto.
(c'è da dire che le uniche query previste nel programma del corso sono SELECT FROM e JOIN ON, ma vorrei approfondire la questione)
ringrazio in anticipo