Considere a estrutura em um banco de dados relacional Postg...
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);
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