数据库设计 – 数据库设计 – 用户及其隐私

基本上我为我的用户(它的夜总会网站)提供了一张桌子,现在我正在努力改善他们的隐私.

到目前为止,我只是向登录用户显示一些信息,但现在我想给用户选择.

我的问题是:做什么更好的方法?

你推荐我什么,为我希望用户管理隐私的每个房产创建一个新房产?

表“用户”的示例:

-ID

-电子邮件

-电话

-ShowEmail(int)和0将是no-one,1是登录用户,2是朋友

-ShowPhone(int)

这是一个很好的选择?我不太确定我是否应该创建一个新表来处理隐私设置.我必须承认数据库设计不是我的专长,所以真的需要一些关于此的反馈.

谢谢!

编辑:隐私不只是简单的属性.我需要处理用户注册的事件,用户被标记的照片等.

最佳答案 这是一种可能性,但它会让你的桌子变得非常大并且有一些多余的字段.您有两种选择我个人更喜欢:

>使用flag字段.优点是你只需要1个字段,缺点是它有利于良好的关系数据库实践,如果你想从中选择一些东西,查询会变得更加模糊.
>使用只有3个字段的另一个表,例如“UserID”,“FieldName”和“ShowTo”,后者是ENUM(如果您更喜欢,则为整数).这是更多的工作,但是非常清楚,并且非常好.

查询看起来像这样:
1.

SELECT phone, (privacyFlags&8) AS showPhone FROM users

2.

SELECT user.phone, privacy.ShowTo AS showPhone FROM users
    JOIN privacy ON privacy.userID=users.userID
WHERE privacy.FieldName = 'phone'
点赞