Newsgroup: it.comp.www.php
Titolo: consiglio su relazioni DB

ciao a tutti!
sto realizzando un'applicazione in PHP e mi si presenta un problema. devo
fare una scelta (come NEO :)) ) e quindi chiedo consiglio a chi ha +
esperienza di me in merito:
diciamo che in una tabella ho un'anagrafica clienti.
in un'altra ho le fatture emesse per quei clienti quindi le due tabelle sono
in relazione con chiave primaria e chiave esterna.
come dovrebbe comportarsi il software quando viene eliminato un cliente
dall'anagrafica?
grazie mille
Tex

Tex wrote:

DELETE FROM user_table WHERE uid = '$uid';
se non ti interessa mantenere le fatture non più collegate ad un cliente
allora anche..
DELETE FROM bill_table WHERE uid = '$uid';
-- 
www.iuz-lab.info

DELETE FROM bill_table WHERE uid = '$uid';
OK. ma come potrei fare a riassociare le fatture in un secondo momento se
decidessi di mantenerle e non cancellarle?

Tex wrote:

o crei quattro tabelle gemelle a due a due..
clienti
fatture
clienti_eliminati
fatture_eliminate
ed al momento dell'eliminazione sposti i dati da una tabella all'altra..
oppure (esempio) aggiungi una flag 'erased' alla tebella clienti..
clienti >
id
nome
..
erased
e quando lo elimini setti 'erased' a 'true'
quando vuoi visualizzare i clienti non eliminati aggiungi alla clausola
WHERE un AND erased = FALSE
quando vuoi visualizzare i clienti eliminati ti comporti di conseguenza..
naturalmente bisogna vedere le tue necessità..
(ci sono dei pro e dei contro che fanno la differenza)
-- 
www.iuz-lab.info

 fatto non succede nulla

 
la seconda ipotesi potrebbe dare problemi nel caso in cui si renda unico
nome, comgnome.. non sarebbe possibile inserire un nuovo nominativo se ne
esisteva uno uguale in precedenza..
mentre nella seconda ipotesi, non rendendo unico nome, cognome, nella
seconda coppia di tabelle il problema non si presenterebbe..
oltretutto la seconda ipotesi si rivelerà più performante nel caso in cui le
eliminazioni dei clienti siano molto frequenti..
-- 
www.iuz-lab.info

 
la seconda ipotesi potrebbe dare problemi nel caso in cui si renda unico
nome, comgnome.. non sarebbe possibile inserire un nuovo nominativo se ne
esisteva uno uguale in precedenza..
mentre nella prima ipotesi, non rendendo unico nome, cognome, nella



Secondo me il software dovrebbe mantenere le fatture anche se il
cliente viene cancellato, e utilizzando un codice cliente come primary
key per la tabella clienti e FK per la tabella fatture quando
reinserisci il cliente con lo stesso codice le fatture vengono
riprese.


Ma a che scopo mantenere le fatture avendo eliminato il cliente?
Secondo me o si elimina tutto (sconsigliato), oppure si usa un flag per 
indicare se il record è "attivo" oppure no (quindi seconda ipetesi).
-- 
Mauro
------------------------------
Be Happy: drink Beer!
http://www.birraiolo.it
------------------------------

indicare se il record è "attivo" oppure no (quindi seconda ipetesi).
Le fatture devo essere conservate per un periodo determinato (ai fini
fiscali, perche' puo' essere utile stamparle dopo un certo tempo,
etc.) anche se il cliente viene cancellato perche' non ha piu'
rapporti con l'azienza. 
Anche secondo me cancellare tutto e' sconsigliato, mentre sono
d'accordo con la seconda ipotesi di un flag (per indicare ad esempio
se il cliente e' stato "archiviato" o e' "attivo").

 se il cliente e' stato "archiviato" o e' "attivo").
si anche secondo me riflettendoci è la cosa migliore :) penso che adotterò
questo sistema :)
grazie mille a tutti!
ciao!
Tex

Tex wrote:

fossi in te creerei database gemelli..
come nella realtà un archivio per i clienti ancora attivi.. ed un'altro per
quelli non più interessanti..
nel caso di necessità puoi tranquillamente recuperare tutto quello che
vuoi..
-- 
www.iuz-lab.info