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:
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`)
);
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.
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.
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')");
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?
Consigli?