Una chiave primaria è un campo che identifica un record di una tabella in maniere univoca, e deve essere:

  • non vuoto
  • unico

Ovviamente può essere usato per le relazioni (anzi, è molto probabile che lo sia), quindi è bene che sia anche indicizzato.


E per definizione, deve essere assegnato automaticamente dal sistema e non visibile all'utente.


Certo, per identificare un record possiamo anche usare dei dati "quasi" unici, come ad esempio il codice fiscale di una persona o la targa di una macchina, ma quel "quasi", in un Database, fa tutta la differenza del mondo (e comunque non mette al riparo dall'errore umano in fase di inserimento/modifica).

Nel corso degli anni, gli strumenti che FileMaker ci mette a disposizione sono cambiati profondamente. Vediamo quindi che tipo di chiavi primarie possono essere usate in FileMaker.

La tradizione: un campo numerico indicizzato con un numero di serie progressivo. 

È la soluzione utilizzata dalla maggior parte dei non sviluppatori, perché è la più immediata e tradizionale (FileMaker stesso la mette come opzione nella definizione di campo). Il problema principale di questo approccio risiede nella coerenza dei numeri di serie fra sistemi diversi, in caso di sincronizzazione tra diversi dispositivi e/o importazione di dati da altre versioni. Un altro effetto indesiderato classico è la possibile confusione fra tabelle diverse ma simili ("aspetta, il cliente 1121 è diverso dal fornitore 1121?!") e la maggior difficoltà nelle procedure di duplicazione di record che abbiano record correlati in altre tabelle.

L'evoluzione mobile: get(idUU)

Con l’avvento dei database su dispositivi mobili è sorta la necessità di un identificativo unico universale, ovvero una chiave che possa essere univoca anche fra versioni diverse del database. FileMaker quindi propone la funzione get(idUU), che restituisce una stringa di testo di 36 caratteri (ad esempio 4F7D3AB3-FA62-48DC-A0FE-360F1CF168D5 ).

Lo svantaggio di questa soluzione è che risulta meno leggibile rispetto al numero di serie e necessita di un campo di testo.

Il vantaggio è che il valore è unico anche fra i record di tabelle differenti, cosa che riduce la possibilità di errori. Un altro vantaggio è che è possibile creare nuove chiavi direttamente dal motore di calcolo, cosa che semplifica molto le procedure di duplicazione record con annesse tabelle correlate.

Filemaker 17 introduce una funzione che restituisce un identificativo univoco solo numerico, che quindi può essere utilizzato anche nei campi numero: Get ( NumeroIDUU ). FileMaker 17 ha pensato anche allo sviluppatore “distratto”, proponendo automaticamente una serie di campi in ogni nuova tabella, fra cui un campo ID con calcolo proposto con Get(IDUU).

Gli ID nativi

Oltre a quello che può gestire l’utente (la chiave primaria comunque è facoltativa, anche se dovrebbe sempre essere utilizzata), FileMaker ovviamente utilizza anche dei criteri propri per identificare un record specifico. Ogni oggetto in FileMaker ha un suo identificativo specifico: quello dei singoli record di ciascuna tabella può essere ricavato mediante la funzione Get(idRecord), che restituisce un numero che rappresenta il numero del record in ordine di creazione dal primo utilizzo del DB (o dal primo utilizzo da un clone). Avere un campo con questa funzione è fondamentale quando si utilizzano le API, siano le DataAPI introdotte con FileMaker 17 che le API PHP, XML o le API REST di terze parti, che si basano esclusivamente sull’ID nativo di FileMaker per identificare un record.

Cosa utilizzare, quindi?

L’opzione  che garantisce più flessibilità è l’utilizzo di get(idUU), in combinazione con un campo con get(idrecord).

L'introduzione del DataMigrationTool indica chiaramente l’orientamento di Claris sulla gestione delle chiavi primarie: DMT cerca per prima cosa come chiave primaria un campo che abbia come inserimento automatico get(idUU), che sia unico, indicizzato e non modificabile successivamente: quindi tutto secondo manuale, anche se l'ultima condizione è un qualcosa che può essere molto fastidioso e limitante a livello di sviluppo e manutenzione.

e tu che chiavi primaria usi? perché tu usi le chiavi primarie, vero?

Giulio Villani

Utilizza FileMaker dalla versione 2 (A.D. 1993), per sviluppare idee e soluzioni, e risolvere problemi. Membro della Filemaker Business Alliance, sviluppatore Certificato FileMaker su tuttele versioni a partire dalla 11, FileMaker Certified Trainer, si occupa di formazione, consulenza, sviluppo di soluzioni, con qualche incursione nell’editoria. Oltre a “Sviluppo FileMaker consapevole”, è autore di “FileMaker Pro 9 La Grande Guida” e di “FileMaker Pro 10 La Grande Guida”, entrambi editi da Mondadori Informatica, di articoli e di recensioni sulle principali riviste italiane del settore. Utilizza – con sentimenti ambivalenti – anche PHP, JavaScript, CSS/HTML, MySQL e NoSQL. Feroce capacità di analisi e problem solving.

Lascia un commento

Prendi la corsia preferenziale e risolvi i tuoi problemi di sviluppo FileMaker!

Risorse gratuite

Guru Corner

Altri articoli di Giulio Villani

Altri articoli:

Ultimi articoli

Fatturazione elettronica, ancora tu?

Ancora tu ? Tornare a parlare di fatturazione elettronica muove umori profondi. Da una parte l’imbarazzo di ritornare su sentieri già percorsi, dall’altra un languore

Leggi...

FileMaker 19.5: avanti tutta

È da pochi giorni disponibile la nuova versione di FileMaker 19, la 19.5. Nonostante la numerazione suggerisca un aggiornamento "minore", questa versione apporta numerosi miglioramenti

Leggi...

Chiavi primarie in FileMaker

Una chiave primaria è un campo che identifica un record di una tabella in maniere univoca, e deve essere: non vuoto unico Ovviamente può essere

Leggi...