2017-02-14 3 views
0

У меня есть MySQL таблицы, где пользователь может размещать некоторый контент на сайте следующим образом:PHP MySQL Комментарий

CREATE TABLE `Posts` (
    `id` int(6) UNSIGNED NOT NULL, 
    `name` varchar(30) NOT NULL, 
    `post` varchar(8000) NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) 

Теперь я хочу, чтобы создать таблицу для пользователя, чтобы комментировать сообщения. Я не знаю, как правильно это сделать, недостаток знаний. Могу ли я создать новую таблицу, как этот

CREATE TABLE `Comments` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(30) NOT NULL, 
    `comment` varchar(800) NOT NULL, 
    `postId` varchar(8) NOT NULL, 
) 

и когда пользовательские комментарии я могу показать, что комментарий, подсоединив «ID» из почтовой таблицы и «» из сообщения дан «комментарий» таблицы.

Это правильный способ сделать это, или есть лучший способ комментировать стол стол?

+3

в основном вы можете связать их с внешним ключом. Когда пользователи делают комментарий, сохраните идентификатор пользователя в качестве внешнего ключа в таблице комментариев, затем, чтобы получить комментарий, сделанный пользователем, присоедините две таблицы в своем запросе – Akintunde007

+0

Прочитайте эту статью, в которой объясняются основы внешних ключей : https://www.sitepoint.com/mysql-foreign-keys-quicker-database-development/ – GreensterRox

ответ

1

В принципе, Вы можете связать с внешним ключом, как это.

Posts (
     id int(6) UNSIGNED NOT NULL, 
     name varchar(30) NOT NULL, 
     post varchar(8000) NOT NULL, 
     date timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
    ); 

Вы можете определить внешний ключ для пользователя, если хотите (это хорошая оценка).

CREATE TABLE Comments (
     id int(10) NOT NULL AUTO_INCREMENT, 
     name varchar(30) NOT NULL, 
     comment varchar(800) NOT NULL, 
     postId int(11) NOT NULL, 
     user_id int(11) DEFAULT NULL 
); 


ALTER TABLE Comments ADD CONSTRAINT id_fk_post 
FOREIGN KEY(postId) REFERENCES Posts (id); 


ALTER TABLE Comments ADD CONSTRAINT id_fk_user 
FOREIGN KEY(user_id) REFERENCES Users (id); 

Теперь вы можете найти все комментарии поста, как это:

SELECT * FROM Comments where postId = 3; 
1
CREATE TABLE `Users` (
    `user_id` int(6) UNSIGNED NOT NULL, 
    `name` varchar(30) NOT NULL, 
    `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
) 

CREATE TABLE `Comments` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `name` varchar(30) NOT NULL, 
    `comment` varchar(800) NOT NULL, 
    `postId` varchar(8) NOT NULL, 
    `user_id_fk` int(6) NOT NULL 
) 

Так как пользователь публикует комментарий, вы сохраняете идентификатор пользователя в таблице комментариев вместе с комментарием.

Чтобы получить, попробовать что-то вроде:

$query = 'SELECT Users.user_id, 
       Users.name, 
       Comments.comment FROM User JOIN Comments ON Users.user_id= Comments.user_id_fk 
         '; 
Смежные вопросы