Considere a estrutura em um banco de dados relacional Postg...

Próximas questões
Com base no mesmo assunto
Q2007243 Banco de Dados
Considere a estrutura em um banco de dados relacional PostgreSQL, em versão 9.6 a 13. A instituição de ensino ALFA quer evitar a duplicidade de códigos de curso. Na busca por uma solução, os comandos SQL foram executados em uma base de dados de testes nova, sem a existência de qualquer tabela.
Marque a alternativa com a sequência correta para restringir duplicidades e valores nulos na coluna código.
CREATE TABLE curso (
            id serial NOT NULL,             codigo varchar(30) NULL,             nome varchar(50) NOT NULL,             CONSTRAINT curso_pkey PRIMARY KEY (id)
);
I.    ALTER TABLE curso drop constraint curso_pkey; ALTER TABLE curso ADD CONSTRAINT curso_pkey PRIMARY KEY(id, codigo);
II.  ALTER TABLE curso ALTER COLUMN codigo SET NOT NULL;
III. ALTER TABLE curso SET CONSTRAINT codigo_unico UNIQUE (codigo);
IV. ALTER TABLE curso ADD CONSTRAINT codigo_unico UNIQUE (codigo);
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - II e IV

A questão aborda o conceito de restrição de integridade em bancos de dados, especificamente no PostgreSQL. As restrições de integridade são regras usadas para garantir a precisão e a consistência dos dados dentro de uma base de dados relacional. Duas restrições de integridade comumente usadas são a NOT NULL, que impede que um valor nulo seja inserido em uma coluna, e a UNIQUE, que garante que todos os valores em uma coluna sejam únicos, evitando duplicidades.

Para resolver a questão, é necessário conhecer o SQL para alteração de tabelas no PostgreSQL e como aplicar essas restrições de integridade. A questão pede que se restrinja duplicidades e valores nulos na coluna codigo. Vamos analisar as operações II e IV que compõem a alternativa correta:

II. ALTER TABLE curso ALTER COLUMN codigo SET NOT NULL;

Este comando modifica a coluna codigo para não aceitar valores nulos. Isso é necessário pois a questão requer que a coluna codigo não contenha valores nulos.

IV. ALTER TABLE curso ADD CONSTRAINT codigo_unico UNIQUE (codigo);

Este comando adiciona uma restrição de chave única na coluna codigo, garantindo que cada código de curso seja único na tabela. Isso resolve a questão da duplicidade de códigos de curso.

As operações I e III apresentam erros ou não se aplicam à situação descrita:

I. O comando proposto remove a chave primária existente e tenta adicionar uma nova chave primária composta (id, codigo), o que não é necessário, pois a unicidade do código do curso não tem relação com a chave primária atual (id).

III. A sintaxe do comando está incorreta para o PostgreSQL, que espera a palavra chave ADD antes de CONSTRAINT para adicionar uma nova restrição.

Portanto, a alternativa E é a correta, pois a combinação dos comandos II e IV satisfaz as exigências de não permitir valores nulos na coluna codigo e garantir que cada código seja único na tabela curso.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo