i'm developing text ads system. Some small clone of Google Ads

**Updated image so all field names would be seen**
if you don't seen diagram, [click here](http://img41.imageshack.us/img41/5351/dbdiagram.png)

[alt text http://img41.imageshack.us/img41/5351/dbdiagram.png](http://img41.imageshack.us/img41/5351/dbdiagram.png)

Here is diagram with common tables.
Basically make it short, advertiser can have up to 10 variant of same campaign with different text variations, can geo-target his ads and unique impressions count only for IP that haven't been on certain site for more than 24 hours.

Pretty simple but the question is what i lack in here from your experience because later it would much harder to fix design flaws and some of you probably done something alike also many SQL gurus in here so maybe i did over normalized DB or did not normalized as needed ?

Second question is. My end goal is to get ads for user from ie. Germany that haven't seen same ad on same site for 24 hours as long as ads fit country of user. Each impression is count same as each click if there is one. I need to get 5 "random" ads based on IP, Country and higher CPC (pay per click).
How can i achieve this with current design or maybe to design database the way it would be easy to get ads and show stats for advirtisers...

thanks for any help...