well, that's the structure i've been using... when a user registers, 2 tables are created 'User'_inbox and 'User'_attachments .. it logical to store two tables for each user??! is there a better way?? [code] DROP TABLE IF EXISTS `user_accounts`; CREATE TABLE `user_accounts` ( `UserID` mediumint(9) NOT NULL auto_increment, `Username` varchar(30) NOT NULL default '', `Password` varchar(30) NOT NULL default '', `First_name` varchar(30) NOT NULL default '', `Last_name` varchar(30) NOT NULL default '', `Gender` varchar(10) default NULL, `Birth_date` date NOT NULL default '0000-00-00', `Country` varchar(20) NOT NULL default '', `Citry` varchar(20) NOT NULL default '', `Alternative_email` varchar(50) NOT NULL default '', `Occupation` varchar(20) NOT NULL default '', PRIMARY KEY (`UserID`), UNIQUE KEY `Username` (`Username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; DROP TABLE IF EXISTS `user_inbox`; CREATE TABLE `user_inbox` ( `MessageID` mediumint(9) NOT NULL auto_increment, `MessageTime` time NOT NULL default '00:00:00', `MessageDate` date NOT NULL default '0000-00-00', `MessageState` char(1) default NULL, `MessageType` varchar(10) default NULL, `Sender` varchar(30) NOT NULL default '', `Subject` varchar(150) default '(none)', `Body` longtext, `Attachment` char(1) default NULL, PRIMARY KEY (`MessageID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; DROP TABLE IF EXISTS `attachments`; CREATE TABLE `attachments` ( `AttachmentID` mediumint(9) NOT NULL auto_increment, `Owner` varchar(30) NOT NULL default '', `File` mediumblob NOT NULL, PRIMARY KEY (`AttachmentID`), KEY `Owner` (`Owner`), CONSTRAINT `attachments_ibfk_1` FOREIGN KEY (`Owner`) REFERENCES `user_accounts` (`Username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; [/code]