表优化 - 大神快来,这是我做的一个项目的我自己写的mysql表,请问里面有什么错误的地方,有哪些值得优化的?
伊谢尔伦
伊谢尔伦 2017-04-17 11:31:04
[MySQL讨论组]

这是我自己做的一个项目的表。有点多,请问有哪些值得优化的地方呢?稍微有点长,求大神带我飞起来


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 ' 客户端更新了哪些内容' );
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
天蓬老师

建议对用户表进行一下拆分 用户详情部分 和基本信息
经常会被查询的放在一个表,不经常查询的放在一个表

高洛峰

你这第一张表,建议拆分下,感觉冗余度有点高,不建议把照片,二维码这些直接存在用户表里

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号