+m2+ ha scritto:
... dall'esperienza di chi fa il progetto...
No, l'esperienza di chi fa il progetto non c'entra nulla.
Vi sono entità da rappresentare in determinati contesti dove non è possibile ricavare sempre una chiave parlante, altri dove invece la chiave può non essere ottimale o diventare troppo lunga, altri ancora dove - volendo proprio forzarne l'uso - allora è necessario prevedere un codice univoco, tipo un protocollo, che qualcuno deve prodigarsi a inserire, che sia lo sviluppatore o l'utente/amministratore, ed è comunque un "effort".
Diciamo che in certi casi (spesso la maggior parte addirittura) è proprio impossibile, altro che mal di pancia, se non scrivendo veri e propri programmi di importazione-esportazione.
Diciamo che facendo questa operatività quasi tutti i giorni, sicuramente non è impossibile.
Essendo poi che, tranne un paio di volte in trent'anni non ho mai avuto bisogno di scrivere software di import/export particolari, escluderei anche che si tratti della maggior parte: è sufficiente usare ciò che mette a disposizione il database di riferimento, o in certi casi gli stessi tool di amministrazione dei DB e anche i linguaggi, e nell'Anno Domini 2020 tutti questi strumenti sono *perfettamente* in grado di svolgere tali compiti in totale autonomia e con poco sforzo, se si usano correttamente (e si sanno usare), con caratteristiche anche molto avanzate e disponibili "out of the box", come si suol dire.
In ogni caso, si può sempre fare uso di una chiave aggiuntiva "parlante" per identificare o meno la presenza di un record e per riferirsi a esso, ignorando il valore dell'ID all'occorrenza e usandolo solo per le correlazioni.
Complessità del tutto inutile
"Complessità del tutto inutile" un paio di ciufoli, visto che si tratta banalmente di una chiave, niente di trascendentale.
E tutto dipende come sempre dallo scenario e dai dati che si deve manipolare: assolutismi in campo informatico sono generalmente rari se non unici.
Ben più di una volta può accadere che la correlazione tramite una chiave autogenerata e numerica al posto di una chiave "parlante" velocizzasse drasticamente le operazioni di interrogazione delle tabella correlate in presenza di molti dati, questo durante l'uso regolare del software da parte degli utenti, nonostante la presenza della chiave "parlante" tornasse comunque utile nelle fasi di manutenzione dove, eseguendo operazioni massive, ci si può attendere tempi leggermente più lunghi.
La presenza dell'una non esclude l'altra, e l'uso dell'una può essere preferibile all'altra, e viceversa, a seconda dell'obiettivo da raggiungere, dei dati che vengono manipolati, dei requisiti in termini di tempistiche di esecuzione a seconda dello scenario, da cui non si può prescindere.
Mah, in realtà no, non è che vengano scelti per questi motivi.
Ok, allora se oltre alla loro universalità, trasferibilità e generabilità lato client, conosci altri motivi per cui usare un GUID, fammi sapere che magari imparo qualcosa di nuovo, perché io personalmente non ne conosco altri.
Comunque nulla vieta, ed è generalmente la strategia che prediligo, di usare chiavi UUID "parlanti" semplicemente giustapposti, da mantenere i più semplici possibili, AZIE1qualcosa ad esempio, piuttosto che TD04qualcosa e così via
Nulla lo vieta, così come nulla vita che questi identificativi vengano generati automaticamente lato DB, poiché a seconda della realtà che si va a modellare non sempre è possibile produrre un "codice/protocollo" per qualsiasi record si vada a inserire, che lo faccia lo sviluppatore o l'utente, e comunque produrlo è uno sforzo, e non vedo perché dovrei lambiccarmi per inserirlo quando il DB mi offre questa opportunità.
Se serve ed è utile, lo faccio, altrimenti lascio perdere.
In caso contrario, verrebbe da chiedere perché qualsiasi database, nessuno escluso, anche il più "scrauso" offre il supporto a contatori, identity, generatori di GUID (anche sequenziali) e tipi di dati analoghi se non esistesse alcun scenario in cui torna utile farne uso: questi ingegneri software devono essere impazziti a voler continuare a usare, supportare e ampliare questi strumenti quando una "chiave parlante" è più che sufficiente, ed è apparentemente ottima per tutte le stagioni senza distinzioni. Mmm...