Criando uma function Like php mysql ajax

Tudo bem, tenho procurado e descoberto muito sobre esse assunto, mas nada de satisfatório.

Quero acompanhar quem gostou e não adicionar apenas um +1 a uma tabela.

Eu tenho três tabelas: posts, comentários e curtidas.

O design da mesa fica assim para o momento

CREATE TABLE IF NOT EXISTS `likes` ( `like_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `post_id_fk` INT(11), `comment_id_fk` INT(11), `uid_fk` int(11) NOT NULL, `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0.0.0.0', FOREIGN KEY (uid_fk) REFERENCES users(uid), FOREIGN KEY (post_id_fk) REFERENCES post(post_id), FOREIGN KEY (comment_id_fk) REFERENCES comments(comments_id), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1; 

E como você pode ver eu tenho três foreign keys diferentes, uid_fk para o usuário uid para que eu possa saber quem gostou do quê. E agora chega lá problema, uma chave estrangeira para post_id e outra para comments_id.

O Mysql não aceita uma chave estrangeira se ela não existir. se eu quiser “curtir” um comentário, não será por causa da chave estrangeira de post_id_fk.

Como resolver esta bagunça DB?

E o problema do tipo AJAX / delike:

Eu encontrei este jQuery: Mudando de class de botão com chamada AJAX quando eu estava pesquisando, e parece simpel e muito bom. E também tenho seguido este http://pluscss.com/tutorials/ajax-like-script-using-phpmysqljquery tutorial. Mas estou tendo problemas para combiná-los.

É isso que estou tentando fazer:

  1. contar a quantidade atual de curtidas
  2. verifique se o usuário gostou antes
  3. dê ao usuário a opção de gostar (ou delike se gostou anteriormente)

com ajax e like.php

Alguém poderia me ajudar com isso eu ficaria muito grato!