I think your db structure is fine if this is all of the information that you would like record. There is one fundamental issue that I see with your objective though, if you would like to have users be able to purchase without logging in you will have a hard time being able to associate a particular individual with an item, then if they return to the site how do you confirm who they are.
If you are selling digital goods you really should have a user registration process in place to allow users to register. This way you can force the user to login to view certain pages or download items. It is possible to deliver digital goods without forcing the user to login but it becomes a bit more complicated when you thing about the other scenarios.