Isbn são usados como chave primária, agora eu quero adicionar um não-livro as coisas para o DB - devo migrar para o EAN?

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

Pergunta

Eu construído um banco de dados de inventário onde ISBN números são as chaves primárias para os itens.Isso funcionou muito bem por um tempo, como os itens eram os livros.Agora eu quero adicionar não-manuais.alguns dos não-livros têm o Aad ou Issn, alguns não.

É no PostgreSQL com o django apps para o frontend e JSON api, além de algumas apoio python ferramentas de linha de comando para o gerenciamento.os produtos em questão são principalmente livros e artista imprime, alguns dos quais são auto-publicado.

O que é agradável sobre o uso do Isbn como chaves primárias é que em cima da integridade relacional, você tem muitas utilidades práticas para a validação de ISBNs, automaticamente procurar em falta ou adicionais informações sobre o livro, itens, etc, etc, muitos dos quais eu tenho levado vantagem.algumas dessas ferramentas são off-the-shelf (PyISBN, PyAWS etc) e alguns são enrolados à mão -- eu tentei manter todas estas partes de nice e dissociadas, mas você sabe como as coisas podem ficar.

Eu não poderia encontrar qualquer coisa online sobre o 'privado Isbn' ou 'auto-atribuído Isbn' mas esse é o tipo de coisa que eu estava interessado em fazer.Eu duvido que que eu vou resolver, uma vez que já existe uma aparente executado em números de ISBN.

eu deveria reorganizar tudo para EAN números, ou migrar fora ISBNs como chaves primárias em geral?se alguém tiver alguma experiência com o trabalho com estes sistemas, eu adoraria ouvir sobre isso, o conselho é mais bem-vindo.

Foi útil?

Solução

Se você estiver usando ISBN-10, então você definitivamente deve migrar para outra coisa, como aqueles que já são obsoletos.Você pode facilmente levar ISBN-10 e transformá-los em ISBN-13s (ver taxas), que eu acho que são EAN-compatível (novamente, consulte taxas), mas como the_lotus sugere, é provavelmente melhor para ter algum tipo de auto-incremento inteiro com nenhuma fonte de significado como a chave primária e, em seguida, índice EAN/ISBN, etc.

Outras dicas

Eu não sei o postgres, mas normalmente ISBM seria uma chave de índice exclusivo, mas não é o principal.É melhor ter um número inteiro como primária/chave estrangeira.Dessa forma, você só precisa adicionar um novo campo EAN/ISSN como anulável.

Concordo com the_lotus, não menos importante, porque ISBN é uma má escolha para a chave primária

Dados sábio, ele não pode ser exclusivo o suficiente.Se agrupado, é bastante ampla e não-numéricos

Exemplo

Uma solução simples (embora sem dúvida seja bom) seria usar o (isbn,título) ou (isbn,autor), que deverá praticamente garante a exclusividade.Ideologia é grande, mas a praticidade também serve a um propósito.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top