1

私は自分のサイトにディスカッション グループを追加するプロセスを進めています。現在、ユーザーはトピックに投稿でき、他のユーザーは返信できます。非常に簡単です。

グループテーブルの設定方法は次のとおりです

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」をトピックに追加するだけでよいと考えたので、たとえば 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

上記が一連のアクセス許可に形成されることは既に確認できます。ユーザーのアクセス許可をデータベースに保存し、認証トークンを生成するときに論理 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 関係に依存していることに注意してください。

于 2013-09-07T12:20:09.163 に答える