segmentfault 用戶表結(jié)構(gòu)解析
segmentfault 是一個(gè)問(wèn)答社區(qū),想必其用戶表結(jié)構(gòu)設(shè)計(jì)也別具匠心。本問(wèn)答將從必要字段和項(xiàng)目代碼的角度,為大家深入剖析 segmentfault 的用戶表結(jié)構(gòu)。
必要字段
對(duì)于任何用戶表而言,以下字段都是不可或缺的:
- id:用戶的唯一標(biāo)識(shí)符
- 用戶名:用戶的登錄名稱
- 密碼:用戶用于登錄的哈希密碼
- 電子郵件:用戶聯(lián)系方式
- 注冊(cè)時(shí)間:用戶注冊(cè)的時(shí)間
- 更新時(shí)間:用戶信息的最后更新時(shí)間
項(xiàng)目代碼分析
segmentfault 已開(kāi)源其問(wèn)答社區(qū)軟件 answer。我們可以在其項(xiàng)目代碼中找到用戶表結(jié)構(gòu)的具體實(shí)現(xiàn)。
打開(kāi)項(xiàng)目代碼倉(cāng)庫(kù)中的 answer/internal/migrations 目錄,可以看到一系列與創(chuàng)建用戶表相關(guān)的 sql 遷移腳本。其中,文件 1_create_users.sql 定義了用戶表的初始結(jié)構(gòu):
CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, `register_time` timestamp NOT NULL, `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
通過(guò)代碼分析,我們可以發(fā)現(xiàn) segmentfault 的用戶表結(jié)構(gòu)與我們預(yù)測(cè)的必要字段一致,并且定義了額外的字段:
- register_time:記錄用戶的注冊(cè)時(shí)間,類型為時(shí)間戳
- update_time:記錄用戶信息的最后更新時(shí)間,類型為時(shí)間戳,并默認(rèn)采用當(dāng)前時(shí)間戳
此外,username 字段設(shè)置了唯一鍵索引,確保每個(gè)用戶名在數(shù)據(jù)庫(kù)中都是唯一的。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END