Un concept très souvent utilisé dans une situation comme celle-ci consiste à avoir une table d'utilisateurs et une table de publication, en les reliant avec un identifiant unique. Cet identifiant peut être n'importe quoi - un identifiant sérialisé, un nom d'utilisateur, une adresse e-mail, etc. - tant qu'il est unique. La liaison se fait à l'aide d'une contrainte de clé étrangère. Exactement comment cela est réalisé dans MySQL, je ne sais pas, mais dans Postgres, c'est fait comme ceci :
CREATE TABLE users (
id serial PRIMARY KEY,
name text
);
CREATE TABLE posts (
content text,
user_id integer REFERENCES users(id) NOT NULL
);
Les tables sont ensuite fusionnées à l'aide d'une jointure. Cela peut se faire de plusieurs manières, mais voici une jointure croisée après insertion de quelques valeurs avec lesquelles jouer :
@> INSERT INTO users (name) VALUES ('James');
@> INSERT INTO users (name) VALUES ('Jones');
@> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
@> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
@> SELECT U.id AS user_id, U.name, P.content \
FROM users U, posts P \
WHERE U.id = P.user_id;
user_id | name | content
---------+-------+-----------------------
1 | James | Hello from James.
2 | Jones | Greetings from Jones.
YMMV dans MySQL, mais je pense que les constructions ci-dessus fonctionneront immédiatement.
(edit :INSERTs ajoutés pour clarification)