这是我自己做的一个项目的表。有点多,请问有哪些值得优化的地方呢?稍微有点长,求大神带我飞起来
CREATE TABLE tbl_myr_user(
userId INT UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT ' 用户的id,自增长',
username VARCHAR(45) NOT NULL COMMENT ' 用户名',
password VARCHAR(32) NOT NULL COMMENT ' 用户密码',
email VARCHAR(128) UNIQUE NOT NULL COMMENT ' 用户邮箱,唯一的。按理说作为手机来说,手机号码才是作为唯一索引的',
phoneNumber VARCHAR(16) UNIQUE COMMENT ' 手机号',
birthday DATE NOT NULL,
gender TINYINT NOT NULL DEFAULT 0 COMMENT ' 0女1男',
homeland VARCHAR(10) NOT NULL COMMENT ' 家乡,一旦注册将不会更改',
residence VARCHAR(10) NOT NULL COMMENT ' 现居地',
wantWhere VARCHAR(10) NULL COMMENT ' 想去哪 ',
registerDate DATE NOT NULL COMMENT ' 注册日期',
smallAvatar VARCHAR(255) NOT NULL COMMENT ' 必须设定一个',
bigAvatar VARCHAR(255) NOT NULL COMMENT ' 用户头像大图',
qrcode VARCHAR(255) NULL COMMENT ' 用户的二维码',
isStudent TINYINT(1) NOT NULL DEFAULT 1 COMMENT ' 0表示不是学生',
wentWhere VARCHAR(255) COMMENT ' 去过哪。可以有形容这些地方的语句',
md5 VARCHAR(32) NOT NULL COMMENT ' md5值.用来判断用户的资料或者Plan等是否有变化',
sessionId VARCHAR(32) NOT NULL COMMENT ' 当前用户所对应的SessionId',
iemi VARCHAR(15) NOT NULL
)AUTO_INCREMENT=100001;
CREATE TABLE tbl_myr_plan(
planId INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
userId INT UNSIGNED NOT NULL,
createTime INT UNSIGNED NOT NULL,
destination VARCHAR(45) NOT NULL COMMENT '目的地。这个目的地应该是存在于数据库的。比如不能输入火星。在客户端校验地名',
city VARCHAR(10)NOT NULL COMMENT ' 景点所对应的城市',
startDate DATE NOT NULL COMMENT ' 计划的开始日期',
endDate DATE NOT NULL COMMENT ' 结束日期',
transportation TINYINT(1) NOT NULL COMMENT '交通工具',
together TINYINT NOT NULL COMMENT '和谁',
seek TINYINT(1) NOT NULL COMMENT '找人还是提供建议',
type TINYINT(1) NOT NULL COMMENT '度假,游玩,出差,返乡',
images TEXT NULL COMMENT ' 计划的图片,采用json直接保存',
flightNumber VARCHAR(45) NULL COMMENT ' 航班号或者车次号,如果是本地游则可以不需要',
postscript VARCHAR(255) NULL COMMENT ' 补充说明'
);
CREATE TABLE tbl_myr_refresh (
userId INT UNSIGNED NOT NULL PRIMARY KEY ,
geohash VARCHAR(10) NOT NULL,
latitude VARCHAR(20) NOT NULL,
longitude VARCHAR(20) NOT NULL,
refreshTime INT UNSIGNED NOT NULL COMMENT ' 用户在请求数据的时候刷新的时间',
status TINYINT(1) COMMENT ' 用户当前的状态'
);
/**
guide是根据城市来自动归类的。
**/
CREATE TABLE tbl_myr_share (
shareId INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255) NULL COMMENT ' 用户想要说的话',
createTime INT NULL,
location VARCHAR(45) NOT NULL COMMENT ' 拍照片的时的位置,不是当前的位置',
city VARCHAR(30) NOT NULL,
score TINYINT(1) DEFAULT 0 COMMENT '对这个地点评分',
userId INT UNSIGNED NOT NULL,
images TEXT NULL COMMENT ' 采用json字符串来存储图片位置。因为只读写一次',
guideId INT UNSIGNED
);
CREATE TABLE tbl_myr_guide(
guideId INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
userId INT UNSIGNED ,
city VARCHAR(30) NOT NULL COMMENT ' 当前guide的城市',
createTime INT NULL,
level VARCHAR(45) NULL COMMENT ' 当前guide的级别'
);
CREATE TABLE tbl_myr_relationship (
priUserId INT UNSIGNED NOT NULL COMMENT ' 主userId',
subUserId INT UNSIGNED NOT NULL,
type TINYINT NOT NULL COMMENT ' 0表示这是被拉黑,1表示是关注Ta',
createTime INT UNSIGNED NOT NULL COMMENT '发生关系的时间',
PRIMARY KEY (priUserId, subUserId,type)
);
/**
每天限制输入三次。这样保证准确性。
*/
CREATE TABLE tbl_myr_train (
userId INT UNSIGNED NOT NULL PRIMARY KEY,
flightNumber VARCHAR(45) NOT NULL COMMENT ' 航班号或者车次号',
);
CREATE TABLE tbl_myr_share_comment (
commentId INT UNSIGNED NOT NULL PRIMARY KEY ,
shareId INT UNSIGNED NOT NULL,
createTime INT UNSIGNED NULL,
userId INT UNSIGNED NULL,
content VARCHAR(255) NULL COMMENT ' 如果是文字就是文字。如果是语音的话这里就是URL链接',
replyId INT UNSIGNED NULL DEFAULT 0 COMMENT ' 0表示这是新的评论,否则表示的是回复'
);
CREATE TABLE tbl_myr_version (
upateDate DATE NOT NULL,
isForced TINYINT(1) COMMENT ' 是否强制用户更新',
newestVersionId VARCHAR(5),
updateContent VARCHAR(1000) COMMENT ' 客户端更新了哪些内容'
);
建议对用户表进行一下拆分 用户详情部分 和基本信息
经常会被查询的放在一个表,不经常查询的放在一个表