【问题标题】:How better to create Users table?如何更好地创建用户表?
【发布时间】:2016-11-10 21:45:12
【问题描述】:

我创建了Users 表。 用户注册后,系统在Users表中输入他的地址、电话、城市等个人详细信息。 还有另一个表,称为Contacts,用户可以在其中添加其他人的详细信息。

现在,如果有Contacts 表,如何更好地将用户的个人详细信息保存在Users 表中?在一个包含所有用户个人详细信息的 json 列中,还是在普通列中(地址、电话、城市)?

我只是不想发生多数据的情况。

【问题讨论】:

  • 你问的好像是database normalization。 User 和 Contact 有什么区别?哪些字段相同?
  • @feeela 不,我只想知道是要在 Users 表中创建包含所有个人详细信息的 json 字段,还是在表中创建普通列(地址、电话、城市)而不是一个包含所有个人详细信息的 json 列。

标签: php sql database laravel


【解决方案1】:

嗯,将其存储为JSON 当然很容易,但那样的话,在数据库中搜索某些内容可能会有点混乱(假设您希望检查来自给定城市的所有用户例如)。
当涉及到用户信息时,我总是发现最好的方法是仅将登录重要数据和基本信息存储在 users 表中。

类似:

id | email | password 

然后为其他数据设置不同的表。

姓名等(用户只有其中一个(当然一个可以有多个姓名,但我通常只存储名字和姓氏))可以存储在user_information 表中,该表位于一个与用户的一种关系(user_id 的外键,以便在需要时可以快速获取)。

当涉及到地址和电话号码时,一个用户实际上可能有多个。
我知道您的系统/应用程序可能只应该支持一个地址或一个电话号码等,但从一开始就让它“正确”总是很好,这样就很容易让用户添加多个每当有需要时。

这样,你会有几个不同的表:

  • users
  • user_information
  • addresses
  • phone_numbers
  • 等等……

user_information、addresses 和phone_numbers 最好都有一个user_id 列,用于指向拥有它的用户的外键。如果您希望为联系人使用相同的表格,也可以添加contact_id(以及指向联系人的外键)。

【讨论】:

    【解决方案2】:

    我认为每个字段的单独列将是更好的选择!

    【讨论】:

      猜你喜欢
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2021-12-14
      • 2011-10-17
      • 1970-01-01
      • 2010-11-12
      相关资源
      最近更新 更多