<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Структура БД для форума
30.10.2012 12:24:30 Структура БД для форума Сообщение #1
Casual

Casual

Освоившийся

Освоившийся

Дата регистрации:
13.10.2012 17:58:28

Сообщений: 20

Допустим мы разрабатываем некоторый форум. Форум разбит на разделы (например HTML, Javascript, PHP на данном сайте), разделы состоят из тем, которые уже содержат сами сообщения. Одним словом стандартная структура.

Как наиболее эффективно спроектировать базу под это дело? Какие таблицы создать? Что где хранить?

Я подумал и пришел к следующему результату. Хотелось бы услышать критику и советы по оптимизации.

Таблица users - информация о пользователях.
Поля:
id - уникальный ид
login - отображаемое имя
и другие.

Таблица sections - содержит информацию о разделах.
Поля:
id,
section_name - название раздела
и другие, если нужны.

Таблица threads - информация о темах.
Поля:
id,
thread_name - название темы
parent_id - id раздела из таблицы sections.
возможно еще какие-то поля.

Таблица messages - сами сообщения.
Поля:
id
parent_id - id темы из таблицы threads
user_id - id пользователя из таблицы users
message - сам текст сообщения.

Получается четыре таблицы: users, sections, threads и messages.

Пользователь заходит на главную страницу форума - ему надо показать список разделов. Легко! Просто отображаем содержимое таблицы sections.

Пользователь заходит в конкретный раздел - нужно показать список содержащихся в этом разделе тем.
Выбираем записи из таблицы threads у которых parent_id соответствует id нашего раздела. Всего один запрос к БД.

Пользователь заходит в конкретную тему - выбираем записи из таблицы messages с parent_id равным id данной темы и потом лезем в таблицу users за никами авторов сообщений. Таким образом два запроса получается в данном случае.

Создание новой темы - просто добавляем запись в threads и в messages. Можно легко переносить темы из раздела в раздел. Легко получить все сообщения конкретного пользователя. Также легко добавить еще уровень иерархии, который объединит в себе разделы, если понадобиться.

На практике еще возникнет ситуация, когда кол-во тем в разделе и сообщений в одной теме больше, чем мы хотим отображать на одной странице. Поэтому, вероятно, не лишним будет добавить в таблицы sections и threads счетчики кол-во тем\сообщений и обновлять их каждый раз когда добавляется\удаляется\переносится тема или сообщение. Это позволит избежать запроса COUNT.

Вообщем, можно ли здесь что-нибудь улучшить?
Профиль Ответить
07.11.2012 03:39:57 Структура БД для форума Сообщение #2
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

Для меня так всё нормально в структуре, но есть один нюанс, имя пользователя по которому вы его встречаете должно быть отдельно от логина.

например

users

id
name
login
password
...
и т.д.

будет и ему приятно, и вам приятно потому что вы не будете встречать пользователя как на любом не уважающем себя сайте...

Это было моё мнение
Профиль Ответить