1ª tabela:
id_pizza (campo int chave primária auto-increment)
tipo (campo enum '1','2')
Na 1ª tabela é registrado apenas o tipo de pizza que o cliente quer, 1 para inteira e 2 para meia. As pizzas mesmo entrarão na 2ª tabela e serão ligadas à 1ª tabela.
2ª tabela:
id_item (campo int chave primária auto-increment)
id_pizza (id da 1ª tabela para fazer a ligação)
id_escolha (id da pizza que o cliente escolheu)
É muito simples o que eu montei, com isso terá como ter um ótimo controle sobre o sistema. Exemplo:
O cliente escolheu meia pizza, é inserido na 1ª tabela o tipo 2 (meia) e inserido na 2ª tabela o id gerado no campo id_pizza e a escolha do cliente em id_escolha.
Na próxima meia pizza que o cliente escolher, é verificado se tem alguma meia pizza sozinha. Se tiver, na 1ª tabela não é inserido nada, apenas pega o id_pizza que contém apenas meia pizza e insere na 2ª tabela esse mesmo id no campo id_pizza + a segunda escolha do cliente em id_escolhe.
Ficaria algo assim:
id_pizza tipo 1 2 id_item id_pizza id_escolha 1 1 23 2 1 47
Quando o cliente escolher pizza inteira, a única coisa que muda é o tipo (1 para inteira) e poderá ter apenas 1 registro com o mesmo id_pizza na 2ª tabela.
Eu mostrei só a estrutura, como trabalhar com ela eu não mostrei. Mas eu posso dizer que com essa estrutura, dá pra fazer muita coisa interessante.