I am creating a database that's going to have millions of records. I would like to get answers for following questions:

1. Is there any dis-advantage of normalized database (like performance de-gradation because of foreign key etc)?
2. Is there any disadvantage of having varchar field of size 256 and in most of the case I will utilize only 10 bytes ?
3. What should I take care of in order to writing highly optimized queries.
4. Is there any disadvantage of having extra columns(reserved), will it increase size on disk even if there is no data?
5. should I avoid join queries ?
6. any other thing which I should take care of ?

-Thanks,
navin