1,用户表用户id的问题。我大多数情况下采用的都是自增的int型id,这样储存空间占用小。但是存在一个缺陷,就是int最大是11位数容易超出。还有一个弊端就是数据迁移的时候,比如用户注册在两台机器上,两个自增的ID,合并的时候只能把一个表的数据放另外一个的后面,这样引起用户混乱,还有就是拆分的时候,也容易出现诸如此类的问题。
解决方案:所用用户注册在一个数据库,需要分库的时候,只有拆分操作。
2,为了避免数据可能出现的拆分问题,还有一种方式是md5加密一个字符串,拼接一个衍值,这个值通常是用时间戳和rand随机数。但是这会有个缺陷,就是同一时间注册的两个用户,随机数也可能一样,导致用户混淆,但是这个概率非常小。
3,GUID 是全局唯一标示符,理想情况下是全球唯一的,代码如下:
<?php
function create_guid(){ $charid = strtoupper(md5(uniqid(mt_rand(),true))); $hypen = chr(45); $uuid = substr($charid,6,2).substr($charid,4,2). substr($charid,2,2).substr($charid,0,2).$hypen. substr($charid,10,2).substr($charid,0,2).$hypen .substr($charid,14,2).substr($charid,12,2).$hypen .substr($charid, 16,4).$hypen.substr($charid, 20,12); return $uuid;}$uid = create_guid();var_dump($uid);以上情况记录一下,具体使用哪一种方式?根据不同的项目需求选择吧。