Certo che non lo è!

Generare dei numeri casuali non ti da garanzia che un'estrazione si ripresenti. E all'aumentare delle estrazioni aumenta la possibilità di collisioni con esecuzione sempre maggiori esecuzioni del "while" ed allungamento dei tempi di risposta.

Crea una tabella ordini. Quando registri un Ordini da questa tabella ottieni un id_ordine (numero ordine + anno o un autoincrement), quindi utilizzi questa informazione in una seconda tabella DettagliOrdine in cui avrai come minimo l'id_articolo e id_ordine.