我目前正在将开源聊天(
AJAX Chat)集成到另一个项目中.现在,聊天默认只从文件中获取有效用户和有效频道,但是当你拥有一个不断变化的用户数据库时,这显然不是理想的.
所以,我想这样做,以便聊天直接从数据库加载用户和频道信息.我认为设计应该如下(如果你有不同的感受,请告诉我):
>我们有一些聊天频道(公共,营销等……)
>然后我们将小组分配到频道(如公关团队1,IT人员等……)
>然后我们将用户作为组的一部分,在某些情况下直接分配给频道.
我正在考虑使用以下表格实现上述内容:
频道表:
|----|Channel_Name||Channel_ID||Groups_Assigned||Users_Assigned|----|
|----|---Public---||-----0----||---1,2,3,4,5---||-----3,4------|----|
.
.
.etc...
注意:分配的组表包含分配给通道的组的组ID,而分配的用户包含不属于分配的组的用户的ID.
群组表:
|----|Group_Name||Group_ID||Users_Assigned|----|
|----|---Team1--||----0---||------5,10----|----|
.
.
.etc...
对不起画的桌子很抱歉.
现在,通过上面的实现,当用户登录时,程序将获取用户id(来自users表),然后在groups表中搜索包含用户id的所有组,最后搜索通道表对于包含组(用户所属的组)或直接分配给用户的通道的所有通道.
我的想法是可能的,但似乎有点,呃,效率低下.因为我必须以1,2,3 ….格式存储指定的ID(组和用户),所以我必须使用PHP的explode()或其他可以搜索字符串的PostgreSQL函数.我很可能会存储一组数组,然后一次循环遍历它们,这对我来说似乎很慢.
或者,我可以为每个用户创建一个布尔列,但这会导致列太多,并且我不想在每次创建用户时创建新列.
那么,你们会怎么做呢?而且,如果出于某种疯狂的原因,你碰巧同意我最初的想法,那么你能帮我弄清楚如何实际编写代码来实际做到这一点.
谢谢你的时间,祝你有个美好的一天.