Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

21.2. 用戶帳號表

用戶帳號或通行證系統設計,下面以我的數庫為例講解。

我一般使用兩個表 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    |
+----------+
		
		

21.2.1. 用戶註冊鍵盤跟蹤表設計

該表的功能是,防止用戶註冊過程中流逝,記錄已經填寫的數據。

			
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等等