sql >> Base de Datos >  >> RDS >> Mysql

Cómo estructurar la base de datos para alertas de elementos no leídos por usuario

Al revisar el esquema relevante para phpBB , encontré lo siguiente:

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

Y:

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

Luego busco aquí en su wiki :

Básicamente, tienen una tabla de búsqueda para almacenar los datos asociados con la visualización de un tema (subproceso) por parte de un usuario, y luego la comparan con la marca de tiempo en la tabla de visualización del foro, para determinar si el usuario ha visto el tema.