personally, I'd make a composite key out of certain fields rather then always having an ID field. But that's just the way we do it in certain Databases at work. Also wouldn't your tbl_auctions be linked to tbl_user to say who made the listing? And have a bid table to mark who bidded on what, when and how much?
I found (personally) that adding prefixes can make stuff harder to understand, especially when doing joins, as JOIN <table> USING (id) is easier to maintain then JOIN <table> HAVING id1 = id2 Foreign keys should have the same name, so your tbl_order has three foreign keys which are named differently to their origins.
Also, I'd personally put a start date or entry date on most of the tables, so you can track activity, make reports an so on. The USER table won't need an auction key as it should be on the order reference, someone may purchase multiple items and won't need to have a new record each time.
Rather than giving foriegn/primary key fields the same name, i find using the postfixes _pid and _fid most useful - it keeps things clearer
The thing is that you're duplicating the auction ID, there's one in the auction table and one in the user table, it'll make it better in the long run to be able to track users activity.