你在正確的軌道上。你將要使用鏈接表。你會從一個表格用戶開始。每個用戶都有一個ID。然後創建一個users_friends表。這個表格由兩個id,user_id和friend_id組成。最後一個表將是users_restricted,它也將由兩個id,user_id和restricted_id組成。
例如
users
user_id name
1 user1
2 user2
3 user3
users_friends
friend1_id friend2_id
1 2
2 3
這表示用戶1和2是朋友,用戶2和3是朋友。 (這是假設,如果用戶1是朋友與用戶2,則用戶2也是朋友用戶1)
users_restricted
user_id restricted_id
1 2
現在即使用戶1和用戶2是朋友,用戶2是在限制名單的意義別•允許用戶2查看用戶1的條目。
您可以看到表格通過ID鏈接,所有ID都來自用戶表格。這可以擴展爲與條目相關。只需通過他們的ID參考條目。
要讓用戶阻止特定條目,您將擁有以下表格。
entries
entry_id user_id ... other columns holding entry information
1 1
2 1
3 2
4 2
現在用戶1已經由2個條目(條目1和條目2)和用戶2已取得2個條目(條目3和條目4)。另一張桌子將持有這些限制。
entries_restricted
entry_id restricted_user_id
1 2
這可以說用戶2無法查看條目1.
爲了讓用戶2您的發言會是這個樣子可見的條目。
SELECT e.*, er.entry_id FROM entries e JOIN entries_restricted er ON e.entry_id=er.entry_id WHERE er.restricted_user_id != 2;
的語句選擇所有不含限制用戶2
也許ACL(訪問控制列表)是讓您開始使用的術語。 – 2012-01-11 01:01:20
* \ *嘆息\ **另一個社交網絡...可能重複? http://stackoverflow.com/questions/3122772/how-are-viewing-permissions-usually-implemented-in-a-relational-database – Mike 2012-01-11 01:17:16