As restrições de integridade garantem que as mudanças feitas...
As restrições de integridade garantem que as mudanças feitas no banco de dados, por usuários autorizados, não resultem em uma perda da consistência dos dados. Nesse contexto, considere os seguintes comandos SQL:
CREATE TABLE CIDADE( idCidade number(4) PRIMARY KEY, nome varchar2(50) NOT NULL
)
CREATE TABLE PESSOA( idPessoa number(5) PRIMARY KEY, nome varchar2(50) NOT NULL, idCidade number(4) REFERENCES CIDADE(idCidade)
)
Analise as assertivas abaixo e assinale a alternativa correta.
I. As tabelas CIDADE e PESSOA terão a identificação de cada uma de suas tuplas por um valor único, garantida pela restrição de integridade de identidade, verificada pelo SGBD a cada operação de inclusão ou alteração de tuplas.
II. O campo PESSOA.idCidade tem preenchimento obrigatório para cumprir com a regra da integridade referencial.
III. Quando uma tupla da tabela CIDADE for excluída, não é realizada verificação de integridade referencial, pois essa tabela não possui chave estrangeira.
IV. O campo PESSOA.nome não pode ficar vazio quando é feita a inclusão ou alteração de uma tupla na tabela PESSOA.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - Apenas I e IV estão corretas. Vou explicar cada uma das assertivas para que você entenda o motivo desta escolha:
I. As tabelas CIDADE e PESSOA terão a identificação de cada uma de suas tuplas por um valor único, garantida pela restrição de integridade de identidade, verificada pelo SGBD a cada operação de inclusão ou alteração de tuplas.
A assertiva I está correta. Tanto a tabela CIDADE quanto a tabela PESSOA têm uma restrição de chave primária (PRIMARY KEY) sobre os campos idCidade e idPessoa, respectivamente. Isso significa que cada tupla nessas tabelas será unicamente identificada por um valor distinto desses campos, garantindo a integridade de identidade. O Sistema de Gerenciamento de Banco de Dados (SGBD) é responsável por verificar que não haja valores duplicados nesses campos durante operações de inserção e atualização de dados.
II. O campo PESSOA.idCidade tem preenchimento obrigatório para cumprir com a regra da integridade referencial.
A assertiva II está incorreta. Apesar do campo idCidade na tabela PESSOA fazer referência a idCidade na tabela CIDADE (constituindo uma chave estrangeira), não há especificação na criação da tabela de que este campo seja NOT NULL. Portanto, ele não é obrigatoriamente preenchido pelas regras declaradas no comando CREATE TABLE apresentado. A integridade referencial somente garante que, caso um valor seja inserido em PESSOA.idCidade, este valor deve existir na tabela CIDADE.
III. Quando uma tupla da tabela CIDADE for excluída, não é realizada verificação de integridade referencial, pois essa tabela não possui chave estrangeira.
A assertiva III está incorreta. De fato, a tabela CIDADE não possui chave estrangeira, mas ela é referenciada como chave estrangeira na tabela PESSOA. Isso implica que, ao tentar excluir uma tupla em CIDADE, o SGBD realizará uma verificação de integridade referencial para assegurar que não existem tuplas em PESSOA referenciando o idCidade que está sendo excluído. Essa verificação é crucial para prevenir a exclusão de dados que são referenciados por outras tabelas.
IV. O campo PESSOA.nome não pode ficar vazio quando é feita a inclusão ou alteração de uma tupla na tabela PESSOA.
A assertiva IV está correta. A coluna nome na tabela PESSOA é declarada como NOT NULL, o que significa que ela deve ter um valor definido (não vazio) sempre que uma tupla for inserida ou atualizada nessa tabela. Essa é uma restrição de integridade de domínio que assegura que o campo nome sempre contenha algum dado válido.
Portanto, ao analisar as assertivas, concluímos que somente as assertivas I e IV estão corretas, tornando a alternativa C a resposta adequada para a questão.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo