2012-04-17 56 views
1

我參與了一個微型社交網絡的開發,用戶必須能夠建立它們之間的關係,並且對內容擁有權限。舉個例子:我添加一個用戶作爲我的朋友,但這個用戶不允許我看到他/他的所有內容,所以我只能訪問用戶允許的內容(權限)。所以我有一個問題,需要幫助設計這部分的DER。我認爲,在這個表:用戶之間的人際關係

- users (id, name) 
- relations_type (id, name, active) 
- users_relations (id, id_user_1, id_user_2) 
- users_permissions (id, id_relation, id_module, id_user, view, edit, delete) 

這導致以下後果:

對每一段關係
  • 兩行:用戶1>用戶2和用戶2>用戶1,因爲當我搜索(SELECT)我需要知道哪些是用戶1的朋友,哪些是用戶2的朋友。如果我只留下一種方式的關係,那麼我需要一個UNION,並且這種遷移會減慢我的數據庫

這是正確的嗎?如何在CRUD上處理​​這個問題?我正在使用MySQL和MyISAM表。

回答

0

不要使用user1和user2作爲表名,你會忘記當範圍擴展時哪個是哪個。 您可以對用戶表進行非規範化權限,您不需要將表分成幾個布爾位。 從來沒有信任工會,它會在最不可預料的情況下背叛你。