Shopping cart database, should order object have a relationship with the product, or should I duplicate the product information
If the item changes or gets updated, it should get a new ItemID. You need the historic record. So say you have a shirt and it comes in blue ItemID Shirt. If you offer it in Green change the new ItemId to be ShirtGreen. iF it is an upgrade, say offering blue shirt with a  pointed collar: ItemID: ShirtPointedCollar.