2010-10-13 55 views
0

数据如出生月份,日期和年份,用户的年龄,性别/性别等。这些应作为文本还是以ID为基础存储在数据库中?基于ID的意味着它们将具有查找值。用法是例如:用户注册将记录年龄,用户配置文件将有一个寻求合作伙伴的年龄等,所以年龄和其他数据可以在多个地方使用。在后端将有分析推动我使用查找表甚至像性别只有2-3值的小事情。用于基本用户输入的查找表?

回答

0

您将要引用数据类型或数据库具有avilable。对于mysql:http://dev.mysql.com/doc/refman/5.0/en/data-types.html

请勿使用您提到的任何字段作为主键。创建'id'列或使用用户的用户名。

这里是田野数据库:

  • 生日=日期
  • 年龄= TINYINT(从技术上讲,你不需要这个,因为你总是可以判断它基于他们的生日和当前日期这取决于你在做什么)
  • 性别=枚举
+0

我不是指类型。我的意思是价值观。年龄从1到120.所有这些值 - >我们是否将这些数据作为文本字段数据存储在数据库中,还是应该是像Age_id,Age这样的查找表,其中每行是从1到120之间的一个数字,因此我们可以使用FK参考它。我问,因为我有一个完整的分析组件需要设计出来,因此跨表格映射数据和维护标准值对整个系统非常重要。就像我已经看到的那样,出生年份在所有可能的年份都有查找表。与此同时,我看到很多人把它作为日期/文本存储起来。 – Karem 2010-10-13 19:17:53

+0

@Karem我认为我的答案和他的基本相同。对于你提到的领域,你需要找到适合你想存储的数据类型。日期字段可以在一个字段中保存月份,日期和年份,然后如果您只需要一个月份,则可以使用数据库功能将其分割出来。年龄可以从出生日期开始计算,因此存储是多余的。 – 2010-10-13 21:30:43

0

我不会跟你提到的领域查找表打扰。出生月份,日期,年份都可以封装在单个日期字段(带日期类型,而不是文本)中,然后在需要时与数据库功能分开。年龄只是一个数字,这是你所有的ID字段将是,所以没有太多的意见,除非你想实际限制年龄范围,在这种情况下,你可以使用检查约束,而不是查找,如果你需要限制到实际范围(年龄> = 1,年龄< = 20)。性别/性别是我可能考虑查找的唯一一个,但由于可能的价值非常少,因此检查约束就足够了。

哦,我不知道你在用什么分析方法,但是任何值得分析的分析软件都可以自行生成字段域(表格字段中的唯一值列表),特别是对于你提到的字段。如果你正在构建你自己的分析(不确定,根据你对另一个海报解决方案的评论),你可以很容易地进行查询来做你正在谈论的内容。