Executando verificação de segurança...
1

Não é recriar a FKs e sim cria-las, no primeiro exemplo do script sql ele não tem relacionamento entre si pq precisa ser declarado, no segundo ALTER TABLE... é o retorno do script com o relacionamento das tabelas depois de lido as tabelas e feito o mapeamento e assim criando o relaciomanento entre elas.
nesse exemplo pra tabela User ter o relaciomaneto com User_Email ela precisaria ser declarada assim:

CREATE TABLE IF NOT EXISTS `Test_App`.`User` (
    `Id_User` INT NOT NULL AUTO_INCREMENT,
    `Id_User_Email` INT NOT NULL,
    PRIMARY KEY (`Id_User`),
    -- criando relaciomaneto com a user_email
    CONSTRAINT `fk_user_email` FOREIGN KEY (`Id_User_Email`) 
    REFERENCES `Test_App`.`User_Email` (`Id_User_Email`)
);

adicionado a CONSTRAINT na tabela, e isso que meu script faz, ele cria as CONSTRAINT, evitando essa duas linhas ser declarada nas tabelas

No orm ainda preciso declarar as FKs, exemplo:

ORM PrismaJS

model User {
  id_user       Int        @id @default(autoincrement()) @map("Id_User")
  id_user_email Int        @map("Id_User_Email")
  user_email    User_Email @relation(fields: [id_user_email], references: [id_user_email])

  @@map("User")
}

no ORM ainda teria que declara essa linha user_email User_Email... pra criar o relaciomaneto entre elas no BD

e meu script não atenderia pessoas que criar as tabelas diretamente por algum ORM, somente pessoas que lida com script sql

Carregando publicação patrocinada...