@bighoc
php/javascript developer

Как правильно организовать базу данных для блога ?

Намереваюсь написать блог для путешествий. То есть люди приходят, регистрируются, выкладывают свои фото и текст, и делятся этим с другими людьми. В самом же начале стал вопрос, как организовать БД ?
Я собираюсь сделать так что бы статья была разбита по дням, то есть человек будет добавлять день - туда пихать фото и текст, потом добавляет день №2 и т.д. И только потом отправляет все формы которые я и вношу в БД.
Пока у меня в голове сидит вариант - под каждую статью - делать новую таблицу, но я не знаю- так делают ?
Но тут у меня тоже вопрос. Фотографий для одного дня может быть 30 шт, а может быть и 0. Есть вариант крепить фотографии к тексту, либо на оборот, но я не знаю как будет грамотней. По этому и работу начать не могу.
Скажу сразу что это мой первый сайт, буду использовать mySQL + PHP.
  • Вопрос задан
  • 6111 просмотров
Пригласить эксперта
Ответы на вопрос 4
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Под каждую статью новую таблицу это бред, не стоит повторять этот путь.
был у меня проект даже не один а 10+ на поддержке там на каждую запись создавалась табличка с 1 записью.
Все хорошо работало но mysqadmin просто умирал, такую БД нельзя было перенести на другой хостинг mysqldump просто зависал при дампе. примерное количество таблиц было 3.2к-4к.

Создаете для статей таблицу для статей например posts
id int(11)
user_id int(11)
datecreated timestamp
dateupdated timestamp
content text
title varchar(255)
h1 varchar(255)

Для фоток photos
id int(11)
post_id int(11) это ссылка на пост_id
path путь к фотке например /storage/photo/a1/d1/d2/(md5).jpg
desctiption varchar(255)
datecreated timestamp
dateupdated timestamp

Для фоток я обычно так храню путь к оригиналу full
для меньших картинок в имени файла есть прификсы
250_(md5).jpg
250x250_(md5).jpg

Cскачиваем фреймворк laravel или Yii1-2 создаем миграции на основе 2х схемок выше.
Используем внутренний генератор фреймворка для создания моделей.
Создаем нужные контроллеры и пишем код.

Можно и без ООП сделать но это будет долго.

Можно поставить worpress и добавить пару плагинов для расширения записей например ACF но у него галерея платная а остальные поля бесплатны.
Ответ написан
Комментировать
vshemarov
@vshemarov
По всему видно - слишком мало у Вас знаний и опыта, чтобы создавать с нуля такой ресурс.

Вы только подумайте:
Для каждого юзера нужно создавать аккаунт, систему авторизации, восстановление пароля и пр.;
Необходимо разграничить права доступа для каждого юзера - кто что может делать со своим блогом, а что с чужим;
При загрузке изображений необходимо предусмотреть загрузку как с компьютера, так и со сторонних ресурсов, нужен ресайз и подгонка под определенные размеры, контроль типа загружаемого файла, удобный просмотр фотографий и т.д., и т.п.;
Не только создание, но и редактирование и удаление как постов лога, так и фотографий;
Администрирование всего этого добра (мало ли кто и что начнет заливать);
...
И много-много еще всяческих нюансов учесть, описание которых составит не одну страницу.

А можно взять уже готовый движок и без всяких магий получить под ключ то, что нужно: юзеры регистрируются, каждый при регистрации получает личный блог, может туда постить рассказы и фотки, другие юзеры могут их комментировать, лайкать, перепощивать во всяческие фейсбучеки и вконтактики, а Вы сосредотачиваетесь не на решении уймы задач, мелких и крупных, которые уже решены до Вас, а на развитии проекта
Ответ написан
IkaR49
@IkaR49
А даже если не делают - не важно, пробуйте. Будет хорошо - оставите так, будет плохо - сделаете иначе. Это же первый проект, это же самое интересное, это самое то, чтобы учиться!
Как вариант, чтобы крепить фотографии: сделайте своего рода вики-разметку. То есть чтобы вставить фото - пишется код и указывается номер фотографии из загруженных. Здесь же плюс будет, вдруг кто-то не захочет загружать фотографии к вам, а добавит на внешний хостинг. Тогда надо будет просто хранить plain-текст и выгружать его по запросу.
Ответ написан
@bighoc Автор вопроса
php/javascript developer
Я хочу написать без использования фреймворков и вордпресса, ибо не с тем не с другим не работал. И цели сейчас такой нет, просто ПХП и mySQL. Но вот один момент для меня мутный, как база хранит фото ? Для него тоже должно быть поле ? В примере sanchezzzhak я его не нашёл. Но такой вариант с двумя таблицами мне нравится.
datecreated timestamp
dateupdated timestamp
Вот эти два поля я так понимаю временная метка, но если фото было загружено, как оно может апдейтиться ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы