Ma se il negozio avesse 1000 tipologie di prodotto tu faresti 1000 tabelle nel db?

Dovresti prevedere una sola tabella fatta così per gli acquisti:
codice_ordine | id_cliente | id_prodotto | id_tipologia_prodotto | quantita | prezzo_unitario | data

Per uno stesso ordine ovviamente "codice_ordine" dovrà essere lo stesso.

Comunque di questo dovresti preoccupartene solo dopo, mentre l'utente sta effettuando gli acquisti, sul db non ci devi mettere niente, va tutto in sessione fino a quando l'utente conferma l'intero ordine.
In caso contrario metti che di un prodotto hai solo una unità, l'utente lo mette nel carrello, tu lo metti nella tabella e risulta che lo sta acquistando, quindi dovrebbe esserne inibito l'acquisto da parte di altri, ma l'utente prende e chiude il browser perché non lo vuole più e se ne frega di star li a comunicartelo (a volte è capitato anche a me di farlo, quindi fidati che succede), risultato: non hai venduto il prodotto e nessuno lo può acquistare.