在创建一个小型社区网络站点的过程中,我正在寻求一些建议,以了解如何最好地设计一个表,该表将存储要作为流提取的数据,例如:
User X has added a friend!
User Y has commented on a post!
User X changed their profile picture!
User X has changed their motto!
目前这是我的设置,但在我继续之前我想知道我是否在正确的轨道上
update_id int PK
member_id int FK
friend_id int FK
update_action text
update_time datetime
update_hidden tinyint
目前,我正计划在用户执行每个活动时运行一个额外的insert查询来更新此表,不确定这是否是最好的,或者在我的情况下是完成此任务的好方法。任何提示或建议将不胜感激感谢您的时间。
最佳答案
您可以为系统应提供的所有不同活动创建一个表。
CREATE TABLE activity
(
id MEDIUMINT UNSIGNED PRIMARY KEY UNIQUE NOT NULL AUTO_INCREMENT,
description NVARCHAR(126) UNIQUE NOT NULL
);
例如:评论了一篇文章,交了一个新朋友等等。
然后记录发生的所有活动,具体取决于活动的id(以便您可以手动定义代码中应使用哪个活动的位置),并以如下方式存储:
CREATE TABLE activityLog
(
id MEDIUMINT UNSIGNED PRIMARY KEY UNIQUE NOT NULL AUTO_INCREMENT,
userId UNSIGNED NOT NULL,
friendId UNSIGNED DEFAULT NULL,
acitivityId UNSIGNED NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
hidden TINYINT(1) DEFAULT 0,
FOREIGN KEY(userId) REFERENCES users(id),
FOREIGN KEY(friendId) REFERENCES users(id),
FOREIGN KEY(acitivityId) REFERENCES activity(id)
);
假设您的用户存储在名为“users”的表中。
只需确保创建新活动、链接事件等很容易。
关于mysql - 记录用户更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14687298/