Questão de Banco de Dados — Conceitos e Fundamentos de Modelo Relacional — CESPE / CEBRASPE 2024
- Código
- ce403611
- Banca
- CESPE / CEBRASPE
- Órgão
- INPI
- Ano
- 2024
- Cargo
- APGIPI ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: Certo. A afirmação está correta: a presença de um campo de chave estrangeira com valor NULL não viola a restrição de chave estrangeira (integridade referencial). A restrição de integridade referencial exige que, quando o valor da chave estrangeira não é NULL, ele deve corresponder a um valor existente na chave primária (ou candidata) da tabela referenciada. Valores NULL são permitidos e representam a ausência de associação.
A chave estrangeira é um atributo (ou conjunto de atributos) em uma tabela que cria uma ligação lógica com a chave primária (ou candidata) de outra tabela, permitindo a associação de registros entre elas. Essa é a base do conceito de integridade referencial: uma tupla em uma relação que referencia outra relação deve se referir a uma tupla existente na relação referenciada. Em outras palavras, uma chave estrangeira de uma relação deve existir como chave na relação referenciada — mas apenas quando o valor não for NULL.
Vamos entender com um exemplo prático. Considere uma tabela PESSOA com os campos (CPF, nome, cpf_conjuge). O atributo cpf_conjuge é uma chave estrangeira que associa uma pessoa a outra pessoa da mesma tabela (autorrelacionamento). Imagine os registros:
(123, João, 456) — João é casado com Maria (CPF 456).
(456, Maria, 123) — Maria é casada com João (CPF 123).
(789, Pedro, NULL) — Pedro não é casado; o valor de cpf_conjuge é NULL.
No caso de Pedro, o valor NULL indica que ele não possui cônjuge. Isso não viola a restrição de chave estrangeira, pois a restrição só se aplica quando há um valor não nulo. Se Pedro tivesse um valor 999 que não existisse na coluna CPF, aí sim haveria violação da integridade referencial.
A confusão comum é pensar que a chave estrangeira, por ser uma "chave", não pode ser NULL. Mas a regra é diferente: a chave primária não pode ser NULL (por definição, ela identifica unicamente cada tupla), enquanto a chave estrangeira pode ser NULL, justamente para representar a ausência de relacionamento. Essa distinção é essencial e frequentemente cobrada em provas.
A banca explora a confusão entre chave primária e chave estrangeira. A chave primária não pode ter valor NULL (restrição de integridade de entidade), mas a chave estrangeira pode ter valor NULL (representa ausência de associação). Lembre-se: a restrição de integridade referencial só exige que o valor da chave estrangeira exista na tabela referenciada quando o valor não for NULL.
A afirmação está correta. A restrição de chave estrangeira (integridade referencial) estabelece que um valor não nulo em uma coluna de chave estrangeira deve corresponder a um valor existente na chave primária (ou candidata) da tabela referenciada. Se o valor for NULL, significa que não há associação, o que é permitido e não viola a restrição. O exemplo da tabela PESSOA com cpf_conjuge NULL para Pedro ilustra exatamente isso: a ausência de cônjuge é representada por NULL, sem violar a integridade referencial.
A afirmação está errada porque inverte o conceito. A chave estrangeira pode ter valor NULL; quem não pode ter valor NULL é a chave primária. A restrição de integridade referencial não proíbe NULL na chave estrangeira — ela apenas exige que, quando o valor não for NULL, ele exista na tabela referenciada. Portanto, a alternativa E está incorreta.
Gabarito: Certo (alternativa C).
Link permanente: /questoes/ce403611