I codici ISBN vengono utilizzati come chiave primaria, ora voglio aggiungere cose non-book al DB - dovrei migrare a EAN?

StackOverflow https://stackoverflow.com/questions/2610000

Domanda

I costruito un database di inventario in cui ISBN numeri sono le chiavi primarie per le voci. Questo ha funzionato grande per un po 'come gli elementi sono stati libri. Ora voglio aggiungere i non-libri. alcuni dei non-libri hanno EAN o ISSN, altri no.

E 'in PostgreSQL con Django applicazioni per il frontend e JSON api, oltre a un paio di strumenti a linea di comando python di supporto per la gestione. i prodotti in questione sono per lo più libri e stampe d'artista, alcuni dei quali sono auto-pubblicato.

Quello che è bello sull'utilizzo di codici ISBN come chiavi primarie è che in sulla cima di integrità relazionale, si ottiene un sacco di utilities per la convalida dei codici ISBN, automaticamente cercare ulteriori informazioni mancanti o sulle voci del libro, eccetera, molti dei quali io' ve approfittato. alcuni di questi strumenti sono off-the-shelf (PyISBN, PyAWS ecc) e alcuni sono arrotolato a mano - ho cercato di mantenere tutte queste parti bello e disaccoppiati, ma si sa come le cose possono ottenere

.

non ho potuto trovare qualsiasi cosa online su 'codici ISBN private' o 'codici ISBN auto-assegnato' ma questo è il genere di cose che mi interessava fare. Dubito che è quello che mi accontento su, dato che c'è già una corsa apparente sulla ISBN numeri.

dovrei riorganizzare tutto per i numeri EAN, o migrare fuori ISBNs come chiavi primarie in generale? se qualcuno ha qualche esperienza con il lavoro con questi sistemi, mi piacerebbe sentire su di esso, il tuo consiglio è il benvenuto.

È stato utile?

Soluzione

Se stai usando ISBN-10, allora sicuramente dovrebbe migrare verso qualcosa d'altro, come quelli sono già deprecato. Si può facilmente prendere ISBN-10 e li trasformano in ISBN-13s (vedi wikipedia ), che Penso che sono compatibili-EAN (ancora una volta, vedi wikipedia ), ma come the_lotus suggerisce, è probabilmente meglio avere una sorta di numero intero incremento automatico senza alcun significato esterno come la chiave primaria e quindi indice sul EAN / ISBN / etc.

Altri suggerimenti

Non so Postgres ma normalmente ISBM sarebbe una chiave indice univoco, ma non il primario. E 'meglio avere un intero come chiave primaria / estero. In questo modo si solo bisogno di aggiungere un nuovo campo EAN / ISSN come annullabile.

Sono d'accordo con the_lotus, anche perché ISBN è una buona scelta per la chiave primaria

Dati saggio, potrebbe non essere sufficiente unico. Se cluster, è abbastanza ampia e non numerici

Esempio

Una soluzione semplice (anche se forse se buono) sarebbe quella di utilizzare (ISBN, titolo) o (ISBN, autore) che dovrebbe garantire praticamente unicità. L'ideologia è grande, ma la praticità serve anche uno scopo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top