【问题标题】:Database Design - Users and their privacy数据库设计 - 用户及其隐私
【发布时间】:2011-03-07 00:47:52
【问题描述】:

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

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

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

你有什么建议,为我希望用户管理隐私的每个属性创建一个新属性?

“用户”表示例:

-Id

-电子邮件

-电话

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

-ShowPhone (int)

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

谢谢!

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

【问题讨论】:

    标签: database-design database-schema


    【解决方案1】:

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

    1. 使用flag 字段。优点是您只需要 1 个字段,缺点是它有点违背良好的关系数据库实践,并且如果您想从中选择某些内容,查询会变得更加模糊。
    2. 使用另一个只有 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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-06
      • 2011-10-22
      • 2019-03-08
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多