3

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

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

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

4

1 回答 1

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)
);

假设您将用户存储在名为“用户”的表中。

只需确保创建新活动、链接活动等很容易。

于 2013-02-09T03:57:05.957 回答