I am creating a simple design for a social-networking site using the MVC paradigm(in CakePHP) for a project, I have a table called Users which stores all the User Details, I have a Groups Table which stores all the Group details, the relation between these 2 models is has and belongs to many, then I have a group_portfolios table which stores all portfolios belonging to a group and a user_portfolio table which stores all portfolio information related to a user. A user can have multiple portfolios A group can have multiple portfolios A user can have many media A group can have many Media
I have separated the functionality for media associated with users and groups, My question would be,
1) am I thinking in the correct way in terms of modelling an MVC application?
2) Since I am separating the the functionality for users and groups I am ending up with 2 tables for all information related to them e.g media and portfolio. Does this cause any redundancy and performance related issues, especially when searching for a portfolio and so on?
3) Will this be able to scale when I want to add more features later on?
4) Is there a better way to model the system?
Thank You