[Python] Multiple primary key? Era: Red Baron

Giovanni Porcari giovanni.porcari a softwell.it
Sab 27 Giu 2015 18:17:40 CEST


> Il giorno 27/giu/2015, alle ore 17:32, Enrico Bianchi <enrico.bianchi a ymail.com> ha scritto:
> 
> On 06/27/2015 04:50 PM, Giovanni Porcari wrote:
>> Sono della fazione "ogni riga di tabella ha un identificativo univoco"
> Ma una chiave composita in cui tutti gli elementi assicurano l'univocita` del record e` un identificativo univoco ;)
> 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
> 

Si. Ovviamente la frase UN identificativo univoco 
intendeva dire UNA ed UNA SOLA colonna.
Agli albori di Genropy (parlo del 2005 quando
ancora pensavamo di fare una GUI in wx) l’adapter
SQL era stato pensato per supportare chiavi multiple.

Cioè se nel mio codice scrivevo 
pkey = db.table(‘foo.bar’).pkey
ottenevo una tupla.

E tutto il codice generico di framework doveva
sapere che arrivava una tuple. Dopo circa 2 anni
a furore di popolo e visto che nella quasi totalità
dei casi la tupla conteneva un solo valore è stato deciso
di sacrificare la teoria alla semplicità.

Non so onestamente se sia stato una cosa giusta o meno.
A volte le decisioni si prendono e amen.
Ogni volta che scrivi codice specifico è abbastanza
semplice gestire di volta in volta il caso di
chiave singola o multipla. Quando scrivi codice generico
gestire in tutti i passaggi il fatto che invece di un campo
char o longint ti arrivi una tupla è semplicemente troppo
dispendioso da implementere e quindi il compromesso
è stato quello di dire : se DEVO essere certo che sia univoca
nel trigger si genera una pkey composta. 
Un compromesso. Come sempre.
La vita è piena di compromessi :D

Ciao

G




Maggiori informazioni sulla lista Python