Коммик (stalinist) wrote,
Коммик
stalinist

Иерархическая структура в реляционной базе данных: To like, or not to like, that is the question

Решил-таки сделать кнопки "Нравится/Так себе/Не нравится", которые каждый сможет вставить в свой каждый пост в ЖЖ. Поскольку ЖЖ делать этого не хочет, хранить данные придется на моём сервере. Данные таковы (для примера используется этот пост: http://stalinist.livejournal.com/1088671.html): когда читатель нажимает кнопку, на сервере можно получить следующую информацию:

1. Имя писателя -- 15 символов (stalinist)
2. Номер поста -- 7 символов (1088671)
3. IP-адрес читателя (45.123.17.89).

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

Итак, получается чисто иерархическая структура "один ко многим": у каждого писателя -- много постов, у каждого поста -- много (будем надеяться) отзывов.

Под каждой кнопкой будет ссылка на PHP-скрипт на моём сервере, для каждой кнопки -- свой. Когда читатель нажимает одну из кнопок, скрипт построит запись (stalinist, 1088671, 45.123.17.89), убедится, что она еще не существует (а иначе откажет читателю), и добавит её в базу данных, увеличив соответствующий счетчик на единицу.

Товарищи, не порекомендуете ли вы мне структуру данных (таблицы) реляционной базы данных (MySQL) для этого сценария? Никогда этого не делал, поэтому вначале пришла в голову вздорная мысль лепить все IP отзывов к заданному посту в один BLOB четырех-байтовыми порциями и делать в нем поиски самому в PHP. Потом понял, что это глупость.
Tags: internet
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 4 comments