3

各オブジェクトは、データベース内の 1 つの行を表します。例:

管理者テーブル

id, first_name, last_name
1, 'John', 'Doe'

$admin オブジェクト (疑似)

class admin extends base {
  protected $id;
  protected $first_name;
  protected $last_name;

  public function setter() { }

  public function getter() { }

  /* ETC */
}

この部分は私には非常に明確です。データを設定、取得、保存できます (この関数は基本クラスにあります)。

別のテーブルに関連する複数の行を持つテーブルを作成する場合、どうすればよいですか。例:

admin_preveleges テーブル

id, admin_id, privilege, value
1, 1, 'read_reports', 1
2, 1, 'delete_news', 1
3, 1, 'delete_users', 1

オブジェクトはどのように見えますか?John Doe 管理者の場合、1 つのオブジェクトに 3 行すべてが含まれますか? それとも、John Doe 用に 3 つのオブジェクトを作成しますか?

これらを管理オブジェクトに接続するにはどうすればよいですか?

3 つの個別のオブジェクトを作成し、それらを $admin オブジェクトに接続した場合、この管理者がユーザーを削除する権限を持っているかどうかを確認するにはどうすればよいでしょうか? すべてのオブジェクトをループして、そのうちの 1 つが「delete_users」であるかどうかを確認してから、ループを中断する必要がありますか?

それとも、特権テーブルをオブジェクトにすることを忘れて、$admin オブジェクト内にそのハンドラーを作成する必要がありますか?

4

2 に答える 2

1

1 人の管理者が多くの権限を持つことができ、同じ権限が複数の管理者に属することができるため、これは多対多の関係と見なされます。AdminID と PrivilageId を含む 3 番目のテーブルを作成し、これら 2 つで構成された主キーを作成します。管理者に特権を割り当てる場合は、PrivilageDetails テーブルに新しい行を追加する必要があります。この行には、特権を追加するユーザーの AdminId (PrivilageId) が含まれています。管理者が持つ権限を確認したい場合は、これらのテーブル間で結合を行うだけです ここに画像の説明を入力

于 2013-11-03T15:40:06.157 に答える