1

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

这是我设置组表的方式

光盘组

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”添加到主题中,例如,group_id 为 3 的主题仅在您查看组页面 id=3 时显示。

我不希望任何人为我编写代码,我想知道推荐什么文件结构,例如

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

4

1 回答 1

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

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

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 关系。

于 2013-09-07T12:20:09.163 回答