Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que a resposta não está de acordo com o que foi ensinado pela professora?

Olá pessoal, espero que estejam bem.

O enunciado da questão solicita que seja selecionada a resposta para referenciar uma chave estrangeira na tabela que está sendo criada:
"Agora você precisa incluir a chave estrangeira na tabela de produtos para relacioná-la com o fornecedor do produto, através do campo id da tabela fornecedores."

Como vi em outras dúvidas do fórum, a resposta correta é a "D":
Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Ok.

Mas a resposta trás uma alteração de tabela que não é informado o comando de FOREING KEY como visto em aula

Como por exemplo o que foi utilizado pela professora:
"... FOREIGN KEY (categoria) REFERENCES tabelacategorias (id_categoria)
FOREIGN KEY (fornecedor) REFERENCES tabelafornecedores (id)...
"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Eu entendi que foi necessário alterar a tabela (apesar do enunciado não deixar muito claro essa alteração), mas em aula ainda não foi discutido o comando INTERGER informado na resposta correta... O que deixa tudo muito confuso

Por que não existe uma opção entre as alternativas que trás o que de fato foi tratado em aula?

Podem me auxiliar?
Grata.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Olá, Talyta, tudo bem?

Na aula, vimos o uso de chaves estrangeiras dentro do comando CREATE TABLE, ou seja, no momento da criação da tabela. Nesse caso, usamos algo como:

CREATE TABLE tabelaprodutos (
  ID_Produto INT PRIMARY KEY,
  Nome_do_Produto VARCHAR (250),
  Descrição TEXT,
  Categoria INT,
  Preco_de_Compra DECIMAL (10,2),
  Unidade Varchar (50),
  Fornecedor INT,
  Data_de_Inclusao DATE,
  FOREIGN KEY (Categoria) REFERENCES tabelacategorias (id_categoria),
  FOREIGN KEY (Fornecedor) REFERENCES tabelafornecedores (id)
  );

Mas, o exercício traz uma situação diferente: ele pede para adicionar uma chave estrangeira a uma tabela que já existe. Para isso, precisamos usar o comando ALTER TABLE, que serve justamente para modificar a estrutura de uma tabela após sua criação.

A resposta correta mostra:

ALTER TABLE produtos
ADD COLUMN fk_fornecedor INTEGER REFERENCES tabelafornecedores(id);

Veja o que acontece aqui:

  • ALTER TABLE: indica que vamos alterar uma tabela já existente.
  • ADD COLUMN fk_fornecedor INTEGER: cria uma nova coluna chamada fk_fornecedor, do tipo INTEGER, que servirá para armazenar os IDs dos fornecedores.
  • REFERENCES tabelafornecedores(id): estabelece a relação de chave estrangeira com a tabela tabelafornecedores.

No SQLite não é possível usar o comando FOREIGN KEY em uma tabela já existente. Essa é uma diferença de sintaxe entre declarar a FK dentro do CREATE TABLE (como na aula) e adicioná-la depois com ALTER TABLE. Mas destaco que essa é a forma correta de alterar no SQLite, em outros SGBDs, como MySQL Workbench é possível usar o FOREIGN KEY (em um dos tópicos abaixo compartilho o exemplo no Workbench)

Ou seja, as duas formas estão corretas, apenas se aplicam em momentos diferentes do ciclo de criação e modificação da tabela.

E para não ficar colunas repetidas (fornecedor), teremos que dropar primeiro.

Quanto ao comando INTERGER, você pode saber um pouco mais na atividade Para saber mais: tipos de dados

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!