<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

Подписавшись по 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
...
и т.д.

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

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