Ir ao conteúdo
  • Cadastre-se
caezar

Herança no MySQL (Conceito)

Recommended Posts

Pessoal estou com dificuldades para entender o conceito de herança (Especialização e Generalização) no SQL.


Tenho abaixo um exemplo de um BD de uma biblioteca. Pelo o que entendi lendo no caso as entidades Livros, Software, Filmes e Revistas herdam da entidade acervo, mas não consigo entender na pratica como funciona Herança em SQL.


Por exemplo, uma de minhas dúvidas é como saber através do código do acervo de que tipo é aquele item. É um Livro, Software, Filme ou Revista? Eu teria que fazer um select em cada uma das entidades com o código de acervo para ver em qual ele aparece?


 


 


 


Obrigado pela ajuda no aprendizado!


post-292044-0-06439700-1409683239_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Seria interessante você separar uma faixa de códigos para cada tipo de dado no acervo.

Por exemplo:

 

100xxxxxxxx são livros

200xxxxxxxx são filmes

300xxxxxxxx são programas

 

etc. 

 

Ou quem sabe você mantenha código único e crie um outro indentificador, um segundo atributo que identifique se é livro, filme, etc...

Esse outro atributo ficará na tabela acervo.

 

Ficará:

IDBIB: Int

Tipo: String

Quantidade: Int

 

Obs: A tabela Acervo só precisa ter 1 chave primária, se não me engano.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas dicas amigo, vou segui-las. Mas e quanto minhas duvidas de conceito, consegue me ajudar?

Talvez se você me der um exemplo de um select onde através de o numero do acervo eu descubro de que tipo ele é Livro, Software, Filme ou Revista, ajudaria!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Minha sugestão é que crie uma nova tabela chamada  Tipo.. contendo 2 campos:  ID (auto incrementado) e Nome(varchar) O nome recebe os valores: "livro", "software".. e etc

E na tabela acervo o Campo tipo sugerido pelo @Math.Pi deve ser do tipo  INT, sendo ela uma Chave estrangeira de ID da tabela tipo.

 A partir daí a consulta em si é simples.

 

Exemplo de consulta simples que retorna o tipo:

SELECT filmes.titulo,        software.nome,        livros.titulo,        revistas.titulo,       tipo.nome,FROM acervoINNER JOIN filmes ON filmes.IDBIB = acervo.IDBIBINNER JOIN software ON software.IDBIB = acervo.IDBIBINNER JOIN livros ON livros.IDBIB = acervo.IDBIBINNER JOIN revistas ON revistas.IDBIB = acervo.IDBIBINNER JOIN tipo ON tipo.IDBIB = acervo.tipo 

A consulta acima retornaria algo do tipo:

Nome                      Tipo------------------------+------------+Star wars ep 3          |Filme       +Windows 8               |Software    + Cronicas de gelo e fogo |Livro       +Guitarplayer            |Revista     +

veja que é apenas para exemplo. você deve estudar a consulta e adaptar para seu objetivo.. ou implementar para obter mais dados referentes  a cada produto.

Uma dica que dou é estudar sobre o uso do INNER JOIN  e  a suas tabelas serem do tipo innoDB

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×