Titolo: Scelta della chiave primaria
Categoria: Tecniche |
|
Ultimo Aggiornamento: 21/07/05 |
Un punto critico nell'ideare lo schema concettuale di un database è la scelta degli attributi caratteristici dei set di entità che sono in definitiva le tabelle. Un attributo o un insieme di attributi i cui valori identifichino in modo univoco ogni entità del set (record) è chiamato chiave.
In linea di principio ogni tabella dovrebbe avere una chiave, in modo che ogni record sia distinguibile dall'altro.Anche se il mondo reale offre a volte delle chiavi naturali, in molti casi è preferibile usare un dato a parte che non possa cambiare per nessun motivo: i programmatori 4D hanno a disposizione per tale fine la funzione
Sequence number che genera un numero univoco per ogni record creato per ogni tabella.
D'altro canto l'uso di Sequence number ha degli svantaggi da considerare,
dovuti proprio alla propria unicità e al legame diretto con la struttura.
Per esempio:
- in caso di danneggiamento del file dati, quando l'unica soluzione è
esportare i dati e ricrearli in un nuovo file;
- in caso di esportazione/importazione di dati per il passaggio ad una
nuova versione (vedi la faq
Rapido Trasferimento Dati);
- unione dei dati provenienti da strutture distinte, anche se uguali.
Per ovviare a questi inconvenienti è meglio usare dei contatori creati in
proprio. Ecco un esempio in cui la tabella [MieiContatori] ha un campo per
ogni contatore che voglio tenere:
C_POINTER($1;$PuntaAlCampo)
C_LONGINT($0)
$PuntaAlCampo:= $1
READ WRITE([MieiContatori])
If (
Records in table([MieiContatori])=0)
CREATE RECORD([MieiContatori])
SAVE RECORD([MieiContatori])
End ifALL RECORDS([MieiContatori])
While (
Locked([MieiContatori])) ` controllo se è bloccato
DELAY PROCESS(Current process;10)
LOAD RECORD([MieiContatori])
End while $PuntaAlCampo-> := $PuntaAlCampo->+1
$0 := $PuntaAlCampo->
SAVE RECORD([MieiContatori])
UNLOAD RECORD([MieiContatori])
READ ONLY([MieiContatori])
Inviato da: PierPaolo Sichera |
|
Visite: 19603 |
Se accedi con utente e password, puoi aggiungere dei commenti.