Dynamic contacts database
Check out relational database design.  It's an art and a science, and something that really can't be explained to the fullest in a post.  But what you should do is create relationships between contacts and all possible data that will be related to it.  This is most prevalent through the use of primary and foreign key relationships.