unl*_*hed 1 php mysql database 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)
Run Code Online (Sandbox Code Playgroud)
这样,隐私规则ID在应用程序代码中成为常量,用于以编程方式强制实施规则,并且可以将值轻松添加到交集表中.当您发明新的隐私规则时,您需要做的就是将一条记录插入PRIVACY_RULE,然后更改应用程序代码.无需更改数据库架构.
请注意,可以详细说明这种相同的基本结构,使其更加灵活.例如,除了二进制标志之外,您可以有许多不同类型的值,您可以使用表中的附加" rule type"属性来控制这些值的解释PRIVACY_RULE.我不想偏离这个主题,所以如果你想进一步了解这个方面,请告诉我.
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |