簡體   English   中英

用戶設置/隱私數據庫設計

[英]User Settings/Privacy Database Design

我正在使用PHP和MySQL開發網站,用戶可以選擇以下選項:

  • 通過電子郵件接收通知
  • 隱藏/顯示Facebook / Twitter鏈接

它還將允許用戶從朋友/非朋友可見的信息以及哪些朋友能夠查看某些照片/相冊的信息中控制其個人資料的隱私。

我想知道如何設計該表以使其健壯,並且應該考慮哪些方面。 Facebook如何僅出於好奇就如何管理每個用戶的隱私設置和選項?

到目前為止,我的解決方案是這樣的:

id-主鍵

member_id-主鍵和外鍵(成員表“ id”)

facebook_viewable -int(1)-0表示否,1表示是

email_notifications -int(1)-0表示否,1表示是

首先,如果它們都將是主要的,則可能不需要同時擁有idmember_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM