Как правильно спроектировать базу данных: один пост — много изображений?
Здравствуйте!
Помогите пожалуйста, изучаю php, пишу несложный блог, но никак не могу определиться со структурой БД. Как правильно организовать БД так, чтобы одному посту соответствовало множество изображений? Например, в админке создается пост, вводится заголовок, текст поста и загружается множество изображений.
Я предполагаю, что нужно сделать две таблицы posts и images. В таблице images создать колонку post_id. Так же думаю над вариантом создать 3 таблицы posts, images и post_images_relation, где указывать id изображения и id поста.
Какой вариант правильный? Или может есть еще какие-нибудь способы организовать структуру БД?
Первый вариант - связь один ко многим
Второй - многие ко многим
Рассуждаем: один пост имеет много картинок, ок
Задаем себе вопрос: а одна картинка может быть только в одном посте или все таки может так оказаться, что в нескольких?
Ответив на этот вопрос Вы сможете выбрать тип связи
В вашем случае, связь называется one-to-many, и реализуется путем добавления первичного ключа. Второй вариант, описанный вами - это many-to-many, и тогда вам понадобится промежуточная таблица. Для связи пост-изображения используйте первый вариант.