看一道SQL面试题: 看一道SQL面试题:要求存储gmail的日志,给定发信时间,发信人,收信人,要求设计数据库表,存储日志,并给出制定访问的SQL语句。如何设计日期时间、发信人、收信人的数据存储方式,节省数据库空间? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create table gamillog(id int auto_increment primary key,send varchar(100),get varchar(100),rowdate timestamp default now()) 联系人表(ID INT auto_increment primary key,NAME VARCHAR(30))日志表(ID auto_increment primary key,SENDTIME timestamp default now(),SENDID,RECEIVEID) 一张表就可以了吧create table gamil_log(id int auto_increment primary key,sender varchar(32),addressee varchar(32),send_time timestamp default CURRENT_TIMESTAMP,insert_time date);其中id自增主键sender 发信人addressee 收信人send_time 发送时间insert_time 日志记录时间 日志表啊,不用讲究第三范式的,因为日志表通常很大,你要是join的话,会很消耗资源的啊。 时间看情况用varchar,记录几个字段就用几个字段发信人和收信人,就记录@前面的名字就行了,地址另外用一个字段记录 MEDIABLOB字段变成BLOB字段是怎么回事? mysql语句查询,求大牛指导 MYSQL密码问题 mysql 存贮中文乱码问题 Mysql:lock tables tb_nm 之后如何再得到tb_nm的状态? 请问关于数据库连接池的问题 请问mysql怎么用dos命令打开服务和关闭服务 mysql查询一个月所有员工 全部任务中每类任务 完成几次 经常删除临时表失败 delphi 6联结mysql,不用odbc,该怎么联? postgres存储数据时,出现问题 怎么学习sql呀?推举几本书呗(零基础)
联系人表(ID INT auto_increment primary key,NAME VARCHAR(30))
日志表(ID auto_increment primary key,SENDTIME timestamp default now(),SENDID,RECEIVEID)
一张表就可以了吧
create table gamil_log(id int auto_increment primary key,sender varchar(32),addressee varchar(32),send_time timestamp default CURRENT_TIMESTAMP,insert_time date);其中id自增主键
sender 发信人
addressee 收信人
send_time 发送时间
insert_time 日志记录时间
日志表啊,不用讲究第三范式的,因为日志表通常很大,你要是join的话,会很消耗资源的啊。
发信人和收信人,就记录@前面的名字就行了,地址另外用一个字段记录