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

时间:2011-03-06 16:36:45

标签: database-design database-schema

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

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

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

您建议我为每个希望用户管理隐私的属性创建新属性?

表“用户”的示例:

-Id

- 电子邮件

- 电话

-ShowEmail (int),0表示没有人,1表示登录用户,2表示朋友

-ShowPhone (int)

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

谢谢!

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

1 个答案:

答案 0 :(得分:2)

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

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