唯一ID:是一个唯一的用户名+ currentMilliseconds,足以支持唯一ID

时间:2009-09-24 14:27:29

标签: mysql uniqueidentifier username

我需要存储用户的帖子。

他们的用户名是唯一的,我确信他们不能在同一毫秒内发帖。

然后他们的帖子的网址将包含 /用户名/ 12345678890 /帖子标题

我无法使用Auto_Inc编号,因为我没有在DB中知道它。 希望他们知道数字或能够猜测。

这是否足够独特,足以存储在DB


如果是这种情况,最好的方法是将唯一ID存储在DB(MySQL)

PK对于URL不是相对的。

E.g。

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

我应该为列编制索引吗?

- 修改 -

我忘了提到我不知道用户知道多少帖子 有或者能够为他们猜出一个数字。

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

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

3 个答案:

答案 0 :(得分:2)

  

我不能使用Auto_Inc编号,因为我在DB

中不知道它

然后问题的解决方法是学习它,或者提出问题以清除你不理解的东西(MySql甚至提供serial别名来使这些变得简单)。由于您不知道如何使用您的语言功能而创建解决方案只会为您提供以后必须解决的问题。现在解决它们很简单,并且有很多人可以提供帮助(更多人知道如何设置递增密钥,然后如何修复奇怪的并发问题或者制作迟到的“更改名称”功能,这会破坏旧数据)

答案 1 :(得分:1)

  1. 除非不同的人可以使用不同PC上的相同用户名登录,否则用户名+时间(以毫秒为单位)就足够了。如果他们可以从不同的PC发布,您应该确保服务器说出当前时间是什么(用户PC可以很快失去同步)。

  2. 在用户名和createDate列上创建索引。单个索引就足够了。

答案 2 :(得分:0)

  

然后他们的帖子的URL会   包含   /用户名/ 12345678890 /标题的最-交

我建议您获取主键并创建一个如下所示的网址

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

我不能像我一样使用Auto_Inc号码   在DB中不知道它

您可以采用与获取用户名和帖子标题值相同的方式获取AUTO_INCREMENT_ID。只需在SELECT语句中选择它即可。 e.g。

SELECT auto_increment_id, username, anything_other FROM table1