Com base no comando SQL apresentado, julgue o item subsequen...
ID INTEGER NOT NULL,
NOME CHAR(50) NOT NULL UNIQUE,
CPF DECIMAL (11,0) NULL,
NACIONALIDADE INTEGER NOT NULL,
PRIMARY KEY (ID),
FOREIGN KEY (NACIONALIDADE)
REFERENCES TABELA_NACIONALIDADE(CODIGO_NACIONALIDADE)
);
Mais de uma PESSOA pode ter o mesmo NOME e a mesma NACIONALIDADE.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - Errado
A questão aborda um tópico importante no âmbito dos bancos de dados relacionais: a definição de restrições de unicidade e integridade referencial. Ao criar uma tabela no banco de dados, o comando CREATE TABLE é utilizado para definir a estrutura da tabela, incluindo seus campos, tipos de dados e quaisquer restrições adicionais que esses campos podem ter.
O campo NOME foi declarado com o atributo UNIQUE, o que significa que cada valor inserido neste campo deve ser único na tabela. Ou seja, nenhum outro registro pode ter o mesmo valor nesse campo, garantindo que cada nome seja exclusivo na tabela PESSOA. Dessa forma, a afirmação de que mais de uma pessoa pode ter o mesmo nome é incorreta, pois a restrição de unicidade impede duplicidade de valores no campo NOME.
Além disso, o campo NACIONALIDADE é uma chave estrangeira (FOREIGN KEY) que referencia o campo CODIGO_NACIONALIDADE de outra tabela, chamada TABELA_NACIONALIDADE. Esta restrição não impõe unicidade; seu propósito é garantir a integridade referencial, o que significa que qualquer valor inserido no campo NACIONALIDADE deve existir como CODIGO_NACIONALIDADE na tabela referenciada. Portanto, é perfeitamente possível que múltiplas pessoas tenham a mesma nacionalidade, desde que o código dessa nacionalidade exista na tabela TABELA_NACIONALIDADE.
Portanto, o erro na afirmação da questão está na parte que se refere ao NOME, uma vez que a utilização da restrição UNIQUE assegura que não haja nomes repetidos na tabela PESSOA, mesmo que a nacionalidade possa ser a mesma para diferentes indivíduos. Assim, o gabarito correto é E, indicando que a afirmação é errada.
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
A restrição UNIQUE garante que todos os valores em uma coluna são diferentes.
NOME é uma chave candidata.
Na elaboração lógica e (ou) conceitual de um modelo de dados, quando todos os identificadores únicos são levantandos, eles são ditos chaves candidatas, ou seja, todas são candidatas em potencial para se tornar a chave primária. Após a escolha de uma chave candidata para exercer o papel de chave primária, as demais chaves candidatas são ditas chaves secundárias (ou chaves alternativas), pois, embora não sejam chaves primárias podem servir para identificação do registro assim como a chave primária faz. A principal diferença é que a chave primária, além de identificar registros como as chaves secundárias o fazem, ela também será necessária para viabilizar os relacionamentos.
Adotando a escolha de uma chave artificial, temos a seguinte implementação física:
— Cria a tabela de Clientes
CREATE TABLE Clientes (
ClienteID INT NOT NULL, ClienteNome VARCHAR(50) NOT NULL,
ClienteRG VARCHAR(15) NOT NULL, ClienteCPF CHAR(11) NOT NULL)
— Adicionar o ClienteID como chave primária
ALTER TABLE Clientes ADD CONSTRAINT PKCliente PRIMARY KEY (ClienteID)
Uma boa prática de administração de dados é garantir que as chaves secundárias tenham uma constraint unique para garantir a unicidade. Embora o CPF e o RG não sejam a chave primária da tabela, não é interessante que eles se repitam. Para garantir essa integridade, é adicionada logo a seguir as constraints unique nessas colunas.
— Adiciona constraints unique para restringir as chaves secundárias
ALTER TABLE Clientes ADD CONSTRAINT UQClienteRG UNIQUE (ClienteRG)
ALTER TABLE Clientes ADD CONSTRAINT UQClienteCPF UNIQUE (ClienteCPF)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo