Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

DÚVIDAS NA CRIAÇÃO DE TABELA

Olá! Segue abaixo o exercício dado em aula (1), o código gabarito (2) e o meu código (3):

1)

Criar tabela de nome TABELA DE VENDEDORES

O vendedor tem como chave o número interno da matrícula (nome do campo MATRICULA), que deve ser uma string de 5 posições.

O nome do vendedor (nome do campo NOME) deve ser uma string de 100 posições.

Percentual de comissão (nome do campo PERCENTUAL COMISSÃO) representa o percentual de comissão que o vendedor ganha sobre cada venda.

2)

CREATE TABLE [TABELA DE VENDEDORES] ( [MATRICULA] varchar(5), [NOME] varchar(100), [PERCENTUAL COMISSÃO] float)

3)

CREATE TABLE [TABELA DE VENDEDORES] ( [MATRICULA] [INT] (5) , [NOME] [VARCHAR] (100) , [PERCENTUAL COMISSÃO]] [DECIMAL] (3))

Dúvidas:

A) Gostaria de saber se o quê eu fiz para Matrícula e Percentual Comissão faz sentido frente o exigido pelo exercício.

B) Qual a diferença estrutural entre o gabarito e minha resposta para Matrícula e Percentual Comissão??

2 respostas
solução!

Olá Thiago,

Sobre sua primeira dúvida: Até faria sentido mais não podemos especificar [MATRICULA] [INT] (5) porque o campo INT não tem entrada de tamanho, pelo fato que ele já tem uma tamanho definido, e esse tamanho no SQL Server é de -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647) e é armazenado em 4 bytes, e teríamos que especificar da seguinte forma: [MATRICULA] [INT], porém temos que analisar o cenário, no caso do exercício, funcionaria bem esse campo pois estamos usando apenas números, mas se caso esse campo for armazenar um valor alfanumérico não funcionará como o esperado. Já no campo [PERCENTUAL COMISSÃO]] [DECIMAL] (3), se você criar essa tabela no seu banco de dados, vai notar que o campo fica na realidade especificado como DECIMAL] (3,0), e nesse caso não vamos armazenar um valor com ponto fluente (por exemplo: 3.4599), pelo fato de que dessa forma determinando que o campo aceitará valores com 3 casas decimais entes do ponto e nenhuma casa depois do ponto, então dessa forma não vai atingir o objetivo do exercício, nesse caso se enquadra melhor o FLOAT.

Sobre a sua segunda dúvida, acho que você já deve ter percebido, a forma de especificar um campo do tipo INT não pode ser dessa forma que você está tentando, e também o decimal(3) também não vai funcionar como o esperado, porém a estrutura está quase toda correta, e até o DECIMAL poderia ser usado nessa abordagem, porém especificando as casas decimais, porém ainda ficaria com o limite de dígitos, por isso o FLOAT é a melhor escolha.

Espero que tenha ajudado!

Jonilson Sousa , muitíssimo obrigado! Foi muito bem explicado e esclarecedor!