Sont utilisés comme numéros ISBN clé primaire, maintenant je veux ajouter des choses non-livre à la DB - devrais-je migrer vers EAN?

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

Question

Je construit une base de données d'inventaire où les numéros ISBN sont les clés primaires pour les éléments. Cela a très bien fonctionné pendant un certain temps que les articles étaient des livres. Maintenant, je veux ajouter non-livres. quelques-uns des non-livres ont ou EAN ISSN, certains ne le font pas.

Il est dans PostgreSQL avec les applications django pour le frontend et JSON api, ainsi que quelques outils de ligne de commande python soutien pour la gestion. les articles en question sont pour la plupart des livres et estampes d'artistes, dont certains sont auto-édité.

Ce qui est bien sur l'utilisation de numéros ISBN comme clés primaires est que sur l'intégrité relationnelle, vous obtenez beaucoup d'utilitaires pratiques pour valider les numéros ISBN, recherche automatiquement les informations manquantes ou supplémentaires sur lesquelles les articles du livre, etc., beaucoup de I » ai profité. certains de ces outils sont impromptu (PyISBN, PyAWS etc.) et certains sont roulés à la main - j'essayé de garder toutes ces pièces agréable et découplées, mais vous savez comment les choses peuvent obtenir

.

Je ne pouvais pas trouver quoi que ce soit en ligne sur « privé » ou un numéro ISBN « auto-numéros ISBN attribués », mais c'est le genre de chose que je me suis intéressé à faire. Je doute que ce soit ce que je vais régler sur, car il existe déjà une course apparente sur les numéros ISBN.

dois-je rééquiper tout pour les numéros EAN ou migrer hors clés primaires comme les numéros ISBN en général? si quelqu'un a une expérience de travail avec ces systèmes, j'aimerais entendre à ce sujet, votre avis est le bienvenu.

Était-ce utile?

La solution

Si vous utilisez ISBN-10s, vous devez alors migrer à autre chose, comme ceux-ci sont déjà dépréciée. Vous pouvez facilement prendre ISBN-10s et les transformer en ISBN-13s (voir wikipedia ), qui Je pense que sont EAN-compatibles (encore une fois, voir wikipedia ), mais comme the_lotus suggère, il est probablement mieux d'avoir une sorte d'entier auto-incrémentée sans signification externe comme la clé primaire et index sur l'EAN / ISBN / etc.

Autres conseils

Je ne sais pas, mais postgres normalement MIES serait une clé d'index unique, mais pas le primaire. Il est préférable d'avoir un entier comme clé primaire / étrangère. De cette façon, il vous suffit d'ajouter un nouveau champ EAN / ISSN comme annulable.

Je suis d'accord avec the_lotus, notamment parce ISBN est un mauvais choix pour la clé primaire

sage données, il ne peut pas être assez unique. Si cluster, il est assez large et non numérique

Exemple

Une solution simple (bien que sans doute si bon) serait d'utiliser (isbn, titre) ou (isbn, auteur) qui devrait à peu près de l'unicité de la garantie. Idéologie est grande mais pratique sert aussi un but.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top