Problema com armazenamento e recuperação dos dados para objeto

Gente é o seguinte tenho, 3 tabelas:

MESAS

PRODUTOS

[quote]
CREATE TABLE produtos (
codigo int(4) NOT NULL,
produto_categoria_id int(4) NOT NULL,
nome varchar(150) NOT NULL,
valor double NOT NULL,
PRIMARY KEY (codigo)
)[/quote]

MESAS_PRODUTOS

E as classes:

Só que está errado, eu não to conseguindo descobrir qual seria a melhor maneira de organizar isso, seria colocar um ArrayList de MesaProduto em Mesa?

O Objetivo do sistema é:

  • Temos produtos
  • Temos mesas
  • Cada mesa por ter infinitos produtos, com infinitas quantidades de cada um destes…

Alguem tem uma opinião ou dica para o melhor uso de OOP nesse caso?