使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
包含3列也造就映射表meals_to_restaurants_divisions
- meal_id, restaurant_id, division_id
所以,如果我要指派餐餐廳1和它的所有部門,我會創造記錄:
meal_id | restaurant_id | division_id
1 | 1 | null
如果我要指派餐只分裂2-2,我會創造一個紀錄:
meal_id | restaurant_id | division_id
1 | null | 4
有人會建議這樣的方案是否正確?如何改進?我知道有人會說,我應該只創建映射表,有2條記錄 - meal_id
和division_id
,並將餐分配給所有分部,而不是分配給餐館,但這裏有一個問題:如果餐廳1未來創建新分區,我希望新分區繼承相同的權限(所以如果現有的餐點分配給餐廳而不是分部,所有未來的分部將繼承餐廳的權限)。否則,我需要手動編輯每餐,並指定一個新的分區。
如果有人有興趣,爲什麼我在restaurant_id
在第二個例子中使用null
,這是因爲如果劃分的父母在後面改變(師被分配到另一家餐廳),我並不需要掃描的映射表,並更改restaurant_id
價值存在。