Como representar esta classe no banco de dados?

tenho que criar a tabela da seguinte classe, porém estou em dúvida em como fazer… Já tenho a classe Pessoa e PedidoItem

Exemplo simples da classe:

public class Pedido {
  private Long id;
  private Pessoa pessoa;
  private List<PedidoItem> itens;
}

Banco de dados: H2

Acho que seriam 3 tabelas, assim:

  • PESSOA
    • ID
  • PEDIDO
    • ID
    • ID_PESSOA
  • PEDIDO_ITEM
    • ID
    • ID_PEDIDO

Desta forma, será que esta de acordo?

As entidades são:

public class Pedido {

    private Long id;
    private Pessoa pessoa;
    private List<PedidoItem> itens;
	
}
public class PedidoItem {
    private long id;
    private Produto produto;
    private int quantidade;
    private Pedido pedido;
	
}
public class Pessoa {

    private long id;
    private String cpf;
    private String nome;
	
}
public class Produto {
    private int registro;
    private String descricao;
    private BigDecimal valorUnitario;
	
}

No banco de dados:


CREATE TABLE pessoa (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  cpf VARCHAR(11) NOT NULL,
  nome VARCHAR(250) NOT NULL
);
CREATE TABLE produto (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  descricao VARCHAR(50) NOT NULL,
  valor_unitario NUMERIC(10,2) NOT NULL
);

CREATE TABLE pedido (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  idCliente integer,
  CONSTRAINT fk_idCliente
  FOREIGN KEY (idCliente)
  REFERENCES pessoa(id)
);
CREATE TABLE pedidoItem (
  id INT AUTO_INCREMENT  PRIMARY KEY,
  qntd INT,
  idProduto integer,
  CONSTRAINT fk_idProduto
  FOREIGN KEY (idProduto)
  REFERENCES produto(id),
  idPedido integer,
  CONSTRAINT fk_idPedido
  FOREIGN KEY (idPedido)
  REFERENCES pedido(id)
);
1 curtida

Aparentemente, está correto sim. Vc definiu as FKs de acordo com a modelagem.

muito obrigado pela ajuda, darei continuidade assim então. qlqr dúvida mando aqui XD