I wouldn’t delete them - I’d have a visible flag. This way you can reactivate the ad at any time and running a report to show past ads is also easier to do.
I’d also advise downloading OpenX and looking at some of its code but also it’s database structure. I’m not advising scrapping your existing ad system in favor of it since what you have sounds pretty specialized - I’m advising doing a bit of inspiration mining against its structure. Ideas for how to implement what you’re doing, what you’d like to do, but also some things you might not have thought of. Though I didn’t adopt it for my ad solution I did find the software very instructive. (I didn’t adopt it because it’s a chainsaw and I needed a scapel).