MySQL структура для постов и комментариев - PullRequest
1 голос
/ 10 января 2012

Я прочитал несколько уроков, документацию по mysql, структурам БД, а также использую его через php в течение нескольких недель. Теперь у меня проблема, я не знаю, как сформировать / организовать / создать структуру БД для постов и комментариев. Я уже читал некоторые посты об этом (здесь на stackoverflow), но я не нашел ничего полезного. Я понимаю, что мне нужно иметь 2 таблицы для постов и комментариев, и когда мне нужно напечатать их на странице с внешним ключом (или идентификатором), я «объединяю» их (только на странице, а не с SQL). Когда человек просматривает страницу, он обычно видит сообщение и комментарии, но в «фоне» все хранится в 2 таблицах.

Нужно ли добавлять новый столбец каждый раз, когда кто-то добавляет новый комментарий или ответ?

Если мой вопрос верный, это означает, что если в сообщении более 100 комментариев, это означает, что мне нужно ИЗМЕНИТЬ ТАБЛИЦУ каждый раз? Это означает, что если к записи «А» есть 3 комментария, а к записи «Б» - 150 комментариев, в моей таблице «комментарии» будет более 100 столбцов?

например:

Сообщений | column1 | column2 | ... | columnN

A | Bla1 | бла2 | бла3 | - пусто | - пусто | ... | - пусто - |

B | Bla1 | бал2 | бла3 | бла4 | бла5 | бла6 | ... | bla100 |

1 Ответ

6 голосов
/ 10 января 2012

На базовом уровне у вас будет таблица для каждого типа «вещи» в вашем приложении. В данном случае это таблица для сообщений и таблица для комментариев. Что-то простое, как это:

Post
--------
Id
Content
User
DatePosted

Comment
--------
Id
PostId
Content
User
DatePosted

Это создаст так называемую связь «один ко многим» (или фактически «ноль ко многим») между сообщениями и комментариями, при этом каждое сообщение может иметь ноль или более связанных комментариев, но каждый комментарий может быть связан только с одним сообщением. .

В вашем коде (который является совершенно другой темой), чтобы отобразить сообщение и связанные с ним комментарии, есть пара вещей, которые вы можете сделать. Предполагая, что в качестве входных данных у вас есть Id нужного вам поста, вы можете получить этот пост и его комментарии:

SELECT `Content`, `User`, `DatePosted` FROM `Post` WHERE `Id` = ?Id
SELECT `Id`, `Content`, `User`, `DatePosted` FROM `Comment` WHERE `PostId` = ?Id

Что вы будете делать с полученными данными, зависит от вас и от того, как вы хотите использовать их в своем приложении. Он возвращается как два результата таблицы, первый из которых имеет одну запись (если сообщение существует), а второй - ноль или более записей. Естественно, вы захотите проверить, существуют ли вещи, прежде чем пытаться их использовать и т. Д. (Поэтому, если первый запрос не возвращает результатов, не пытайтесь продолжать отображать сообщение. Просто покажите ответ по умолчанию или ошибку.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...