实施讨论组系统

时间:2013-09-07 05:24:12

标签: php sql

我正在经历将讨论组添加到我的网站的过程,目前用户可以发布主题,然后其他用户可以回复,非常简单。

以下是我如何设置组表

Disc_group

ID(int)
Name(varchar)
Description(varchar)
Created(date)
Creator(int) = user_id
invite_rule(enum 0,1) 0 = open invite, 1 = invite must be approved

Disc Users
ID(int)
User_id(int)
Group_id(int)
datejoined(date)
accepted(enum 0,1) 1 = accepted
admin(enum 0,1) 1 = admin

我的问题是我正在考虑使用当前主题,帖子和标签表来实现这一目标的最有效方法。

我想我可以在主题中添加“group_id”,例如,如果您正在查看群组页面ID = 3,则只显示group_id为3的主题。

我不希望任何人为我编写代码,我想知道建议使用哪种文件结构,例如

非分组的帖子显示在“topic.php?id = 1”主题中,在“gtopics.php?id = 1”中显示的组中,例如,希望我的问题不会太混乱。

1 个答案:

答案 0 :(得分:0)

invite_rule(enum 0,1) 0 = open invite, 1 = invite must be approved  
accepted(enum 0,1) 1 = accepted  
admin(enum 0,1) 1 = admin

我们已经可以看到上面形成了一组权限,我强烈建议实现一个掩码系统,这样你就可以在数据库中存储用户权限,并在生成授权令牌时执行逻辑AND。

Disc Users
ID(int)
User_id(int)
Group_id(int)
datejoined(date)
accepted(enum 0,1) 1 = accepted
admin(enum 0,1) 1 = admin  

在规范化方面会不会开始受到伤害,我会提出以下结构来取代它:

DISC_GROUPS  
GroupName
GroupId (not needed if group names need to be unique)    

DISC_USER_GROUPS  
UserId
GroupId

DISC_USERS
USER_ID
NAME
PERMISSIONS
DATE_JOINED
//other information about users


//This table may be unnecessary, unless you want to add some audit information perhaps
DISC_INFORMATION (THIS IS YOUR OLD DISC_USERS table)  
ID  
USERID  

请注意我们如何不重复信息,如果需要更多详细信息,我们依赖于USER_ID关系。