質問

複数のユーザーと複数のページがあり、各ユーザーが任意の数のページを管理でき、各ページを任意の数の管理者が管理できる場合、これらすべての権限をどのように保存できますか?データベース?

たとえば、usersテーブルには、ページIDのカンマ区切りのリストであるフィールド、または各ページ(...によって管理されるなど)の同様のフィールドを含めることができます。しかし、それはデータベースから出てきた文字列を処理する必要があります。

各ユーザーにkey = <!> gt; value種類のレイアウトを持つ独自のテーブルを与えることができます。ここでは、user = <!> gt; someuser、name = <!> gt; some guy、 permissions = <!> gt; whatever、page_id = <!> gt; 4、page_id = <!> gt; 8、page_id = <!> gt; 12など。ユーザー。

ページ数が比較的少ないと仮定すると(そうなると思います)、ユーザーテーブルに「フラグ」のようなフィールド、32ビットINT(これには32を超える「ページ」はありません)を入れることができます実装)。ただし、これはオン/オフの種類の特権しか許可しません。

また、ユーザーテーブルを作成することを検討し、各ユーザーエントリはそのユーザーのアクセス許可テーブルをポイントします。このテーブルには、各ユーザーの適切なアクセス許可を持つ各ページの行があります。 !> quot; table-per-user <!> quot;私がリストしたソリューションですが、やはりmysqlアカウントに追加の特権が必要です。

他のアイデアはありますか?あなたの経験では、これに対する最も苦痛のない解決策は何ですか?

役に立ちましたか?

解決

多くの<!> lt;-<!> gt;通常、多くの関係は中間テーブルを使用してモデル化されます。あなたの場合、これらのテーブルがあります:

User        UserPage       Page
------      -----------    -------
UserID      UserID         PageID
...         PageID         ...

中間テーブル(ここではUserPage)は、そのIDセット(この場合は権限)に固有の情報を格納する場所です。

他のヒント

標準的な方法は、2つのフィールドのみを持つ中間テーブルを作成することです:接続された各テーブルの主キー

必要なのはマッピングテーブルです。

USER ----- <!> lt; USER_PERMISSIONS <!> gt; ----- PAGES

新しいテーブルの主キーは、user_idとpage_idで構成される複合キーです

これにより、最大限の柔軟性が得られ、スキーマを変更せずに新しいページを追加できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top