2016-05-21 2 views
0

В качестве примера я хочу использовать переполнение стека. Теперь есть вопрос, и, скажем, они хранят в базе данных следующие вещи.Как сохранить ответы на таблицу MySQL

question_ID question_title question_body question_asker question_date

Но есть 2 вещи, оставленные, комментарии и ответы. Поэтому мой вопрос: «Как я могу хранить их в базе данных?» Я имею в виду, я не думаю, что 5 или, вероятно, 10 похожих на статью ответов хранятся только в ячейке.

+0

Ознакомьтесь с http://meta.stackexchange.com/questions/2677/database-schema-documentation-for-the-public-data-dump-and-sede для получения подробной информации о схеме Stack Exchange. – Mureinik

ответ

1

Ответы и commments будут храниться в разных таблицах, например, так:

Database

вопросы

question_ID question_title question_body question_asker question_date

отвечает

answer_ID answer_title answer_body answer_asker answer_date question_ID

комментарии

comment_ID comment_title comment_body comment_asker comment_date answer_ID

Вот пример PHP кода Извлечение данных с помощью INNER JOIN:

PHP

$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow', $user, $pass); 
$query = 'SELECT * from questions INNER JOIN answers ON answers.question_ID = question_ID INNER JOIN comments on comments.comment_ID = answer_ID'; 
foreach($dbh->query($query) as $row) { 
    print_r($row); 
} 

Полная схема StackOverflow базы данных: Database schema

0

Вы должны прочитать об отношениях и дизайне базы данных.

Для вашего примера, база данных должна хранить дополнительные таблицы для комментариев и ответов.

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

+0

И есть еще одна проблема, которая, по мнению некоторых людей, не может быть «исправлена». Когда вы удаляете сообщение/вопрос из середины, например, если вы удаляете номер 26, оно будет равно 25, 27 ... Тогда, если это произойдет, произойдет огромный дисбаланс. Есть ли способ автоматического упорядочения столбца id или другого решения? –

+1

В вашем случае, если этот id 26 будет удален, нужно ли переместить все следующие числа? нет, мы все еще можем использовать данные. Результат сортировки будет таким же. ID - это только поле идентификации, оно не обязательно должно быть последовательным. В зависимости от БД существуют различные механизмы генерации следующего значения, mysql и sql servrer использует специальный тип столбца, oracl использует последовательности. – mjpolak

Смежные вопросы