Я пишу простую функцию типа "Facebook Wall", где пользователь может публиковать на стене другого человека, и люди могут просто ответить на этот пост на стене или опубликовать новый пост стены. Пользователи не могут ответить на ответ, вы можете отвечать только на оригинальную стену (как и на facebook).
Моя первоначальная схема mySQL db, о которой я думал, выглядит следующим образом:
post_id (pk) post_text (char) date_posted (datetime) is_parent (bool) parent_id (id of parent)
Как это работает:
Если кто-то отправляет новый пост стены, is_parent будет установлен в 1, а parent_id будет установлен в значение null.
Если кто-то отправляет ответ на этот пост, is_parent будет 0, а parent_id будет установлен на идентификатор родительского сообщения.
Мои вопросы
Прежде всего. Я не думаю, что вам нужно два поля для этой же цели. parent_id достаточно в этом случае. Когда у вас установлен post_id auto-increament. Первое назначенное значение будет равно 1, поэтому parent_id = 0 никогда не произойдет. Вы можете предположить, что parent_id = 0 это сообщение первого уровня.
Было бы лучше использовать один запрос для всех ответов.