re: track which promotions we have running at a given time
What issues did you face with doing this? This is difficult to help with as it's quite tied with your business logic, so if you can talk about the problems you're having that'd be useful
---
re: Track the usage of each promotional element
I'd recommend a table where each record represents the Start <> End usage of a single element for this, and a table where each record represents a single element:
---
re: Limit usage of a given element if we are oversold
This one's tricky. You're going to need to either eyeball the usage yourself via a Calendar / Timeline element before creating the records, or create a system to help you check whether new sales you make have any conflicts with existing usage and then reject stuff