Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment structurer la base de données pour les alertes d'éléments non lus par utilisateur

Tout en examinant le schéma pertinent pour phpBB , j'ai trouvé ce qui suit :

# 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`;

Et :

# 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`;

Ensuite, je regarde ici dans leur wiki :

Donc, essentiellement, ils ont une table de recherche pour stocker les données associées à la consultation d'un sujet par un utilisateur (thread), puis les comparent à l'horodatage dans la table de vue du forum, pour déterminer si le sujet a été consulté par l'utilisateur.