1

ユーザーの詳細がユーザーと呼ばれる mysql テーブルに格納されるマルチレベル アプリケーションを作成する必要があります。

ここで、ユーザーがサブユーザーまたはクライアント アカウントを作成できるようにする必要があります。そのため、サイトにログインできる管理者、ユーザー、およびクライアント アカウントが存在します。

私の質問は、管理者と彼自身が作成したサブユーザーとクライアントをグループ化するにはどうすればよいですか?

非管理者の詳細を含む 2 つ目のテーブルを作成する必要がありますか? または、管理者の同じテーブルにクライアントとユーザーを配置してから、テーブルに自己関係を作成することをお勧めしますか?

4

2 に答える 2

4

これは私が過去にそれを行った多かれ少なかれです:

actions
    id                  unsigned int(P)
    description         varchar(50) // Delete users, Edit something, etc.

roles
    id                  unsigned int(P)
    site_account_id     unsigned int(F site_accounts.id)
    description         varchar(50) // Client Admin, Client User, etc.

roles_actions
    id                  unsigned int(P)
    role_id             unsigned int(F roles.id)
    action_id           unsigned int(F actions.id)

site_accounts
    id                  unsigned int(P)
    name                varchar(50) // Client 1, Client 2, etc.

users
    id                  unsigned int(P)
    site_account_id     unsigned int(F site_accounts.id)
    username            varchar(32)
    password            varbinary(255)
    email               varchar(255)

users_roles
    id                  unsigned int(P)
    user_id             unsigned int(F users.id)
    role_id             unsigned int(F roles.id)

「クライアント管理者」の を作成するroleと、このロールには、クライアントが持つ可能性のあるすべての権限が付与されます。次にsite account、新しいクライアントにサインアップするたびに を作成し、「クライアント管理者」の役割を割り当てます。

独自のroles(site_account_id に関連付けられる) を作成できるようにするコードを記述し、それらのいずれかをactionsそれらの new のそれぞれに割り当てさせる必要がありrolesます。これにより、必要な役割と各役割が持つ権限を完全に制御できます。

また、ユーザーを追加/更新/削除できるようにするコードを作成する必要があります (ここでも、これらの各ユーザーは自分の site_account_id に関連付けられます)。

これにより、各クライアントに属しているロール/ユーザーを簡単に確認できます。クライアントを紛失した場合は、レコードを削除するだけですべてのデータを削除できますsite_accounts

これは大まかな例です。このようなものにはさらに多くのことができるので、どれだけきめ細かくしたいかを理解する必要があります。

于 2013-06-25T19:05:55.230 に答える
1

parentAccountすべてのアカウントを同じテーブルに保持し、アカウントの親の主キーを格納する列を追加します。

于 2013-06-25T18:55:15.430 に答える