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
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: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);
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

Rispondi quotando