2015-11-02 3 views
1

Я хочу, чтобы создать таблицу «комментарии», поэтому имеет текст, созданный идентификатор пользователя и т.д. ...Комментарий таблицы MYSQL

Но пользователь может прокомментировать многое.

Так что я не могу поместить внешний ключ в стол «Почта», так как мне также нужно прокомментировать таблицу «Картинка», какова наилучшая практика для этого?

Итак, в основном таблица ссылок на несколько таблиц?

+0

добавить столбец 'type' или' rel_table' или что-то еще – Alex

+0

Я бы рассмотрел 2 таблицы: post_comment и picture_comment, с обратной стороны по отношению к соответствующей родительской таблице. Пытается использовать один способ, подходящий для всех, может работать, но также может привести к головной боли целостности данных в будущем. – JRD

ответ

1

Комментарий таблица:

comment(comment_id,text, created, userid, other_field,...) 

стол Ссылка

link(comment_id,comment_type, refID,) 

где comment_type бы имя таблицы, в которую комментировал ("картинка", "пост", ...). comment_id будет идентификатором комментария пользователя. refID является id таблицы пользователь комментировал (POST_ID, Picture_id, ...)

Допустим, у вас есть эти записи в таблице:

POST(id, some_text,other_stuff,...): 
(1, "Hello Hello", "something",...) 
(2, "Hey there", "something_else",...) 
... 
(57, "TEST TEST", "another something",...) 

PICTURE(pic_id, description, other_stuff): 
(4, "A cat", "something",...) 
(2, "Another cat", "something_else",...) 
... 
(57, "finally a dog", "another something",...) 

Когда объявления пользователя А новый комментарий:

Комментарий

(1,"What a cute cat", 2015-10-02, user24) 
(3,"That something is awesome", 2015-10-02, user87) 

ссылка

(1,"Picture", 4) //That comment is about the cat (Picture ID 4) 
(3, "Post",57) //That comment is about the post with ID 57 
Смежные вопросы