si ok ... ma una chiave primaria serve a identificare una riga di un database in maniera univoca, per dirla terra terra ... e se mi devo basare su certi criteri per fare il riconoscimento ... non è che non uso una chiave primaria, ma una unica ... uso lo stesso una chiave primaria ...[supersaibal]Originariamente inviato da piero.mac
Tutte storielle... i presupposti per una chiave primaria sono i seguenti... e non me la sono inventata io. La miglior chiave primaria "deve" rispondere di NO ai seguenti quesiti
Condition: Best Answer is NO.
Solo un campo numerico risponde NO a tutti i quesiti. Qualunque altra cosa e' fattibile. Ma non sara' mai il meglio.codice:Not Null: Will the candidate value ever be null? no Brevity: Is the candidate value more than a single column? no Simplicity: Does the candidate value contain embedded spaces, special characters, or differential capitalization? no Data Type: Is the candidate value something other than a number or fixed-length character data type? no Nonidentifying Value: Does the candidate value contain any intelligence or have any meaning? no Never Change: Is the candidate value likely to change? no
Poi ognuno attacca il carro dove gli pare. Purche' sia felice e giocondo.
[/supersaibal]
io mi sono trovato in situazioni abbastanza particolari dove avevo una tabella che non aveva una chiave primaria e usava 6 valori per indentificare in maniera UNIVOCA una riga ... (la tabella non è mia) ... non è che ci sono molte altre scelte ... dipende da quello che devi fare usare o meno una chiave primaria e come usarla ... molti neanche gradiscono l'uso perenne delle chiavi primarie ... che deve starci per forza in ogni tabella altrimenti caput ...
dipende dalle situazioni il come scrivere ed il come strutturare la tabella ... e se c'è questo rischio ... siccome una volta fatto il tutto cambiare sarebbe una tragedia ... si fa prima
non so se mi spiego, non è che non è vero quello che hai riportato, ma è tutta teoria astratta, perché poi ci sono situazioni dove quelle diciture non possono per niente andare applicate, e una è questa ad esempio ...
metti che ho una tabella dove tengo dei documenti protocollati quindi DEVO avere una codice di protocollo che mi identifica il documento ... ovvero devo aveer una chiave primaria ... i codici di protocollo variano, ma non mi è mai capitato di vedere un numero che si incrementa e basta ... e quindi hai 2 alternative ... o usi 2 campi o ne usi 1 ... però dipende da quello che devi fare ... xche se usi 1 campi e i 4 valori più significativi li affibbi ad es all'anno ... avrai quindi 6 valori che rimangono ... ovvero 999999 documenti protocollabili ... dipende chi ci lavora e chi fa cosa ... la situazione potrebbe anche non reggere ... oltre al fatto che in ogni cosa il sistema di protocollazione deve seguire quello applicato su carta ... e al comune di licata ad esempio facevano anno, mese, e numero progressivo ... e avevano un ambaradan di roba ...
dipende poi sempre TUTTO dalla situazione nella quale si ci trova ... se si possono rispettare e seguire quelle regole senza dubbio, io in primis, quando faccio le tabelle, la chiave primaria è sempre un ID numerico auto-increment ... ma ci sono situazioni dove questo non va bene e si deve cambiare