Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So strukturieren Sie die Datenbank für Benachrichtigungen über ungelesene Elemente pro Benutzer

Während Sie das relevantes Schema für phpBB , habe ich Folgendes gefunden:

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

Und:

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

Dann schaue ich hier in ihrem Wiki nach :

Sie haben also im Wesentlichen eine Nachschlagetabelle, um die Daten zu speichern, die mit der Anzeige eines Themas (Threads) durch einen Benutzer verbunden sind, und vergleichen sie dann mit dem Zeitstempel in der Forenansichtstabelle, um festzustellen, ob das Thema vom Benutzer angezeigt wurde.