Mysql 数据库设计:数据库中的用户表必须包含哪些字段?
我正在尝试为MySQL设计一个用户表 目前,我的用户表如下所示Mysql 数据库设计:数据库中的用户表必须包含哪些字段?,mysql,database-table,Mysql,Database Table,我正在尝试为MySQL设计一个用户表 目前,我的用户表如下所示 users ( BIGINT id, VARCHAR(?) username, VARCHAR(?) password, VARCHAR(254) email, DATETIME last_login, DATETIME data_created ) 我还应该包括哪些其他字段?为什么我需要它们 我应该从上面排除哪些字段?为什么 我应该为用户名和密码分配多少个字符,为什么 我应该为id使用BIGINT吗 提前感谢您的帮助 增加 我将
users (
BIGINT id,
VARCHAR(?) username,
VARCHAR(?) password,
VARCHAR(254) email,
DATETIME last_login,
DATETIME data_created
)
我还应该包括哪些其他字段?为什么我需要它们
我应该从上面排除哪些字段?为什么
我应该为用户名和密码分配多少个字符,为什么
我应该为id使用BIGINT吗
提前感谢您的帮助
增加
我将使用社交网站的表格,所以“用户”指的是全世界的人。1/用户名和密码:自己决定你想要多大 2/BIGINT很好,尽管整数可能就足够了。但要使其无符号,也可能是自动递增的 3/试着让你的用户表尽可能小:
users (
BIGINT id,
VARCHAR(?) username,
VARCHAR(?) password,
VARCHAR(254) email,
DATETIME data_created
)
剩下的,你放进额外的桌子:
logins (
BIGINT loginid
BIGINT userid
DATETIME last_login,
VARCHAR(15) IP_ADRESS
...
)
这样,当添加或删除新用户时,或者当有人更改其密码时,您的用户表将只更改,这比有人登录时的更改频率要低。这允许更好的表缓存(当您写入表时,MySQL会清除表缓存)。所有这些都取决于您自己的规格。对于username,如果愿意,可以取100;对于password,可以取想要使用的散列函数的长度(对于MD5,为32) 在表的主键上使用带自动递增的整数(10)更为常见 您可能需要询问姓名、姓氏、出生日期、居住地点等。您认为您向用户询问的所有数据对您正在构建的平台都应该很重要。一些评论:
您需要的字段在很大程度上取决于您没有提供的表的用途。请更新您的问题,谢谢。为什么使用BIGINT?我同意你的建议,但这只适用于拥有大量用户的系统。对于几千个用户来说,正常的表模式很好。感谢您的建议,并向我介绍了MySQL中的缓存策略。那么创建用户的人呢?我发现将名称的varchar length设置为255是一种不好的做法。当然,这一切都可以归结为惯例,但255往往被用户和程序员误用甚至滥用。你最好用谷歌搜索标准长度。i、 e.对于名称,组合字段的适当最大长度应为35或70。