2017-09-28 6 views
0

SQLデータベースを正しく設計するには、いくつかの助けが必要です。ここで私が何をしたいです:SQLデータベース設計|マネージャとグループの役割の関係

**Group A :** 

- Alice (Manager) 
- Bob 
- Carol 

**Group B :** 

- Dave (Manager) 
- Eve 
- Mallory 

**Group C :** 

- Oscar (Manager) 
- Trudy 
- Isaac 

**Group Z** 

- Admin (Manager) 
- Alice 
- Dave 
- Oscar 

いくつかの制限:

1)は、各メンバーが自分のグループの人々の計画を見ることができます。 Bobがログインするときの の例では、アリスとキャロルのプランニング を自分自身に追加することができます。

2)マネージャは、自分のグループではなく、自分のグループの人のタイムテーブルを更新できます。だから アリスはボブとキャロルを管理でき、Daveはイブとマロリーを管理できます。オスカー はTrudyとIsaacを管理し、最後に管理者はアリス、デイブと オスカー計画を管理します。

3)アリスがデイブが彼のグループを管理するのに役立つだろうということで合意された、 ので、アリスはデイブ・イブとマロリーを管理する(ことはできませんが)、彼女はまだ属するようイブと マロリーがアリスの計画を見ることができませんグループA.

4)管理者は自分の計画を更新できる唯一のマネージャです。また、彼は 計画誰に相談することができますが、そのグループ内で唯一の人々が 彼の計画を見ることができる(したがって、基本的アリス、デイブとオスカー)

5)ユーザーが複数のグループにすることができ( であることをアリス、デイブとオスカーを見てグループZでも)。指定されたグループの計画を に照会して、ログインするときに問題がないように選択することができます。

私が何か行っているでしょう。(私はSQLが得意ではないんだけど、私はかなりだ

TABLE User 
id 
nom 
prenom 
login 
password 
userGroup 

TABLE group 
id 
groupName 
groupManager 

をしかし、私はグループマネージャーの値として配列を設定することができない限り、これは明らかに動作しません。それは不可能なのでしょうか?)

誰かが私が私の期待するところに到達できるように案内してくれますか?だから、

User 
(
    ID 
    , Name 
    , Login 
    , Password 
    , etc. 
) 

Group 
(
    ID 
    , Name 
    , etc. 
) 

Group_Role 
(
    ID 
    , Role_Description 
    , etc. 
) 
User_Group_Role 
(
    ID 
    , User_ID   -- foreign key to User.ID 
    , Group_ID   -- foreign key to Group.ID 
    , Group_Role_ID -- foreign key to Group_Role.ID 
) 

:、私はこのようなものを使用することになり、あなたのデザイン以来

+0

最も簡単な解決策は、異なるグループマネージャーを使用して新しいグループエントリを作成することです。 – FilipRistic

+0

ええ、groupManagerがそのグループ以外のものにアクセスするにはどうしますか? – Will

+0

たとえば、次のようにグループテーブルに3つの行を含めることができます。1、GroupA、Oscar | 2、グループA、アリス| 3、GroupB、Oscar – FilipRistic

答えて

2

は、ユーザーとグループ間の多対多の関係を(ユーザーが複数のグループにすることができグループは、複数のユーザーが含まれています)が必要です

1 | Alice 
2 | Bob 
3 | Carol 
4 | Dave 
5 | Eve 
6 | Mallory 
99 | Admin 

が含まれていますあなたのUsersテーブルは、あなたのグループテーブルには含まれています

1 | Group A 
2 | Group B 
99 | Group Z 
1 | 1 | 1 | 2    -- Alice manages Group A 
2 | 2 | 1 | 1    -- Bob consults in Group A 
3 | 3 | 1 | 1    -- Carol consults in Group A 
4 | 4 | 2 | 2    -- Dave manages Group B 
5 | 1 | 2 | 3    -- Carol assists with Group B 
6 | 5 | 2 | 1    -- Eve consults in Group A 
7 | 6 | 2 | 1    -- Mallory consults in Group A 
etc. 

ん意味をなさない:、あなたのGroup_Rolesテーブルは

1 | Consult 
2 | Manage     -- cannot manage self 
3 | Assist 
4 | SuperManage    -- can manage self 

、そして最後に、User_Group_Roleテーブルのようなものが含まれているのだろうか?

+0

ありがとうございます;-)仕事をします – Will

関連する問題