php - 如何在MYSQL中制作用户隐私表

标签 php mysql sql

我正在开发一个社交网站,我想在其中创建群组、事件和 friend 列表。我希望他的 friend 的用户隐私如下所示:

<强>1。用户可以选择可以查看或不能查看其个人信息的 friend 。 2. 用户可以管理谁可以看到他的事件和群组,谁不能。

我设计了一个表结构,与下面粘贴的相同:

  1. User_location_id
  2. 用户 ID
  3. Allow_friends(ID 以逗号分隔)
  4. Deny_friends(ID 以逗号分隔)
  5. Allow_groups(ID 以逗号分隔)
  6. Deny_groups(ID 以逗号分隔)
  7. Allow_search(州章、城市)
  8. friend (对某些人可见,对某些人隐藏)(如果为 0,则我将从allow_friends 获取 friend ID,否则从 Deny_friends 获取)
  9. 群组(对某些人可见,对某些人隐藏)(如果为 0,则我将从allow_groups 获取 friend ID,否则从 Deny_groups 获取)
  10. Privacy_for_type
  11. Privacy_for_name

是否应该有任何其他有效的结构,可以最大限度地减少数据库命中率并且不会使数据库密集。

最佳答案

如果您要设计数据库表,您可能需要阅读有关规范化的内容: http://en.wikipedia.org/wiki/Database_normalization

存储用逗号分隔的 ID 会导致更新这些记录和防止重复变得困难。我建议您将允许和拒绝列拆分为单独的相关表。这不会使其变得更加密集,因为您仍然只需要一个查询,这只是意味着您可能必须进行带有联接的查询。

关于php - 如何在MYSQL中制作用户隐私表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786576/

相关文章:

PHP 内容长度与自定义内容交付脚本不匹配

php - 在表中找不到条目时的 Laravel undefined variable

php - POST 形式的数组

php - 如何对三个表运行两个查询并输出一个表中某一列的结果

sql - A喜欢B,B不喜欢A?

sql - 在 SQL Server 中传递变量长度来声明新的 varchar

php - 在 PHP 中间接访问对象的 protected 成员

mysql - MySQL 上的 GROUP BY 非常慢。与指数无关

mysql - PHP/Mysql 选择和特殊字符

sqlite3 准备、绑定(bind)和重置语句