Dúvidas dos Alunos: Ambiguidade em Tipos de Dados no Oracle

Neste artigo, vamos analisar uma questão polêmica sobre os tipos de dados NUMBER e INTEGER no Oracle, confira!

Por
3 min. de leitura

Olá Pessoal, vamos tratar mais um questionamento muito interessante dos nosso alunos.

Aluno: Professor, sobre a questão da prova SELECON – EMGEPRON de 2021 para o cargo de Analista de Sistemas (Auditoria), fiquei com uma dúvida. A questão pedia os tipos de dados suportados pelo Oracle para armazenar caracteres de tamanho variável e números inteiros. O gabarito oficial indicou a alternativa A como correta, mas percebi que a alternativa B também poderia estar certa, já que o Oracle aceita o tipo `INTEGER`. Poderia esclarecer isso?

Essa é uma dúvida bastante pertinente e que mostra o quão importante é o conhecimento profundo sobre os sistemas de banco de dados, especialmente em situações de concurso. Vamos analisar a questão em detalhe, baseando-nos na documentação oficial do Oracle Database 19c.

A questão mencionada pedia para identificar os tipos de dados que deveriam ser usados para armazenar caracteres de tamanho variável e números inteiros no Oracle. A alternativa A sugeria `VARCHAR2` para caracteres e `NUMBER` para inteiros, enquanto a alternativa B indicava `VARCHAR2` e `INTEGER`. O gabarito oficial apontou a alternativa A como correta.

Entendendo os Tipos de Dados no Oracle:

1. VARCHAR2: Este é o tipo de dado correto para armazenar caracteres de tamanho variável no Oracle. O `VARCHAR2` é amplamente utilizado porque permite armazenar cadeias de caracteres de tamanho variável, economizando espaço em disco, já que só ocupa o espaço necessário para os dados inseridos. Tanto a alternativa A quanto a B acertaram nesse ponto.

2. NUMBER: O `NUMBER` é o tipo de dado mais versátil e amplamente utilizado no Oracle para armazenar números, inclusive inteiros. Ele permite a definição de precisão e escala, oferecendo grande flexibilidade na representação de valores numéricos. Por ser o tipo de dado mais antigo e mais conhecido no Oracle, muitas vezes é a escolha padrão para armazenar qualquer tipo de número, inclusive inteiros.

3. INTEGER: O `INTEGER`, embora não seja um tipo nativo exclusivo do Oracle, é suportado e é, na verdade, um subtipo de `NUMBER`. Conforme a documentação oficial do Oracle Database 19c, o tipo `INTEGER` é utilizado especificamente para armazenar valores inteiros. Este tipo foi introduzido como parte do padrão ANSI SQL e, por isso, também é aceito pelo Oracle. 

Ambiguidade na Questão:

A principal questão aqui é que ambas as alternativas (A e B) estão tecnicamente corretas. O `NUMBER` pode ser utilizado para armazenar números inteiros, mas o `INTEGER` também é suportado pelo Oracle para esse fim. A ambiguidade surge porque a questão não especifica se estava buscando a resposta mais comum ou tradicional, ou se qualquer tipo aceito pelo Oracle seria considerado correto.

Decisão da Banca:

A escolha da alternativa A pela banca, com `NUMBER` como o tipo de dado correto para números inteiros, provavelmente se deve ao fato de que este é o tipo de dado mais antigo e mais frequentemente utilizado no Oracle. Desde as primeiras versões do Oracle, o `NUMBER` tem sido o tipo preferido para armazenar todos os tipos de números, o que pode ter levado a banca a considerá-lo como a resposta mais apropriada.

Justificativa da Alternativa B:

No entanto, sua observação sobre a alternativa B está absolutamente correta. Como o `INTEGER` é um subtipo de `NUMBER` e é aceito pelo Oracle, ele também é uma escolha válida para armazenar números inteiros. A documentação do Oracle confirma que `INTEGER` pode ser utilizado para este propósito, sendo uma opção que segue o padrão ANSI SQL, o que garante sua validade em diversos contextos.

Considerações sobre o Padrão ANSI SQL:

É importante destacar que o tipo `INTEGER` é definido pelo padrão ANSI SQL, que é um padrão internacional para sistemas de banco de dados relacionais. O Oracle, sendo um dos SGBDs (Sistemas de Gerenciamento de Banco de Dados) que aderem a este padrão, implementa o tipo `INTEGER` como um subtipo de `NUMBER`. Isso significa que, embora o Oracle tenha seus tipos nativos, ele também suporta tipos definidos por padrões amplamente aceitos, como o ANSI SQL.

Importância do Conhecimento Detalhado:

Essa situação evidencia a importância de um conhecimento detalhado e atualizado sobre os sistemas de banco de dados, especialmente quando se trata de concursos. Muitas vezes, os candidatos são testados não apenas no conhecimento básico, mas também na compreensão das nuances e variações que podem existir dentro de uma tecnologia específica.

Preparação para Situações Ambíguas:

Para se preparar para situações ambíguas como essa, é crucial que os candidatos estejam familiarizados com a documentação oficial e as práticas recomendadas para o uso dos tipos de dados em diferentes sistemas de banco de dados. Ter esse conhecimento pode ajudar a responder com confiança e até mesmo a questionar o gabarito quando necessário.

Entrando com Recurso:

Se você encontrar uma situação semelhante em uma prova de concurso, onde mais de uma resposta parece tecnicamente correta, considere entrar com um recurso. Utilize a documentação oficial, como a do Oracle Database 19c, para embasar sua argumentação. Isso demonstra não apenas seu conhecimento, mas também sua capacidade crítica em analisar questões complexas.

Conclusão:

A decisão da banca de selecionar a alternativa A provavelmente se baseou na tradição e no uso histórico do `NUMBER` no Oracle. No entanto, a alternativa B, com o uso de `INTEGER`, também está tecnicamente correta, conforme a documentação oficial e o suporte ao padrão ANSI SQL. 

Referência:

– Oracle Corporation. “Data Types.” In Oracle Database SQL Language Reference, 19c. Retrieved from https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483

Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
clique nos links abaixo:

Concursos Abertos

Concursos 2024

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
clique no link abaixo e inscreva-se gratuitamente:

Telegram

Por
3 min. de leitura