Home > Listati di programmi C > Database film-attori con relazione molti a molti

DATABASE FILM-ATTORI CON RELAZIONE MOLTI A MOLTI

Fra l'insieme dei film e quello degli attori esiste una relazione di tipo molti a molti: in un film possono recitare piu' attori, lo stesso attore puo' avere recitato in piu' film.

Per gestire questa relazione ho ideato tre file.

In film.db sono inserite delle struct contenenti il titolo, l'anno e il regista (nome+cognome).

In attori.db sono inserite delle struct contenenti i due campi nome e cognome di un attore.

Entrambe le struct hanno anche un campo (id_film e id_attore) che serve come chiave primaria; il valore di questo campo viene assegnato automaticamente con l'inserimento dei dati.

Il terzo file, film_attori.db, e' formato da struct contenenti la coppia di campi id_film e id_attore, che permette di associare film e attori. E' cosi' possibile, dato un film, visualizzare anche i dati degli attori corrispondenti; oppure, dato un attore, si possono vedere i film in cui ha recitato.

Le elaborazioni che implicano ricerche sui dati vengono fatte caricando nella memoria heap, allocata con calloc(), i dati dei file e accedendo agli stessi con l'aritmetica dei puntatori.

Se si cerca di inserire un film con un titolo gia' presente in film.db, il programma avverte il lettore consentendogli di evitare il doppio inserimento dello stesso film oppure dandogli la possibilita' di inserire un film diverso con lo stesso titolo.

Se si inseriscono i dati di un attore gia' presente in attori.db, il programma se ne accorge ed evita automaticamente il doppio inserimento dello stesso attore; la coppia id_film / id_attore viene comunque salvata in film_attori.db.

Ho previsto il caso particolare dei film senza attori (come cartoni animati o documentari).

Prima di inserire dati la prima volta, bisogna verificare che non siano gia' presenti nella directory corrente dei file chiamati film.db, attori.db e film_attori.db, per evitare che siano sovrascritti perdendo i dati originali.

Tutti i programmi aprono i file in modalita' binaria.

Per compilare (con gcc): gcc -o metti_film metti_film.c cinema_lib.c

File cinema_lib.h

File cinema_lib.c

Inserire un film coi relativi attori

Visualizzare i dati di tutti i film

Visualizzare i dati di tutti gli attori

Cercare un film

Cercare un attore

Cercare un regista

Visualizzare separatamente il contenuto dei tre file


Home


www.corradodamiano.it