设计游戏用户信息表
- 回顾要实现的用户登录模块,具体需求如下:
- 游戏玩家登录访问游戏客户端,通过客户端界面输入用户名和密码
- 在游戏玩家点击“确认”后,客户端连接至数据库服务器对用户名和密码进行确认,如果颜验证成功,则 ” 玩家可以进入大厅,如果失败,则不允许进入!“
create database game_db;#创建游戏数据库game_db
use game_db;
create table users(
id int(11) unsigned PRIMARY KEY AUTO_INCREMENT COMMENT'主键',
username varchar(64) UNIQUE NOT NULL COMMENT '用户名',
password varchar(64) NOT NULL COMMENT '密码',
nickname char(64) DEFAULT NULL COMMENT '昵称',#允许为空
mobile char(11) DEFAULT NULL COMMENT '手机号码',
age tinyInt(3) unsigned DEFAULT 18 COMMENT '年龄',
idno char(18) DEFAULT NULL COMMENT '身份证号码'
);
作用一:验证用户身份
作用二:用来保存用户的基本信息
-
更好的设计:分成两个表:用户信息表和用户验证表
-
原因:
- 面向对象方面考虑:用户信息和用户验证是两种“对象”
- 性能方面考虑: 登陆验证时的时候列较少,查询速度快。
- 安全方面考虑: 防止在查询用户信息时,把密码也直接查询出来,会容易被攻击和进行恶意操作。
-
实现:
-
create database game_db;#创建游戏数据库game_db use game_db; create table users( id int(11) unsigned PRIMARY KEY AUTO_INCREMENT COMMENT'主键', nickname char(64) DEFAULT NULL COMMENT '昵称',#允许为空 username varchar(64) UNIQUE NOT NULL COMMENT '用户名', mobile char(11) DEFAULT NULL COMMENT '手机号码', age tinyInt(3) unsigned DEFAULT 18 COMMENT '年龄', idno char(18) DEFAULT NULL COMMENT '身份证号码' ); create table user_auths( userid int(11) unsigned NOT NULL COMMENT '外键,对应user表中的id', username varchar(64) UNIQUE NOT NULL COMMENT '用户名', password varchar(64) NOT NULL COMMENT '密码', FOREIGN KEY(userid) REFERENCES users(id) ); insert into users (username,nickname,mobile,age,idno) values('martin','程咬金',13165306515,19,371721200511178162); insert into user_auths values(1,'martin','123456qwe');#密码明文不安全 insert into user_auths values(1,'martin',md5('123456qwe'));#使用内部函数md5加密,自动变成32位密文
-