首页 新闻 会员 周边 捐助

GUID主键的问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-07-08 23:50

如果使用GUID主键的话,是不是,只能作为主键,而不能像自增主键那样与业务相关,所以,也需要一个与自增主键类似的int型的字段?

比如http://web.com/user/3003,我们都知道3003是ID,估计90%也是主键

而使用GUID的话,不能写成http://web.com/user/GUID吧。。

-已注销-的主页 -已注销- | 初学一级 | 园豆:91
提问于:2012-07-08 15:13
< >
分享
最佳答案
0

如果用户表分布在不同的服务器上,自增int型ID将面临一个问题:如何自增并保证全局唯一?

GUID是解决这个问题的简单办法,不然你就要写程序来生成全局唯一的int型ID,而不是让数据库自动自增。

http://web.com/user/GUID 也是可以实现的,只是不好记,但为了友好易记的url,一般用字母或数字别名。

收获园豆:5
dudu | 高人七级 |园豆:29568 | 2012-07-08 15:34

http://web.com/user/GUID 也是可以实现的,只是不好记,但为了友好易记的url,一般用字母或数字别名。

是的,就是这个意思

请教如何做别名。。如果在表里放一个别名字段,那岂不是这个别名字段也要求唯一性?

另外在这个链接http://hi.baidu.com/tianhuimin/item/ba3b4f448321db2211ee1e74

(貌似也没什么友好性哈)

看到这么一段

URL显得不友好,我觉得这多少是你的INT情结造成的惯性思维,其实,和INT类型相比,UUID才是最自然的主键选择,注意,我这里用的是自然这个形容词,仔细体会一下你能理解我的意思。另外,很多时候,URL本身就不需要友好,比如,一个电子商务网站,按照INT友好的URL说法,她的订单URL大概是下面这个形式的:/order.php/id/123,我要说明的是,这样是很友好,但是有些太友好了,友好的甚至不安全,比如说,我早晨下一个订单,发现URL是/order.php/id/1000,晚上再下一个订单发现URL是/order.php/id/2000,那么我就可以估计出此网站一天的订单数大致是1000左右,甚至能大体估计出它的销售额,而这些数据往往都是重要的商业秘密。使用UUID就没有这个顾虑。

是不是有道理呢

-已注销- | 园豆:91 (初学一级) | 2012-07-08 17:39

@莫莫[momo]:

是的,别名需要唯一性,但不要有序(自增是就一种有序)。添加别名时只需检查是否已存在同名。

使用友好URL是因为有这个需要,需要友好易记。

dudu | 园豆:29568 (高人七级) | 2012-07-08 21:29
其他回答(1)
0

可以使用GUID,对于重要的可以用别名实现。

不懂cc | 园豆:877 (小虾三级) | 2012-07-08 16:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册