レストランを管理するCMSの作成。簡単に言えば、独自の部門を持つレストランがあります。また、レストランに割り当てられなければならない食事(すべての部門でその食事を見ることができる)または個別の部門(したがって、選択された部門のみが食事を見ることができます)があります。PHP/MySQL - 権限を継承する3つの(通常は2ではない)列を持つテーブルのマッピング
だから私は、テーブル作成:
restaurant_id | restaurant_name
1 | Restaurant 1
2 | Restaurant 2
division_id | restaurant_id | division_name
1 | 1 | 1-1
2 | 1 | 1-2
3 | 2 | 2-1
4 | 2 | 2-2
meal_id | meal_name
1 | Steak
また、作成されたマッピングテーブルmeals_to_restaurants_divisions
3列含まれています - だから、meal_id, restaurant_id, division_id
を私がレストラン1とそのすべての部門に食事を割り当てたい場合は、私が作成します記録:私は分裂2-2に食事を割り当てたい場合は、私はレコードを作成します
meal_id | restaurant_id | division_id
1 | 1 | null
:
meal_id | restaurant_id | division_id
1 | null | 4
このようなスキームが正しいかどうかお答えください。どのように改善することができますか? meal_id
とdivision_id
のマッピングテーブルを作成して、レストランに割り当てるのではなく、すべての部門に食事を割り当てる必要があると誰かが知っていることは知っています。しかし、レストラン1が今後新しい部門を作成する場合は、同じ権限を継承する(したがって、既存の食事が部門の代わりにレストランに割り当てられている場合、将来のすべての部門はレストランの権限を継承する)。さもなければ、私は手動ですべての食事を編集し、それに新しい部門を割り当てる必要があります。
私は第二の例ではrestaurant_id
でnull
を使用する理由、誰かが興味を持っている場合は部門の親は(分割は別のレストランに割り当てられている)、後に変更された場合、私はマッピングテーブルをスキャンし、そこrestaurant_id
値を変更する必要はありませんので、それはです。