我正在经历将讨论组添加到我的网站的过程,目前用户可以发布主题,然后其他用户可以回复,非常简单。
以下是我如何设置组表
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”中显示的组中,例如,希望我的问题不会太混乱。
答案 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关系。