> Il giorno 27/giu/2015, alle ore 18:17, Giovanni Porcari > <giovanni.porc...@softwell.it> ha scritto: > >> Piu` che altro, mettere un id a tutti i costi non significa che il record da >> esso identificato sia univoco. A tal proposito, Davide Bianchi scrisse un >> articolo che esprime meglio il mio pensiero: >> http://soft-land.org/documenti/pk
Mi sono letto questo articolo e devo dire che dissento su quasi tutto. L’idea di una fkey composta da 7 campi che possono mutare mi procura una crisi d’ansia che nemmeno una damigiana di camomilla riuscirebbe a calmare. Per non parlare di un sistema ipotetico dove sia possibile introdurre n record identici perchè tutti con solo campi nulli. Mi pare che se la progettazione consente questi buchi di logica sarebbe preferibile cambiare mestiere :) L’idea che un entità sia definibile in modo univoco in base ad n attributi mutabili e che ci possano essere magari decine di migliaia di record che replicano le n colonne mutabili per gestire la relazione mi sembra francamente un disegno che si presta a brutte sorprese. L’identificativo (io non uso un id numerico ma un UUID) mi garantisce la relazione indipendentemente dai valori. Credo anche (ma può darsi che le cose siano ora diverse) che una relazione su una sola colonna sia in termini di ottimizzazione delle join più veloce rispetto ad una relazione su n colonne replicate (a meno di non creare comunque una chiave somma delle n chiavi). In Genropy nella definizione di una tabella si dichiara la pkey e il caption_field. La prima è per uso interno mentre il secondo è per gli esseri umani. Per un cliente il caption_field potrebbe essere la concatenazione di ragione sociale e città, per una fattura il numero e la data, per un paziente il cognome nome e data nascita. La colonna caption_field e nella maggior parte dei casi non una colonna reale ma quella che noi chiamiamo ‘formulaColumn’ ovvero un frammento di SQL che definisce la concatenazione. Da moltissimi anni usiamo questo sistema (banale direi) e il rischio di duplicazioni e omonimie è ridotto al fisiologico. Ciao G _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python