create table if not exists member (
`id` int(10) primary key auto_increment not null comment '用户ID',
`username` varchar(50) not null comment '用户名',
`gender` tinyint null default 0 comment '性别,0未知,1女性,2男性',
`email` varchar(200) not null comment '邮箱',
`phone` varchar(20) not null comment '电话,区号-电话-分机号/手机',
`createtime` timestamp not null comment '用户创建时间',
`status_deleted` tinyint default 0 comment '注销状态,0未注销,1注销',
key(`id`, `username`),
key(`gender`, `usernmae`)
) engine=InnoDB default charset=utf8 collate utf8_general_ci;
create table if not exists member_hobby (
`id` int(10) primary key auto_increment not null comment '爱好ID',
`member_id` int(10) not null comment '用户ID',
`title` varchar(100) not null comment '爱好名称',
`descript` varchar(1000) null default '' comment '爱好介绍/描述',
`createtime` timestamp not null comment '创建爱好时间',
`status_deleted` tinyint default 0 comment '爱好状态,0显示,1删除',
key(`member_id`, `title`),
) engine=InnoDB default charset=utf8 collate utf8_general_ci;
# 查询用户姓名,性别语句:username, gender
select id,username,gender,email,phone from member where gender=gender and username like '%username_word%' limit(0, 10) and status_deleted=0
#查询爱好 member_id
select id, member_id, title, descript from member_hobby where member_id=member_id and status_deleted=0
#检测用户是否存在:username
select id from member where username=username
bootstrap 我也了解。不过我先说数据库设计方面的考虑。
因为要考虑多个爱好的映射,所以爱好必然是拆到一个独立的表中。通过member_id决定是与哪个用户绑定。
两张表都设置了status_deleted是为了保存记录,就是做伪删除,用户可以注销自己的帐号,前端也不会再显示,但是可以通过后台找回。
createtime的目的也是类似,虽然前端不会显示,但是可以保持记录,用于做二次数据挖掘,统计用户注册时间之类的。
这种实践面试对个人综合能力要求还挺高的,考察了你设计数据库的能力,用代码对数据库增删改查的能力,还有对前端web的各种组建使用的能力。
题目特别提到了要支持同时增加和减少爱好,是考察你会不会构造json或者form数据传给后端,后端解析数组数据。使用ajax可能会更好。
java我完全不懂,就不误导人了,但是数据库、html前端这方面的事情我都可以帮你解答。
`id` int(10) primary key auto_increment not null comment '用户ID',
`username` varchar(50) not null comment '用户名',
`gender` tinyint null default 0 comment '性别,0未知,1女性,2男性',
`email` varchar(200) not null comment '邮箱',
`phone` varchar(20) not null comment '电话,区号-电话-分机号/手机',
`createtime` timestamp not null comment '用户创建时间',
`status_deleted` tinyint default 0 comment '注销状态,0未注销,1注销',
key(`id`, `username`),
key(`gender`, `usernmae`)
) engine=InnoDB default charset=utf8 collate utf8_general_ci;
create table if not exists member_hobby (
`id` int(10) primary key auto_increment not null comment '爱好ID',
`member_id` int(10) not null comment '用户ID',
`title` varchar(100) not null comment '爱好名称',
`descript` varchar(1000) null default '' comment '爱好介绍/描述',
`createtime` timestamp not null comment '创建爱好时间',
`status_deleted` tinyint default 0 comment '爱好状态,0显示,1删除',
key(`member_id`, `title`),
) engine=InnoDB default charset=utf8 collate utf8_general_ci;
# 查询用户姓名,性别语句:username, gender
select id,username,gender,email,phone from member where gender=gender and username like '%username_word%' limit(0, 10) and status_deleted=0
#查询爱好 member_id
select id, member_id, title, descript from member_hobby where member_id=member_id and status_deleted=0
#检测用户是否存在:username
select id from member where username=username
bootstrap 我也了解。不过我先说数据库设计方面的考虑。
因为要考虑多个爱好的映射,所以爱好必然是拆到一个独立的表中。通过member_id决定是与哪个用户绑定。
两张表都设置了status_deleted是为了保存记录,就是做伪删除,用户可以注销自己的帐号,前端也不会再显示,但是可以通过后台找回。
createtime的目的也是类似,虽然前端不会显示,但是可以保持记录,用于做二次数据挖掘,统计用户注册时间之类的。
这种实践面试对个人综合能力要求还挺高的,考察了你设计数据库的能力,用代码对数据库增删改查的能力,还有对前端web的各种组建使用的能力。
题目特别提到了要支持同时增加和减少爱好,是考察你会不会构造json或者form数据传给后端,后端解析数组数据。使用ajax可能会更好。
java我完全不懂,就不误导人了,但是数据库、html前端这方面的事情我都可以帮你解答。