用户帐号或通行证系统设计,下面以我的数库为例讲解。
我一般使用两个表 passport,profile 完成网站会员系统。
首先说说passport表,你也要以使用user或member等等命名,这个表设计尽可能地简单,不要使用过多字段。仅保存登录所必须用到的字段,如user,password,nickname,email... 登录帐号和密码做复合索引。
然后是profile表,这个表与passport是1:1关系,保存用户详细信息
这样设计可以保证海量用户登录时的速度。
+----------+ | user | |----------| |id | <---+ |user | | |passwd | | |nickname | | |status | | +----------+ | 1:1 +----------+ | | profile | | |----------| | |user_id | o---+ |name | |sex | |address | |telphone | |status | +----------+
该表的功能是,防止用户注册过程中流逝,记录已经填写的数据。
CREATE TABLE `signup_keyloggers` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '唯一ID', `cookie` VARCHAR(32) NOT NULL COMMENT 'cookie id', `type` ENUM('baidu','google') NOT NULL COMMENT '推广账号类型', `field` ENUM('Name','Mobile','Email') NOT NULL COMMENT '字段名', `value` VARCHAR(50) NOT NULL COMMENT '值', `status` ENUM('New','Sent','Ignored','Called','Processed') NOT NULL DEFAULT 'New' COMMENT '状态', `operator` VARCHAR(10) NOT NULL COMMENT '操作人', `ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `mtime` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '状态修改时间', PRIMARY KEY (`id`), UNIQUE INDEX `unique_index` (`type`, `cookie`, `field`, `value`) ) COMMENT='用户注册键盘记录器' COLLATE='utf8_general_ci' ENGINE=InnoDB;
当用户注册成功会根据cookie id 删除该表中的数据。
当数据被记录后,客服就可以对客户回访,并修改状态status,忽略 Ignored,邮件发送Sent, 电话回访Called等等
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。