Si je vous comprends bien, vous devriez lire les concepts de base des bases de données relationnelles (c'est-à-dire http://www3.ntu.edu.sg/home/ehchua/programming/sql/relational_database_design.html ). Vos tableaux devraient ressembler à ceci :
CREATE TABLE post(
post_id INT,
user_id INT
);
CREATE TABLE user (
user_id INT
);
Il s'agit essentiellement d'une relation un à plusieurs entre l'utilisateur et la publication, ce qui signifie qu'un utilisateur peut avoir plusieurs publications. Si vous voulez tous les messages d'un utilisateur (dans ce cas, l'utilisateur avec l'identifiant 1), vous pouvez les obtenir comme ceci :
SELECT * FROM user u
LEFT JOIN post p ON u.user_id = p.user_id
WHERE user_id = 1;
Comme je peux le voir dans votre question, vous voudrez peut-être mapper le résultat sur un modèle orienté objet. Cela dépend beaucoup de la technologie/langue que vous utilisez. La majorité des technologies proposent des bibliothèques pour se connecter à des systèmes de bases de données comme PostgreSQL, des connexions ouvertes et fermées lancent des requêtes et récupèrent les résultats. Dans ce cas, vous devez mapper vous-même les résultats. Mais il existe également des mappeurs avancés comme hibernate qui essaient de faire ce travail pour vous. Mais pour les utiliser, vous devez avoir une bonne connaissance des technologies "sous le capot".