Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como estruturar o banco de dados para alertas de itens não lidos por usuário


Ao revisar o esquema relevante para phpBB , encontrei o seguinte:
# Table: 'phpbb_topics_track'
CREATE TABLE phpbb_topics_track (
    user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
    topic_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
    forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
    mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
    PRIMARY KEY (user_id, topic_id),
    KEY topic_id (topic_id),
    KEY forum_id (forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;

E:
# Table: 'phpbb_forums_track'
CREATE TABLE phpbb_forums_track (
    user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
    forum_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL,
    mark_time int(11) UNSIGNED DEFAULT '0' NOT NULL,
    PRIMARY KEY (user_id, forum_id)
) CHARACTER SET `utf8` COLLATE `utf8_bin`;

Então eu olha aqui no wiki deles :

Então, essencialmente, eles têm uma tabela de pesquisa para armazenar os dados associados à visualização de um tópico (thread) por um usuário e, em seguida, verifica-os com o carimbo de data/hora na tabela de visualização do fórum, para determinar se o tópico foi visualizado pelo usuário.