0

我需要存储用户的帖子。

他们的用户名是独一无二的,我敢肯定他们不能在同一毫秒内发帖。

然后他们的帖子的 URL 将包含 /Username/12345678890/title-of-the-post

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

这是否足以在数据库中存储足够独特?


如果是这种情况,将唯一 ID 存储在数据库(MySQL)中的最佳方法是

PK 与 URL 无关。

例如

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

我应该索引一列吗?

--编辑--

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

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

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

4

3 回答 3

2

我无法使用 Auto_Inc 编号,因为我在数据库中不知道它

那么解决你的问题的方法就是去学习它,或者问一个问题来把你不明白的东西弄明白(MySql 甚至提供了serial别名来让这些变得简单)。因为您不知道如何使用您的语言的功能而创建变通方案只会为您设置以后必须解决的问题。现在解决它们,虽然它们很容易并且有很多人可以提供帮助(更多的人知道如何设置递增键,然后是如何解决奇怪的并发问题或使后期“更改名称”功能搞砸旧数据)

于 2009-09-24T14:36:40.437 回答
1
  1. 除非不同的人可以在不同的 PC 上使用相同的用户名登录,否则用户名 + 时间(以毫秒为单位)应该足够了。如果他们可以从不同的 PC 发布,您应该确保服务器显示当前时间(用户 PC 可能很快失去同步)。

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

于 2009-09-24T14:33:40.003 回答
0

然后他们的帖子的 URL 将包含 /Username/12345678890/title-of-the-post

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

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

我无法使用 Auto_Inc 编号,因为我在数据库中不知道它

您可以像获取用户名和帖子标题的值一样获取 AUTO_INCREMENT_ID。只需在 SELECT 语句中选择它。例如

SELECT auto_increment_id, username, anything_other FROM table1
于 2009-09-24T14:42:58.273 回答