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

[Dúvida] Relacionamento muitos para muitos utilizando o flyway

Quando estava estudando acabei esbarrando em uma questão em que eu não consegui dar resposta e ao procurar na internet até agora não encontrei uma resposta tão clara. Por exemplo, eu tenho um sistema de e-commerce, tenho uma tabela de produtos, clientes e de pedidos, vamos focar nas tabelas produtos e pedidos, um pedido tem vários produtos e um produto tem vários pedidos, uma relação de muitos para muitos, como fica isso utilizando neste caso o Flyway ? Precisariamos criar a versão do banco de dados adicionando a tabela intemediária ? Ou o é melhor deixar a JPA criar essa tabela ? Teria como? Qual outra abordagem poderiamos ter ?

1 resposta
solução!

Olá!

Em um relacionamento muitos-para-muitos, como entre "produtos" e "pedidos", é necessário uma tabela intermediária (também chamada de tabela de junção) para armazenar os relacionamentos.

Com Flyway, você precisa criar manualmente as migrações para definir a estrutura do banco de dados, incluindo a tabela intermediária. Aqui está um exemplo de como você poderia fazer isso:

CREATE TABLE produtos (
   id BIGINT AUTO_INCREMENT PRIMARY KEY,
   nome VARCHAR(255) NOT NULL,
   preco DECIMAL(10, 2) NOT NULL
);

CREATE TABLE pedidos (
   id BIGINT AUTO_INCREMENT PRIMARY KEY,
   data_pedido TIMESTAMP NOT NULL
);

CREATE TABLE pedidos_produtos (
   pedido_id BIGINT NOT NULL,
   produto_id BIGINT NOT NULL,
   PRIMARY KEY (pedido_id, produto_id),
   FOREIGN KEY (pedido_id) REFERENCES pedidos(id),
   FOREIGN KEY (produto_id) REFERENCES produtos(id)
);

Ou seja, ao utilizar o Flyway, também será necessário ter uma migration com o script para a criação da tabela intermediária.

Espero ter ajudado e bons estudos!