Questão nº 58
Questão de Tecnologia da Informação · CESGRANRIO BASA 02/2021 (nº 58)
Um banco de dados relacional é composto pelas seguintes tabelas:
```sql
CREATE TABLE A (
a1 TEXT NOT NULL,
a2 TEXT NOT NULL,
a3 TEXT NOT NULL,
PRIMARY KEY (a1,a2));
CREATE TABLE B (
b1 TEXT NOT NULL,
b2 TEXT NOT NULL,
b3 TEXT NOT NULL,
PRIMARY KEY (b1));
CREATE TABLE R (
a1 TEXT NOT NULL,
a2 TEXT NOT NULL,
b1 TEXT NOT NULL,
PRIMARY KEY (a1,a2),
FOREIGN KEY (a1,a2)
REFERENCES A (a1,a2),
FOREIGN KEY (b1)
REFERENCES B (b1));
```
Com o intuito de simplificar, considere que todas as colunas de todas as tabelas são do tipo TEXT.
O modelo relacional acima foi obtido por meio da aplicação de regras de transformação sobre um modelo E-R, de modo a
preservar a semântica deste.
Qual modelo E-R deu origem a essas tabelas?
- A

- B

- C
(alternativa correta) - D

- E

Resposta comentada
Gabarito Alternativa C
Conceito-chave: A tabela R é uma tabela de relacionamento (ou tabela associativa) que liga as entidades A e B. Como a chave primária de R é (a1, a2) — exatamente a chave de A — isso indica que o relacionamento é 1:N (um registro de B pode estar associado a vários registros de A, mas cada registro de A se relaciona com no máximo um B). A chave estrangeira b1 em R é apenas uma chave estrangeira comum, não parte da chave primária, confirmando que B está no lado "1" e A no lado "N".
- (A) Incorreta: Mostra um relacionamento N:N (muitos-para-muitos), o que exigiria que a chave primária de
Rfosse composta por(a1, a2, b1)— mas no SQL a PK deRé só(a1, a2), então não pode ser N:N. - (B) Incorreta: Inverte a cardinalidade, colocando
Bcomo o lado "N" eAcomo o lado "1". Isso faria a chave primária deRser(b1)ou incluirb1como parte da PK, o que não ocorre. - (C) Correta: Representa exatamente o modelo:
Aé entidade forte com chave(a1, a2),Bé entidade forte com chave(b1), e o relacionamentoRé 1:N deBparaA, com a chave estrangeirab1emRapontando paraBe a PK deRherdada deA. A cardinalidade "1" do lado deBe "N" do lado deAé a única que produz a tabelaRcom PK(a1, a2)e FKb1sem ser parte da PK. - (D) Incorreta: Representa um relacionamento 1:1 (um-para-um), o que normalmente fundiria as tabelas ou faria a PK de
Rser igual à PK deAe também igual à PK deB— mas aquib1não é chave única emR(pode haver vários registros com o mesmob1), então não é 1:1. - (E) Incorreta: Mostra
AeBcomo entidades fracas (com identificação parcial), mas ambas têm chaves primárias próprias (a1,a2eb1) e não dependem de outra entidade para existir, então não são fracas.
Armadilha do distrator mais tentador (B): A banca inverte a direção da seta ou coloca o "1" do lado errado. O aluno vê que R tem FK para B e pensa que B é o lado "N", mas a chave primária de R é a chave de A, o que prova que A é o lado "N" (cada A aparece uma vez em R, mas vários A podem apontar para o mesmo B). A pegadinha é confundir "quem tem a FK" com "quem é o lado N" — o correto é olhar para a PK da tabela associativa.
Fonte: CESGRANRIO BASA 02/2021 Técnico Científico - Tecnologia da Informação. Reproduzida para fins de estudo.