用户信息的推荐数据库结构

时间:2012-11-06 00:15:44

标签: mysql database database-design

我想知道如何在我的网站上构建用户信息的数据库结构(表格)。我将要存储的信息种类(此时无论如何)是:

  • 关于我
  • 生日(1970年1月1日)
  • 性别(男/女)
  • 感兴趣:(男,女,两者)
  • 关系状况:(单身,关系,参与,结婚)
  • 网站:(mywebsite.com)
  • 来自:(加利福尼亚州库比蒂诺)

所以这是我现在要存储的信息类型。我的问题基本上是,我应该只有一张桌子吗?或者最好根据信息分割信息(我的用户有一个唯一的ID,这显然与每个信息表一致)。所以我不确定我是否应该专门为生日提供一个表:userID,Month,Day,Year;或者是什么。

2 个答案:

答案 0 :(得分:4)

如果用户只需要存储属性的一条信息,那么您不需要单独的表格。例如,用户只有一个生日。如果您想为同一个用户ID存储多个生日,那么您需要单独的Birthdays表的唯一原因是。您列出的每个属性在一个Users表中看起来都很好。

至于将Birthdays拆分为列:userID,Month,Day,Year,这一切都取决于您将如何使用该信息。您是否需要知道只是用户生日所在的月,日或年?如果这是一个常见的需求,您可能希望单独存储它们。它通常不是,因此您可能只想将其存储为单个Date值。

注意:您可以通过查看Data Explorer来查看Stack Overflow使用的架构。它们在一个Users表中保留了类似的数据集合。

答案 1 :(得分:1)

在绝大多数情况下,我已经看到了您要求存储在一个表格中的内容 - 通常为userusers

也许还包括许多其他元素:

  
      
  • 用户ID(唯一)
  •   
  • 注册日期
  •   
  • 状态(实时/过期/禁止)
  •   
  • 用户哈希
  •   
  • 加上其他各种......
  •   

老实说 - 这取决于你正在构建什么以及它是如何构建的,但我的建议是从简单开始。

关于生日的观点,只需将日期存储为mysql日期格式:

YYYY-MM-DD

这样,您可以使用mysql函数以各种方式对其进行操作。

希望这有帮助。