Plan for expansion. Try to keep future changes to the structure of the database as cheap as possible by thinking of as many possible fields and tables early on, even if those tables end up empty or only have a few items in them. It's much more expensive to later go in and add columns and tables, and then relate them, after tons of data is already in place. Databases for a website will usually have some sort of 'user' table that is used as some sort of ACL, controlling what a certain user has access to. After that, it depends on what you want you site to do.
I would designate one server as your database server, one as your web and application server, and have the web/app server connect to the database server.
There are a number of things you can do. Namely, the way you write code is going to have an effect here, also the design of the database can play a part, and even the queries you write for that database. You might want to study relational databases in depth a little if efficiency is a big thing for you, as its a topic that would quickly fill one of these threads!!
hope this helps!!