Очень часто используемая концепция в подобных ситуациях - наличие таблицы пользователей и таблицы сообщений, связывающих их вместе с уникальным идентификатором. Этот идентификатор может быть любым - сериализованным идентификатором, именем пользователя, почтовым адресом и т. Д. - при условии, что он уникален. Связывание выполняется с использованием ограничения внешнего ключа. Как именно это достигается в MySQL, я не знаю, но в Postgres это делается так:
CREATE TABLE users (
id serial PRIMARY KEY,
name text
);
CREATE TABLE posts (
content text,
user_id integer REFERENCES users(id) NOT NULL
);
Затем таблицы объединяются с помощью объединения. Это можно сделать несколькими способами, но вот перекрестное соединение после вставки некоторых значений для игры:
@> 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 в MySQL, но я думаю, что приведенные выше конструкции будут работать сразу.
(редактировать: добавлены вставки для уточнения)