Stiamo ristrutturando il nostro intero sistema di database / filesystem / identità utente. Come primo passo, abbiamo stabilito che dobbiamo assegnare ciascun utente / dipendente in un ID univoco dell'organizzazione. Sorprendentemente, non sembrano esserci risorse teoriche per questo problema.
Mi chiedo se ci siano alcune raccomandazioni per progettare un sistema del genere. Ho studiato alcuni schemi di identificazione, ma nessuno di questi sembra essere pratico in questo caso. In particolare, UID o sistemi come ISBN non sono pratici perché i codici sono molto lunghi per le persone da ricordare o comunicare. Ho esaminato il sistema storia del CODEN per l'assegnazione degli ID del diario ed è molto stimolante, ma preferirei evitare i problemi hanno attraversato storicamente (cambiando sistema due volte lungo la strada).
Proprietà desiderate del sistema
Nel mio caso, ho circa 10.000 persone. Il sistema dovrebbe (probabilmente) avere queste proprietà:
- Unicità di IDS
- Gli ID dovrebbero essere facilmente comunicati e ricordati (vale a dire non troppo a lungo ecc.)
- Facoltativamente il sistema dovrebbe rilevare errori comuni nell'ID se non lo corregge.
Ho preso in considerazione
Ho preso in considerazione l'inclusione di una sorta di iniziali dai nomi e una breve analisi mostra quanto segue:
- Usando le iniziali (1 carattere dal nome specificato, 1 dal cognome) Ho diviso le persone in gruppi con il più grande con 165 membri (J.K.)
- Prendendo 1,2 primi caratteri (1 dal nome dato, 2 dal cognome) ottengo il gruppo più grande di 49 membri.
- Se prendo 1,3 primo carattere ottengo il gruppo più grande di 18, che è meglio che prendere 2,2 primi caratteri dai nomi in cui ottengo 39 persone nel gruppo più grande.
Considero anche di aggiungere un carattere di checksum come in CODEN che preferibilmente non solo evita errori, ma rende anche possibile la correzione automatica nella maggior parte dei casi.
Ho anche dato un'occhiata ai Codici più che hanno una grande idea di NON usare alcuni caratteri (come 0, I , ecc.) che possono essere facilmente scambiati per altri. Ma questo si scontrerebbe con l'intenzione di includere le iniziali di qualche tipo.
Riguardo agli "errori di cattura" ho trovato un articolo su Verifica cifra che suggerisce anche l'algoritmo Damm che tuttavia riguarda solo il caso se vengono utilizzati i codici numerici. Potrei essere in grado di costruire un sistema simile per il pensiero delle lettere.
PS: ho cercato i siti SE e inizialmente ho chiesto questo domanda su SuperUser, ma è stata rifiutata come off-topic. Sto cercando di trovare il posto giusto per chiederlo, ma non sembra ovvio.