Ir ao conteúdo
  • Cadastre-se

Herança no MySQL (Conceito)


Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

  • Moderador

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
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...