【问题标题】:Implementing Discussion Group System实施讨论组制度
【发布时间】:2013-09-07 20:20:09
【问题描述】:

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

这是我设置组表的方式

光盘组

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”主题中,希望我的问题不会太混乱。

【问题讨论】:

  • 您描述了一个很好的解决方案。
  • 谢谢,我对编码等还是很陌生,所以我总是自己猜。

标签: php sql


【解决方案1】:
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 关系。

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多