Analise o comando de criação da tabela teste, com cinco con...
create table teste ( a int null, b varchar (40) not null, c int, constraint pk_a primary key (a), constraint fk_a_c foreign key (c) references teste, constraint uq_b unique (b), constraint up_c unique (c), constraint ch_1 check ( a >= 0.5 * c ) )
Assinale a constraint desse script que seria rejeitada no MS SQL Server.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: A - A primeira.
A questão aborda o tema de constraints (restrições) em uma tabela de banco de dados no SQL Server. As constraints são regras aplicadas aos dados nas tabelas para garantir a integridade, a unicidade, e outros aspectos importantes do gerenciamento de dados. Vamos entender cada uma das constraints mencionadas no comando de criação da tabela teste:
- PRIMARY KEY (pk_a): Define a coluna a como chave primária da tabela, o que significa que os valores nesta coluna devem ser únicos e não nulos.
- FOREIGN KEY (fk_a_c): Define uma relação de chave estrangeira na coluna c, associando-a a outra tabela. No caso do comando, indica que c deve referenciar a própria tabela teste, o que é incomum e geralmente não é uma prática aceita.
- UNIQUE (uq_b e up_c): Define que os valores nas colunas b e c devem ser únicos na tabela, respectivamente.
- CHECK (ch_1): Define uma regra de validação para os dados inseridos, no caso, que o valor na coluna a deve ser maior ou igual a metade do valor na coluna c.
O motivo pelo qual a primeira constraint, a de chave primária, seria rejeitada é que ela está definida para a coluna a, que foi declarada como NULL. Uma chave primária não pode conter valores nulos, pois cada registro na tabela necessita ter um valor único e identificável na coluna da chave primária.
Portanto, é fundamental que um candidato a concurso público com foco em Banco de Dados e SQL Server compreenda as regras e limitações das constraints para poder criar tabelas corretamente e garantir a integridade dos dados dentro do banco de dados.
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
Uma vez que um atributo chave não pode ser null, não
será possível que a primeira constraint seja validada.
Todos os comandos de criação das constraints estão bem formados, não há nenhum tipo de erro de sintaxe.
O erro da questão reside no fato de que a chave primária está sendo definida no campo a, ao mesmo tempo em que o campo a é definido como null, ou seja, que pode aceitar valores nulos.
Assim há uma inconsistência nesse código, já que nenhuma chave primária pode assumir valores nulos.
A primeira constraint é a que contém o erro.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo