Если я правильно понял, вам может потребоваться сделать что-то вроде следующего:
CREATE TABLE users (
user_id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL
) ENGINE=INNODB;
CREATE TABLE pictures (
picture_id INT NOT NULL PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
posted_by INT NOT NULL,
FOREIGN KEY (posted_by) REFERENCES users(user_id)
) ENGINE=INNODB;
CREATE TABLE users_in_pictures (
user_id INT NOT NULL,
picture_id INT NOT NULL,
PRIMARY KEY (user_id, picture_id),
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (picture_id) REFERENCES pictures(picture_id)
) ENGINE=INNODB;
Обратите внимание, что каждое изображение может быть опубликовано пользователем. Фактически поле posted_by
ограничено внешним ключом, который ссылается на таблицу users
.
Кроме того, я предполагаю, что вы хотите отметить фотографии ala-facebook. В этом случае вы можете использовать третью таблицу, которая использует составной первичный ключ для (user_id, picture_id), и оба поля также ограничены соответствующей таблицей.