Auditor Fiscal - Tecnologia da Informação - Prova II
Em um banco de dados aberto e em condições ideais há uma tabela chamada Contribuinte cuja chave primária é idContribuinte. Há também uma tabela chamada Imposto cuja chave primária é idimposto. Para criar uma tabela de associação chamada Contribuinte_imposto cuja chave primária é composta pelos campos idContribuinte e idImposto, que são chaves estrangeiras resultantes da relação dessa tabela com as tabelas Contribuinte e Imposto, utiliza-se a instrução SQL
BCREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), CONSTRAINT fk1 FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte), CONSTRAINT fk2 FOREIGN KEY (idImposto) REFERENCES Imposto (idImposto));
CCREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte) SOURCE Contribuinte (idContribuinte), FOREIGN KEY (idImposto) SOURCE Imposto (idImposto));
DCREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte, idImposto) REFERENCES (Contribuinte!idContribuinte, Imposto!idImposto));
ECREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), FOREIGN KEY (idContribuinte, idImposto) REFERENCES all parents);
Revelar gabarito e comentário▾
GabaritoB — CREATE TABLE Contribuinte_Imposto(idContribuinte INT NOT NULL, idImposto INT NOT NULL, PRIMARY KEY (idContribuinte, idImposto), CONSTRAINT fk1 FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte), CONSTRAINT fk2 FOREIGN KEY (idImposto) REFERENCES Imposto (idImposto));
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
SQL – Criação de tabela de associação com chave composta
Gabarito: letra B. A instrução correta para criar a tabela de associação Contribuinte_Imposto com chave primária composta (idContribuinte, idImposto) e duas chaves estrangeiras, cada uma referenciando a respectiva tabela original, é a que utiliza a sintaxe padrão SQL: PRIMARY KEY (idContribuinte, idImposto) e duas restrições FOREIGN KEY com REFERENCES. As demais alternativas apresentam erros de sintaxe (múltiplas PRIMARY KEY, palavra‑chave SOURCE, referência inválida ou REFERENCES all parents).
A banca cobra o conhecimento da sintaxe SQL para criação de tabelas que implementam relacionamentos muitos‑para‑muitos. É essencial saber que:
A chave primária composta é declarada uma única vez, listando as colunas.
Cada chave estrangeira deve referenciar uma única tabela.
As colunas que compõem a chave primária devem ser NOT NULL (embora algumas implementações aceitem implícito, a boa prática e o padrão exigem NOT NULL).
Alternativa A — ❌ Incorreta
Apresenta duas declarações PRIMARY KEY (apenas uma é permitida por tabela) e ambas as FOREIGN KEY referenciam apenas a tabela Contribuinte, ignorando Imposto. Além disso, não utiliza NOT NULL e a chave estrangeira para idImposto está ausente.
Alternativa B — ✅ Correta ⟵ GABARITO
Sintaxe correta:
Colunas declaradas com INT NOT NULL.
PRIMARY KEY (idContribuinte, idImposto) define a chave composta.
Duas restrições CONSTRAINT ... FOREIGN KEY ... REFERENCES ligam cada coluna à sua tabela de origem.
Alternativa C — ❌ Incorreta
Usa a palavra‑chave SOURCE no lugar de REFERENCES, que não é um comando SQL válido para chave estrangeira.
Alternativa D — ❌ Incorreta
A cláusula FOREIGN KEY (idContribuinte, idImposto) REFERENCES (Contribuinte!idContribuinte, Imposto!idImposto) está incorreta: a referência deve ser a uma única tabela (não a duas com separador !). Para duas tabelas, são necessárias duas restrições separadas.
Alternativa E — ❌ Incorreta
REFERENCES all parents não é uma sintaxe SQL reconhecida. Cada chave estrangeira deve referenciar uma tabela específica.
PEGA ESSA DICA!
Na prova, lembre‑se: em um relacionamento N:N, a tabela associativa tem chave primária composta pelas chaves estrangeiras. A sintaxe correta é PRIMARY KEY (col1, col2) e duas FOREIGN KEY, cada uma com REFERENCES tabela(coluna). Desconfie de alternativas que repetem PRIMARY KEY ou usam palavras estranhas como SOURCE.