在SQL数据库中存储注释标志的最佳方法?

时间:2009-06-02 05:07:47

标签: sql database-design

在SQL数据库中存储注释标志的最佳方法?评论发布在页面(mediaId)上,每个评论都可以有孩子,评论可以由拥有该页面的人隐藏,也可以由主持人隐藏。任何人都可以标记评论,但只能标记一个类别。

一旦评论有X个标志,它就会受到主持人的注意。如果主持人发现没问题,他就不应该清除标志,而是做一些事情,这样就需要引起他的注意。

    enum FlagComment { none, offensive, spam, other, };

    command.CommandText =
         "CREATE TABLE if not media_comment( " +
         "id INTEGER PRIMARY KEY, " +
         "mediaId  INTEGER, " +
         "parentId INTEGER, " +
         "author   INTEGER, " +
         "date     DATE, " +
         "text     TEXT, " +
         "hidden   INTEGER);";
    command.ExecuteNonQuery();

    command.CommandText =
         "CREATE TABLE if not media_comment( " +
         "commentId INTEGER, " +
         "userId INTEGER, " +
         "flagType   INTEGER); ";
    command.ExecuteNonQuery();

    command.CommandText =
         "CREATE TABLE if not media_comment_mod_clear( " +
         "commentId INTEGER, " +
         "modId  INTEGER, " +
         "action INTEGER, " + //action is delete or ignore
         "flagAmount INTEGER); "; //amount of ppl who flagged before mod took action
    command.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:1)

我不确定flagAmount是否正确。

最好有一个标志表,其中每一行都有一个标志ID,注释ID,标志类型等。然后,计算注释有多少个标记可以用SQL完成,但你也保持每个 - 标志信息(例如类型)。