You'll obviously get a lot of different answers to this question, but I tend to think about the database first, and then build objects based on that. I think it's just easier for my brain to work that way, as I can visualize the database schema (and also, it is very easy to show relations in a database schema). @Tdpi hits it right here: you should design based on the problem domain - for me that translates to thinking in database, but it's different for different people.
Relations between objects are not always as obvious, and so it's harder to draw a diagram that shows their relations. Having objects inheriting from each other (but possibly using the same tables on the db side) can make things even more confusing. That said, in some complex applications, I've done both at the same time - eg, creating the table, and at the same time, creating the object structure where multiple objects inherit from the same base, and all use the same table.
Another argument for DB-first is most ORM layers tend to generate the objects based on the database schema, so if you design the objects, then try to reverse engineer the database, then let the ORM generate objects, you're kind of doing things backwards and are almost certainly not going to end up with exactly what you designed on paper first.
If you're using an ORM that generates the database for you based on the objects, then it probably makes sense to do this the other way around, and design your objects first. As long as you are modeling the problem domain properly, it is less important if you are building the database or the objects first.
All that said, the corollary to this is when I'm designing the front-end side of the application, I design it with a pencil and paper, and don't even think about how the data is stored in the backend (objects, database, or whatever). I just design the interface how I want it to look and operate.
The next job is then wiring up that UI to the backend schema, which is sometimes very simple, and is sometimes not so simple - but I've found this is how the best UIs are built. Often I don't expose all the functionality, or only allow simple settings to be configured (eg, only allowing permissions to be applied, even though the backend allows permissions to be denied from inheriting as well). This means your UI is not overly complex, or at least it's easier to build the first version, but you're also not stuck with making a limited backend or having to change it drastically in the future.
When you build the UI based on how the data is stored, or the objects that you've created, it tends to look like exactly that -- a UI that a programmer designed.