Well, to an extent the requirements must come first. The database is the servant of your requirements after all, not the other way around.
It seems to me that what you're really asking is: should you design the application completely before you start on the database (and then write code after that)?
My answer is no. It's better to jump in and get moving quickly.
I would probably design the app in broad strokes and then use an iterative approach. Which is an idea from Agile. There is a lot out there on this subject.
Now if this was a two year project with 20 developers, stakeholders, and a budget, things would be somewhat different... But perhaps not as different as you think! The more complexity you're dealing with, the harder it becomes create a perfect, monolithic plan up front.
Some people say there is a point where it actually becomes impossible.