São estratégias para mapear herança em um banco de dados re...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - Tabela por chave primária.
Vamos dissecar o tema e entender por que essa é a alternativa correta. O assunto em questão trata do mapeamento de herança em bancos de dados relacionais. Este é um conceito importante vindo da programação orientada a objetos que precisa ser adaptado quando estamos persistindo dados em um banco de dados relacional, uma vez que bancos de dados relacionais não suportam herança de maneira direta.
Existem várias estratégias para representar herança em um banco de dados relacional. Vamos destacar rapidamente as estratégias mencionadas que são válidas:
- Tabela por hierarquia: Também conhecida como "tabela única", essa estratégia armazena todas as classes de uma hierarquia de herança em uma única tabela. A tabela terá colunas para todos os campos de todas as classes na hierarquia, com registros que não utilizam certos campos deixando-os nulos.
- Tabela por classe: Cada classe na hierarquia de herança tem sua própria tabela. Somente os atributos exclusivos da classe são armazenados em cada tabela, e há uma necessidade de juntar tabelas (JOIN) para reconstruir a hierarquia completa.
- Tabela por classe concreta: Apenas as classes concretas (não abstratas) têm tabelas, e cada tabela contém as colunas para os campos da classe concreta e todas as suas superclasses. Não há tabelas para classes abstratas nesta abordagem.
Agora, para a alternativa Tabela por chave primária, é importante entender que este não é um método reconhecido de mapeamento de herança. Chaves primárias são um conceito fundamental em bancos de dados relacionais, usadas para identificar unicamente cada registro em uma tabela. Embora as chaves primárias sejam um componente crítico do design do banco de dados, elas não são uma estratégia de mapeamento de herança por si só.
Na prática, o mapeamento de herança em bancos de dados relacionais precisa abordar como classes diferentes numa hierarquia de herança serão representadas em tabelas e como seus relacionamentos e atributos serão mantidos. A alternativa B não se encaixa nessas preocupações, tornando-se a resposta correta já que a questão pede qual das estratégias não é utilizada para mapear herança em um banco de dados relacional.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
B
Existem fundamentalmente três estratégias para mapear herança em um banco de dados relacional, exemplificado pela Figura 1.
- Uma tabela por hierarquia: Mapear toda a hierarquia de classes para uma tabela, onde todos os atributos das classes da hierarquia são armazenados nesta única tabela. A desvantagem desta estratégia é que toda vez que um objeto da hierarquia for persistido no banco, é necessário persistir também os valores das demais classes vazios, causando uma grande quantidade de campos inutilizados. Entretanto o acesso ao banco para a manipulação dos dados é mais rápido, uma vez que todos os dados estão em somente uma tabela. É adicionada uma coluna (Object Type) na tabela que referência qual o tipo do objeto, ou seja, de qual classe aqueles dados pertencem;
- Uma tabela por classe concreta: Cada classe concreta mapeada reflete uma tabela com todos os atributos herdados das super classes abstratas. A vantagem desta estratégia é a facilidade de manipulação de dados, uma vez que todos os dados de cada classe estão em apenas uma única tabela. Como desvantagem, destaca-se que quando se modifica uma classe abstrata, é necessário modificar todas as tabelas geradas pelas classes filhas no modelo relacional;
- Uma tabela por classe: Cada hierárquica mapeada reflete uma tabela, relacionadas através do mecanismo de especialização padrão do banco de dados relacional (utilização de chaves estrangeiras). Segunda esta modalidade de mapeamento, tenta-se ao máximo manter a normalização de dados, de forma que a estrutura final das tabelas fica bastante parecida com a hierarquia das classes representada na UML. Esta é a técnica que mais naturalmente mapeia objetos para banco de dados relacionais
FONT:IFSUL
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo