Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2019

Banco de DadosSQL
Código
fc056731
Banca
FCC
Órgão
SEFAZ-BA
Ano
2019
Cargo
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
  1. ACREATE TABLE Contribuinte_Imposto(idContribuinte INT, idImposto INT, PRIMARY KEY (idContribuinte), FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte), PRIMARY KEY (idImposto), FOREIGN KEY (idContribuinte) REFERENCES Contribuinte (idContribuinte));
  2. 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));
  3. 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));
  4. 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));
  5. 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.

Gabarito: letra B.

Link permanente: /questoes/fc056731