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

Database design 数据库设计-用户及其隐私,database-design,database-schema,Database Design,Database Schema,基本上,我已经为我的用户准备了一张桌子(这是夜总会网站),现在我正试图改善他们的隐私 到目前为止,我只是向登录用户显示一些信息,但现在我想让用户选择 我的问题是:什么是更好的方法 您建议我做什么,为我希望用户管理隐私的每个属性创建一个新属性 表“用户”示例: -Id -电子邮件 -电话 -showmail(int)和0将不给任何人,1给登录用户,2给朋友 -ShowPhone(int) 这是个好选择?我不太确定是否应该创建一个新表来处理隐私设置。我必须承认数据库设计不是我的专长,所以我真的需要一

基本上,我已经为我的用户准备了一张桌子(这是夜总会网站),现在我正试图改善他们的隐私

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

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

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

表“用户”示例:

-Id

-电子邮件

-电话

-showmail(int)和0将不给任何人,1给登录用户,2给朋友

-ShowPhone(int)

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

谢谢


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

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

  • 使用字段。优点是您只需要1个字段,缺点是它有点不利于良好的关系数据库实践,并且如果您想从中选择一些内容,查询会变得更加模糊
  • 使用另一个只有3个字段的表,例如“UserID”、“FieldName”和“ShowTo”,后者是一个枚举(如果您更喜欢,也可以是整数)。这是更多的工作,但很快就清楚了,而且我感觉好多了
  • 查询如下所示: 一,

    二,

    SELECT phone, (privacyFlags&8) AS showPhone FROM users
    
    SELECT user.phone, privacy.ShowTo AS showPhone FROM users
        JOIN privacy ON privacy.userID=users.userID
    WHERE privacy.FieldName = 'phone'