我正在开发一个使用PHP和MySQL的网站,用户可以选择如下:
接收通知
它还将允许用户控制他们的个人资料的隐私,从可查看的信息到朋友/非朋友,以及哪些朋友能够查看特定的照片/相册。
我想知道我将如何设计这张表,使之健壮,以及我应该考虑什么。仅仅出于好奇,Facebook如何管理每个用户的隐私设置和选项?
到目前为止,我的解决办法是这样做:
id -主键
member_id -主键和外键(成员表'id')
facebook_viewable - int(1) -0表示否,1表示是
email_notifications - int(1) -0表示否,1表示是
发布于 2011-08-29 01:19:39
首先,如果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,然后进行应用程序代码更改。不需要更改数据库架构。
请注意,可以对这个相同的基本结构进行详细阐述,以使其更加灵活。例如,除了二进制标志之外,您还可以拥有许多不同类型的值,并且可以通过在rule type表上添加一个附加的"rule type“属性来控制这些值的解释。我不想在这个话题上走得太远,所以如果你想了解这个方面的更多细节,请告诉我。
https://stackoverflow.com/questions/7224746
复制相似问题