I would recommend storing all base information in one table for essentials like username,pass,email, etc.
This table would be your "parent" table where setting the id would be your primary key
(eg.)
CREATE TABLE IF NOT EXISTS `parent`(
`id` INT(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(`id`)
);
Then using a foreign key on your two "unique" tables that coincide with your parent table that reference your parent id
(eg.)
CREATE TABLE IF NOT EXISTS `child1`(
`id` INT(10) NOT NULL AUTO_INCREMENT,
`parentID` INT(10) NOT NULL,
FOREIGN KEY(parentID) REFERENCES parent(id)
PRIMARY KEY(`id`)
);
CREATE TABLE IF NOT EXISTS `child2`(
`id` INT(10) NOT NULL AUTO_INCREMENT,
`parentID` INT(10) NOT NULL,
FOREIGN KEY(parentID) REFERENCES parent(id)
PRIMARY KEY(`id`)
);
Additionally you can set the cascade on your foreign keys for UPDATE | DELETE
Then when you need to SELECT the information you can just use the id from the parent table with a LEFT JOIN
SELECT p.*,c1.*,c2.* FROM parent p
LEFT JOIN child1 c1 ON c1.parentID=p.id
LEFT JOIN child2 c2 ON c2.parentID=p.id
WHERE ...
And because the foreign key is always going to be unique you don't have to worry about selecting other users info. If information for user is in child1 table then child2 table just comes back blank, and vice versa.
Additionally, you wouldn't even need to use a foreign key, so long as you still go by the same method of using a parentID in your children table but help when you go to update information.
Hope this helps.
Cheers.