Я хочу знать структуру базы данных кнопки «Мне нравится», такой как Facebook или Google +1 и так далее.
Кнопка «Нравится» — обычный элемент для социальных сетей. Пользователь может лайкнуть сообщение и отклонить его, чтобы показать свою поддержку сообщения.
Система должна определить, что пользователю понравилось или не понравилось это сообщение раньше, чтобы показать пользователю кнопку «Не нравится» или «Нравится».
Но как работает эта функция и как устроена база данных?
Я понял этот метод:
Каждое сообщение/публикация имеет столбец like для сохранения сериализованных пользовательских данных.
Post table
id content like(serialized user_id)
1 hi world a:4:{i:0;i:234;i:1;i:32;i:2;i:423;i:3;i:4215;}
2 this is a good day a:2:{i:0;i:2324;i:1;i:342;}
и десериализовать и определить user_id перед выводом сообщения
while($row=mysql_fetch_row($sqlresult))
{
$like_data_array = unserialize($row['like']);
if( in_array( $user_id , $like_data_array ) )
{
echo 'you liked this post';
echo '<button>unlike</button>';
}
else
{
echo '<button>like</button>';
}
}
Но я думаю, что этот метод слишком медленный для большого количества лайков. Особенно пост имеет более 100 000+ лайков.
Есть ли более эффективная конструкция?