如何在mysql数据库中存储多个用户值?

时间:2015-12-15 17:06:00

标签: php mysql database database-design

我有如下表格。

enter image description here

我想存储用户角色,例如管理员,读者,作家

如何将值存储在表格中。

我搜索了谷歌和许多结果,如2种类型。

  1. 将值存储为单个列名称 user_roles ,并将管道(|)存储的值与上面相同(与上述相同)。
  2. 将值存储在 user_roles 等其他表格上,并使用用户的外键存储。
  3. 上述哪两种方法更适合开发?

    告诉我两者的优势和劣势......

    谢谢&此致

2 个答案:

答案 0 :(得分:1)

您希望第二种选择的原因主要包括

  • 数据规范化理智
  • 快速使用索引而不是表扫描
  • 避免像find_in_set()
  • 这样的编码噩梦

请参阅Junction Tables或关联表(更简化)

如果没有它,请参见Nightmare Coding(并且因为所有人起床都会降低性能)。

答案 1 :(得分:0)

如果您的用户拥有多个用户角色,那么它肯定会定义为one to many关系。

因此,仅使用用户ID添加排列表是最佳选择。 Cz一个用户可以拥有许多用户角色。

这种组合永远不会发生(一对一)

user A - admin
User B - writer
User C - reader

01

可能是(一对多)或(多对一)

User A- Admin + reader
User B - reader + writer
user C - Admin + reader + writer
user D - Admin + writer
.....

02

以及阅读这些

  1. One to Many and Many to One Relationships - code.tutsplus.com
  2. One-to-many relationship - www.databaseprimer.com/
  3. Database Normalization