ISBN-Nummern werden als Primärschlüssel verwendet, jetzt habe ich nicht-Buch Dinge an die DB hinzufügen möchten - sollte ich migrieren EAN?

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

Frage

baute ich eine Inventardatenbank, in ISBN-Nummern sind die Primärschlüssel für die Elemente. Dies funktionierte großartig für eine Weile wie die Elemente Bücher waren. Nun will ich nicht Bücher hinzuzufügen. einige der nicht-Bücher haben EANs oder ISSNs, manche nicht.

Es ist in PostgreSQL mit django Apps für das Frontend und JSON api, und ein paar Stütz Python Kommandozeilen-Tools für das Management. die Elemente in Frage sind meist Bücher und Künstler druckt, von denen einige selbst veröffentlicht sind.

Was ist schön über die Verwendung von ISBN-Nummern als Primärschlüssel ist, dass in oben auf relationalen Integrität, Sie viele praktische Dienstprogramme erhalten für ISBNs Validierung automatisch aufzublicken fehlende oder zusätzliche Informationen zu den Buchpositionen, und so weiter, von denen ich viele‘ ve übervorteilt. einige solcher Werkzeuge sind off-the-shelf (PyISBN, PyAWS etc.) und einige sind von Hand gerollt - Ich habe versucht, alle diese Teile schön zu halten und entkoppelt, aber Sie wissen, wie die Dinge bekommen

.

Ich konnte nicht alles online über ‚privates ISBNs‘ gefunden oder ‚selbst zugewiesene ISBN-Nummern‘, aber das ist das, was ich dabei interessiert war. Ich bezweifle, dass das, was ich setze sich auf, da es bereits ein scheinbarer Lauf auf ISBN-Nummern.

soll ich umrüsten alles für EAN-Nummern oder ISBN-Nummern als Primärschlüssel in der Regel wandert ab? wenn jemand Erfahrung mit der Arbeit mit diesen Systemen hat, würde ich gerne davon hören, Ihre Beratung ist sehr willkommen.

War es hilfreich?

Lösung

Wenn Sie ISBN-10 verwenden, dann sollten Sie auf jeden Fall etwas anderes migrieren, wie die bereits veraltet sind. Sie können ganz einfach ISBN-10 nehmen und sie in ISBN-13s drehen (siehe wikipedia ), die ich denke, sind EAN-kompatibel (siehe wiederum wikipedia ), aber wie the_lotus schon sagt, ist es wahrscheinlich besser eine Art von automatischer Erhöhung integer zu haben, ohne externe Bedeutung als Primärschlüssel und dann Index auf der EAN / ISBN / etc.

Andere Tipps

Ich weiß nicht, Postgres, aber normalerweise würde ISBM ein eindeutiger Index Schlüssel sein, aber nicht die primäre. Es ist besser, eine ganze Zahl als Primär- / Fremdschlüssel zu haben. Auf diese Weise brauchen Sie nur ein neues Feld EAN / ISSN als nullable hinzuzufügen.

Ich bin mit the_lotus, nicht zuletzt, weil ISBN eine schlechte Wahl für Primärschlüssel ist

Daten wiesen, es kann nicht eindeutig genug sein. Wenn gruppiert, es ist ziemlich breit und nicht-numerische

Beispiel

Eine einfache Lösung (obwohl wohl, ob gut) nutzen würde (ISBN-Nummer, Titel) oder (ISBN-Nummer, Autor), das sollte ziemlich garantieren Einzigartigkeit. Ideology ist groß, aber Praktikabilität dient auch einen Zweck.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top