I'm building my first db and would like some feedback on my model. I'm going to build a site for users to evaluate other user's portfolios (containg images), in which some (but not all) users may be a part of one or more teams. I have ommitted many of the rows of the tables, but have retained the keys and relations.
It looks good to me. It isn't circular since the user table does not rely on any of the other tables, so you can't get in an infinite loop.
I store password hashes (one way encryption) in the database and then compare the user-entered encrypted password to the one in the database.
Serial (I assume it would be an integer which counts up?) does have slight performance benefits in that it is smaller (more rows fit on a database page, more rows can fit in memory, etc.) and compares faster than character data. Also if the user decides to change his or her handle you must now cascade that through to every table which references it, and there may not be indexes on those columns in the ref tables (meaning it will table scan all of the other tables). So you now have to place indexes on handle (although in this case it looks like you will anyway) and again character data is larger and slightly slower than numeric.