Order lines copy the name and the price
The alternative is to join to products when rendering an old order, which means an invoice changes when the shop does — a product renamed, a price cut, a variant deleted. Copying costs two columns per line and makes the order self-contained. The foreign key stays for analytics, so nothing is lost by keeping both.