Hai un ripetersi di informazioni perchè cmq la struttura non è corretta. Ma in via di principio il procedimento è giusto.

Funziona così:

1) Una tabella memorizza i dati unici del preventivo:
- Id
- Codice
- Nome
- Quantità

2) Un'altra tabella memorizza le descrizioni del preventivo:
- Id (descrizione)
- Id (preventivo)
- Descrizione


Con le JOIN, poi ottieni tutto ciò che ti serve senza ripetere informazioni ed ottimizzando il db.