记录用户更新

时间:2013-02-04 12:58:44

标签: mysql sql database-design

在制作一个小型社区网站时,我正在寻求一些建议,以便如何最好地设计一个表格,以便将数据存储为一个流,例如:

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

目前我计划运行额外的插入查询以在用户执行时使用每个活动更新此表,不确定这是否是最好的,或者在我的情况下是完成此操作的好方法。感谢您的时间,感谢任何提示或建议。

1 个答案:

答案 0 :(得分:0)

您可以拥有一个表格,列出系统应提供的所有不同活动。

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”的表中。

只需确保创建新活动,轻松链接活动等等。