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

[Dúvida] REFERÊNCIAS FOREIGN KEY

Bom dia,
eu estou com uma dificuldade para entender esse FOREIGN KEY eu até fiz tudo correto(acredito eu)
mas quando eu dou SELECT * FROM Turma_Disciplina , os dados da tabela ainda estão nulos,
pesquisei ali oque poderia ser, ai achei a linha PRAGMA foreign_keys = ON,
mas mesmo assim nao funcionou continua nulo a tabela, alguem poderia me dar uma ajuda >;<
segue código:
PRAGMA foreign_keys = ON
CREATE TABLE Alunos_Da_Turma(
ID_Aluno VARCHAR (50) PRIMARY KEY,
Nome_Aluno VARCHAR (50),
Nascimento_Aluno DATE,
Genero_Aluno VARCHAR(50),
Endereço_Aluno VARCHAR(250),
Telefone_Aluno VARCHAR(100),
Email_Aluno VARCHAR(100)
);
INSERT INTO Alunos_Da_Turma
(ID_Aluno,
Nome_Aluno,
Nascimento_Aluno,
Genero_Aluno,
Endereço_Aluno,
Telefone_Aluno,
Email_Aluno)
VALUES
('1','João Silva','2005-03-15','Masculino','Rua das Flores 123','(11) 9876-5432','joao@email.com'),
('2','Maria Santos','2006-06-20','Feminino','Avenida Principal 456','(11) 8765-4321','maria@email.com'),
('3','Pedro Soares','2004-01-10','Masculino','Rua Central 789','(11) 7654-3210','pedro@email.com'),
('4','Ana Lima','2005-04-02','Feminino','Rua da Escola 56','(11) 8765-4321','ana@email.com'),
('5','Mariana Fernandes','2005-08-12','Feminino','Avenida da Paz 789','(11) 5678-1234','mariana@email.com'),
('6','Lucas Costa','2003-11-25','Masculino','Rua Principal 456','(11) 1234-5678','lucas@email.com'),
('7','Isabela Santos','2006-09-10','Feminino','Rua da Amizade 789','(11) 9876-5432','isabela@email.com'),

CREATE TABLE Professores(
ID_Professor VARCHAR(100) PRIMARY KEY,
Nome_Professor VARCHAR(100),
Nascimento_Professor DATE,
Genero_Professor VARCHAR(100),
Telefone_Professor VARCHAR(100),
Email_Professor VARCHAR(250)
);
INSERT INTO Professores
(ID_Professor,
Nome_Professor,
Nascimento_Professor,
Genero_Professor,
Telefone_Professor,
Email_Professor)
VALUES
(' 1','Ana Oliveira','1980-05-25','Feminino','(11) 1234-5678','ana@email.com'),
('2','Carlos Ferreira','1975-09-12','Masculino','(11) 2345-6789','carlos@email.com'),
('3','Mariana Santos','1982-03-15','Feminino','(11) 3456-7890','mariana@email.com'),
('4','Ricardo Silva','1978-08-20','Masculino','(11) 7890-1234','ricardo@email.com'),
('5','Fernanda Lima','1985-01-30','Feminino','(11) 4567-8901','fernanda@email.com');

CREATE TABLE Disciplina(
  ID_Disciplina VARCHAR(250) PRIMARY KEY,
  Nome_Disciplina VARCHAR(100),
  Descricao_Disciplina VARCHAR(100),
  Carga_Horaria_Disciplina VARCHAR(100),
  ID_Do_Professor VARCHAR(250),
  FOREIGN KEY (ID_Do_Professor) REFERENCES Professores(ID_Professor)
  );
  INSERT INTO Disciplina
  (ID_Disciplina,
   Nome_Disciplina,
   Descricao_Disciplina,
   Carga_Horaria_Disciplina)
   VALUES
   ('1','Matemática','Estudo de conceitos matemáticos avançados','60'),
('2','História','História mundial e local','45'),
('3','Física','Princípios fundamentais da física','60'),
('4','Química','Estudo da química e suas aplicações','45'),
('5','Inglês','Aulas de inglês para iniciantes','45'),
('6','Artes','Exploração da criatividade artística','30');
  CREATE TABLE Turmas(
    ID_Turma VARCHAR(250) PRIMARY KEY,
    Nome_Da_Turma VARCHAR(100),
    Ano_Letivo DATE,
    ID_Professor_Orientador VARCHAR(250)
    FOREIGN KEY (ID_Professor_Orientador) REFERENCES Professores(ID_Professor)
  );
  INSERT INTO Turmas(
    ID_Turma,
    Nome_Da_Turma,
    Ano_Letivo)
    VALUES
   ('1','Turma A','2023'),
('2','Turma B','2023'),
('3','Turma C','2023'),
('4','Turma D','2023'),
('5','Turma E','2023');
  CREATE TABLE Turma_Disciplina(
    ID_Da_Turma VARCHAR(250),
    ID_Da_Disciplina VARCHAR(250),
    PRIMARY KEY(ID_Da_Turma,ID_Da_Disciplina),
    FOREIGN key (ID_Da_Turma) REFERENCES Turmas(ID_Turma),
    FOREIGN key (ID_Da_Disciplina) REFERENCES Disciplina(ID_Disciplina     
    );
    SELECT * from Turma_Disciplina
    CREATE TABLE Turma_Alunos(
    ID_Turma_Alunos VARCHAR(100),
    ID_Dos_Alunos VARCHAR(100),
    PRIMARY KEY(ID_Turma_Alunos,ID_Dos_Alunos),
    FOREIGN KEY(ID_Turma_Alunos) REFERENCES Turmas(ID_Turma),
    FOREIGN KEY(ID_Dos_Alunos) REFERENCES Alunos_Da_Turma(ID_Aluno)
    );
      CREATE TABLE Tabela_De_Notas(
      ID_Da_Nota VARCHAR(250) PRIMARY KEY,
      ID_Do_Aluno VARCHAR(250),
      ID_Da_Disciplina VARCHAR(250),
      Valor_Da_Nota FLOAT(10,2),
      Data_Avaliacao DATE,
      FOREIGN KEY (ID_Do_Aluno) REFERENCES Alunos_Da_Turma(ID_Aluno),
      FOREIGN KEY (ID_Da_Disciplina) REFERENCES Disciplina(ID_Disciplina)
      );

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Ei! Tudo bem, Jeferson?

Você fez um bom trabalho criando as tabelas e inserindo dados iniciais, mas a Turma_Disciplina está vazia (mostrando nulos) porque não há INSERTs nela. A FOREIGN KEY serve para ligar tabelas e garantir que IDs referenciados existam, mas não preenche dados automaticamente, você precisa adicionar registros manualmente

Um exemplo de como você poderia fazer isso:

INSERT INTO Turma_Disciplina (ID_Da_Turma, ID_Da_Disciplina) VALUES
('1', '1'),
('1', '2'),
('2', '3'),
('3', '4'),
('4', '5'),
('5', '6');

Outro ponto, notei que na criação da tabela Turmas, você esqueceu de adicionar uma vírgula antes da declaração FOREIGN KEY para ID_Professor_Orientador. Isso pode causar um erro na criação da tabela. Corrija isso adicionando a vírgula:

CREATE TABLE Turmas(
  ID_Turma VARCHAR(250) PRIMARY KEY,
  Nome_Da_Turma VARCHAR(100),
  Ano_Letivo DATE,
  ID_Professor_Orientador VARCHAR(250),
  FOREIGN KEY (ID_Professor_Orientador) REFERENCES Professores(ID_Professor)
);

Algumas partes nos exemplos de códigos podem precisar de ajuste conforme o seu código, então faça as alterações que precisar.

Feito essas correções teste o código para observar se funciona como esperado.

Espero ter ajudado e bons estudos!