[英]User Settings/Privacy Database Design
我正在使用PHP和MySQL開發網站,用戶可以選擇以下選項:
它還將允許用戶從朋友/非朋友可見的信息以及哪些朋友能夠查看某些照片/相冊的信息中控制其個人資料的隱私。
我想知道如何設計該表以使其健壯,並且應該考慮哪些方面。 Facebook如何僅出於好奇就如何管理每個用戶的隱私設置和選項?
到目前為止,我的解決方案是這樣的:
id-主鍵
member_id-主鍵和外鍵(成員表“ id”)
facebook_viewable -int(1)-0表示否,1表示是
email_notifications -int(1)-0表示否,1表示是
首先,如果它們都將是主要的,則可能不需要同時擁有id
和member_id
。 確實,您需要member_id
因此您可以刪除其他id
。
為了穩健,您想要的是將設置驅動到行而不是列中。 從數據庫的角度來看,添加行比更改表以添加列要容易得多。
您需要一個表,其中包含您的隱私規則類型的列表,然后是成員表和隱私規則類型表之間的交集表。 模式將是這樣的:
MEMBER
id int not null PRIMARY KEY
, name nvarchar(50)...
, (and so forth)
PRIVACY_RULE
id int not null PRIMARY KEY
, rule_description nvarchar(50)
MEMBER_PRIVACY
member_id int not null
, privacy_rule_id int not null
, rule_value tinyint
, PRIMARY KEY (member_id, privacy_rule_id)
這樣,隱私規則ID便成為您的應用程序代碼中的常量,該常量用於以編程方式實施實際規則,並且可以輕松地將值添加到相交表中。 當您發明新的隱私規則時,您要做的就是將一條記錄插入PRIVACY_RULE,然后更改應用程序代碼。 無需更改數據庫架構。
注意,可以詳細說明相同的基本結構,以使其更加靈活。 例如,除了二進制標志之外,您還可以具有許多其他類型的值,並且可以使用PRIVACY_RULE
表上的附加“ rule type
”屬性來控制這些值的解釋。 我不想在這方面走得太遠,因此,如果您想進一步了解這方面,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.