2009-09-24 67 views
1

我需要存储来自用户的帖子。独特的Id:是一个独特的用户名+ currentMilliseconds足够好,为一个独特的Id

他们的用户名是唯一的,我敢肯定他们不能在同一毫秒内发表帖子。

然后自己帖子的网址将包含/用户名/ 12345678890 /冠军的最后

我不能使用Auto_Inc号,因为我不知道 它在数据库中。 希望他们知道这个数字或能够猜到。

这是足以唯一足以存储在数据库中


如果是这样的话会存储在数据库(MySQL的)的唯一ID

的PK的最佳方式对于URL不会是相对的。

E.g.

AUTO_INCREMENT PK Username createDate (BIGINT) 
----------------- -------- ------------------- 
23456    Daxon  12345678922 

我应该索引一列吗?

- 编辑 -

我忘了提,我也不是什么用户知道多少职位 有或能猜一个数字他们。

所以我认为currentTime以毫秒为单位是不可想象的。

Mabye现在这个值应该被加密,但仍然URL-SAFE

+0

你是什么意思,你不能使用AUTO增量列,因为你不知道它是什么?你不能拿回来使用mysql_insert_id() – CSharpAtl 2009-09-24 14:34:39

回答

1
  1. 除非不同的人可以登录使用相同的用户名来自不同的PC,用户名+毫秒级时间应该够了。如果他们可以从不同的PC发布信息,则应确保服务器说明当前时间(用户PC可以快速脱离同步)。

  2. 在列username和createDate上创建一个索引。单个索引应该足够了。

2

我不能使用Auto_Inc号我不知道它在DB

然后解决问题的方法是学习它,或问一个问题,清除了解你不明白的地方(MySql甚至提供了serial别名,以使这些变得简单)。因为您不知道如何使用您的语言功能,因此创建解决方法只会为您稍后解决问题。现在解决这些问题,而他们很容易和有很多人谁可以帮助(更多的人知道如何设置递增键,然后如何解决离奇的并发问题或使后期“变名”功能,搞砸了旧数据)

0

然后自己帖子的网址将 包含 /用户名/ 12345678890 /冠军的最后

我建议你获取主键和创建这样一个URL下面

/Username/AUTO_INCREMENT_ID/title-of-the-post 

我不能使用Auto_Inc号码作为我 不知道它在DB

你可以得到AUTO_INCREMENT_ID相同的方式,你该怎么做才能获得用户名和标题值帖子。只需在SELECT语句中选择它。例如

SELECT auto_increment_id, username, anything_other FROM table1 
+0

谢谢,但我想,以尽量减少量的DB命中,(IM学习,我会记得我以前后键入我的所有要求) 所以我会保存用户的帖子, 然后必须使用另一个选择来找出它有什么ID, 然后用该ID提供页面, 我需要一些独特的东西,因为它会保存,所以我可以返回页面 – Daxon 2009-09-24 15:14:05