Los ISBN se utilizan como clave primaria, ahora quiero añadir cosas que no son libros con el PP - debería migrar a EAN?

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

Pregunta

I construyó una base de datos de inventario, donde ISBN números son las claves principales para los artículos. Esto funcionó muy bien durante un tiempo ya que los artículos eran los libros. Ahora quiero añadir que no son libros. algunos de los que no tienen libros EAN o ISSN, algunos no lo hacen.

Es en PostgreSQL con Django aplicaciones para el frontend y API JSON, además de algunas herramientas de línea de comandos de apoyo para la gestión de pitón. los productos en cuestión son en su mayoría libros y grabados de artistas, algunos de los cuales son de auto-publicación.

Lo que es agradable sobre el uso de los números ISBN como claves principales es que en en la parte superior de la integridad relacional, se obtiene una gran cantidad de utilidades prácticas para la validación de los ISBN, automáticamente mirando hacia arriba faltante o información adicional sobre los artículos de libros, etcétera, muchos de los cuales' ve aprovechado. algunas de estas herramientas son off-the-shelf (PyISBN, PyAWS etc) y algunos son enrollados a mano - Traté de mantener todas estas partes agradable y desacoplado, pero saben cómo las cosas pueden llegar

.

No pudo encontrar nada en línea acerca de los ISBN privadas '' o 'Los ISBN autoasignadas' pero esa es la clase de cosa que yo estaba interesado en hacer. Dudo que eso es lo que me conformo en adelante, puesto que ya es una aparente corrida de ISBN de números.

debería rediseñar todo para números EAN, o migrar fuera de los ISBN como claves primarias en general? si alguien tiene alguna experiencia con el trabajo con estos sistemas, me encantaría oír hablar de eso, su consejo, es muy positivo.

¿Fue útil?

Solución

Si está utilizando ISBN-10, entonces definitivamente debe migrar a otra cosa, como los que ya están en desuso. Fácilmente puede tomar ISBN-10 y convertirlos en ISBN-13 (ver Wikipedia ), que Creo que son compatibles-EAN (de nuevo, ver Wikipedia ), sino como the_lotus indica, es probable mejor tener algún tipo de número entero de incremento automático sin sentido externo como la clave principal y luego en el índice de EAN / ISBN / etc.

Otros consejos

No sé postgres pero normalmente ISBM sería una clave de índice único, pero no el principal. Es mejor tener un entero como clave primaria / extranjera. De esa manera usted sólo tiene que añadir un nuevo campo EAN / ISSN como anulable.

Estoy de acuerdo con the_lotus, entre otras cosas porque ISBN es una mala elección para la clave principal

Los datos sabia, puede que no sea lo suficientemente único. Si agrupada, es bastante amplia y no numérico

Ejemplo

Una solución simple (aunque posiblemente sea bueno) sería el uso de (ISBN, título) o (ISBN, autor), que debe garantizar la unicidad o menos. La ideología es grande, pero la practicidad también sirve a un propósito.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top