Salve a tutti,
effettuando i test su una piccola applicazione sql mi sono trovato davanti ad un mezzo casino, credo risolvibile, solo che non riesco a venirne fuori ed avrei bisogno di un consiglio.
Ve lo illustro:
Ecco le mie tre tabelle, si tratta della gestione di un archivio di libri/fornitori per un mercatino del libro usato. Ecco il problema: al momento della progettazione, stupidamente, non avevo fatto caso che l'ISBN di un libro non è unico, perchè può capitare che due fornitori distinti portino ciascuno un libro con lo stesso ISBN, e quando questo avviene succede un casino.codice:CREATE TABLE IF NOT EXISTS `fornitori` ( `id_fornitore` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(255) NOT NULL, `cognome` varchar(255) NOT NULL, `telefono` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, `indirizzo` varchar(255) DEFAULT NULL, `data` varchar(255) NOT NULL, PRIMARY KEY (`id_fornitore`) ); CREATE TABLE IF NOT EXISTS `libri` ( `id_libro` int(11) NOT NULL AUTO_INCREMENT, `isbn` varchar(255) NOT NULL, `autore` varchar(255) NOT NULL, `titolo` varchar(255) NOT NULL, `casa_editrice` varchar(255) NOT NULL, `anno` varchar(4) NOT NULL, `materia` varchar(255) DEFAULT NULL, `prezzo` float NOT NULL, `venduto` varchar(1) NOT NULL DEFAULT '0', `data_vendita` varchar(255) NOT NULL, PRIMARY KEY (`id_libro`), FULLTEXT KEY `autore` (`autore`,`titolo`) ); CREATE TABLE IF NOT EXISTS `libri_fornitore` ( `id_libri_fornitore` int(11) NOT NULL AUTO_INCREMENT, `isbn` varchar(255) NOT NULL, `id_fornitore` int(11) NOT NULL, `data` varchar(255) NOT NULL, PRIMARY KEY (`id_libri_fornitore`) );
Il problema sarebbe risolvibile cambiando la chiave primaria della tabella Libri, assegnandola a id_libro...se non fosse che id_libro viene assegnata da un Auto Increment...non ho come tirarla fuori al momento dell'inserimento del record nella tabella libri_fornitore.
Questo è l'inserimento. Come posso ovviare al problema? Avevo pensato di effettuare prima l'inserimento del record nella tabella libri, tirare fuori l'id_libro e poi dopo inserire il record corrispondente nella tabella libri_fornitore...ma non è uno spreco abnorme di risorse? Non è un casino da implementare?codice:$data = date("d-m-y - G:i:s"); // 22-09-11 - 21:56:01 $sql=mysql_query("INSERT INTO libri (id_libro,isbn, autore, titolo, casa_editrice, materia, anno, prezzo, venduto, data_vendita) VALUES ('','$isbn', '$autore', '$titolo','$casa_editrice', '$materia', '$anno', $prezzo, '0', '')"); $sql2=mysql_query("INSERT INTO libri_fornitore (id_libri_fornitore, isbn, id_fornitore, data) VALUES ('','$isbn', '$code', '$data')");
Consigli?

Rispondi quotando