2

一部に応じて関係を禁止する外部キー制約を設けることは可能WHEREですか?

これはそれほど単純に聞こえないかもしれないので、例を挙げて説明しようと思います。

2つの「通常の」テーブルがあります。

  • Person
  • Task

そして、それらの間のN:M関係はトラフです:

  • Team

1つのタスクは、それ自体の「下」に複数のタスクを持つことができます。したがって、「ツリー」順序を作成します。またtask、「チーム」の場合はブール値が含まれisTeamます。例えば:

  • クリーニング(isTeam: true
    • 階下のトイレの掃除(isTeam: false
    • 2階のトイレの掃除(isTeam: false
    • 1階拭き(isTeam: false
    • 2階拭き(isTeam: false
  • 夕食(isTeam: true
    • 食事の準備(isTeam: false
    • テーブルの準備(isTeam: false
    • など(isTeam: false

人はチームに所属しています(チームはサブタスクを持つ1つのタスクです 画像:人はチームに属しています(チームは(可能な)サブタスクを持つ1つのタスクであり、isTeam = true)

表は、サブを持つ特定のTeamの責任者を示しています。適用する必要のある制限:Aは、 sの場合にのみaにアタッチできます。tasktasksPersonTaskTaskisTeam=true

これは可能ですか?

PS(私は考えています、それは持っているものviewだけを選択することを使用して行うことができますか?)TasksisTeam=true

4

1 に答える 1

0

このモデルでは、ツリーを表すためにクロージャ テーブルが使用されます。

  • 葉ノード ( Task ) has JobType = 'P'(required person)
  • 他のノードが持っているJobType = 'T'(チームが必要)
  • チームは、 Jobに割り当てられた人々のグループです。
  • チームは次のジョブにのみ割り当てられますJobType = 'T'
  • 1が複数のチームに割り当てられる場合があります。
  • 担当者はタスクにのみ割り当てることができますJobType = 'P'
  • その人物がtask-ancestor-team のメンバーでもある場合にのみ、その人物にタスクを割り当てることができます。

ここに画像の説明を入力

于 2012-11-13T16:51:33.403 に答える