search 2013 adfgs
作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明
链接:http://isky000.com/database/example-db-scripts | del.icio.us | Twitter it

有网友建议将原书“附录A”中的示例库结构脚本在网上贴出来,方便大家做实验的时候不用一个字母一个字母的敲,挺好的建议,以下就是示例库结构脚本的所有创建语句:

--创建数据库
CREATE DATABASE example;
 
--创建表
--索引是根据应用中使用的
Query 的情况而决定,所有表开始都仅仅只有主键,没有其他的索引
--各表没有特定存储引擎和字符集,各位读者朋友可根据自己的环境决定
CREATE TABLE event (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
user_id int(11) NOT NULL,
 
event_type varchar(8) NOT NULL,
 
event_msg varchar(255) DEFAULT NULL,
 
PRIMARY KEY (id)
);
 
--组内讨论信息
summary
CREATE TABLE group_message (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
group_id int(11) NOT NULL,
 
user_id int(11) NOT NULL,
 
author varchar(32) NOT NULL,
 
subject varchar(128) NOT NULL,
 
PRIMARY KEY (id)
);
 
--组内讨论信息内容
CREATE TABLE group_message_content (
 
group_msg_id int(11) NOT NULL,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
content text NOT NULL,
 
PRIMARY KEY (group_msg_id)
);
 
--组信息
CREATE TABLE groups (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
name varchar(32) NOT NULL,
 
status varchar(16) NOT NULL,
 
description varchar(1024) DEFAULT NULL,
 
PRIMARY KEY (id)
);
 
--特殊消息
CREATE TABLE message (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
subject varchar(64) NOT NULL,
 
status varchar(16) NOT NULL,
 
PRIMARY KEY (id)
);
 
--消息
CREATE TABLE message_content (
 
msg_id int(11) NOT NULL,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
content varchar(512) DEFAULT NULL,
 
PRIMARY KEY (msg_id)
);
 
--照片表
CREATE TABLE photo (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
user_id int(11) NOT NULL,
 
status varchar(16) NOT NULL,
 
subject varchar(64) NOT NULL,
 
url varchar(64) NOT NULL,
 
PRIMARY KEY (id)
);
 
--相册表
CREATE TABLE photo_album (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
album_name varchar(64) NOT NULL,
 
user_id int(11) NOT NULL,
 
PRIMARY KEY (id)
);
 
--照片相册关系表
CREATE TABLE photo_album_relation (
 
id int(11) NOT NULL auto_increment,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
album_id int(11) NOT NULL,
 
photo_id int(11) NOT NULL,
 
PRIMARY KEY (id)
);
 
--照片回复信息表
CREATE TABLE photo_comment (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
photo_id int(11) NOT NULL,
 
comments varchar(512) NOT NULL,
 
PRIMARY KEY (id)
);
 
--系统各组广播消息表
CREATE TABLE top_message (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
user_id int(11) NOT NULL,
 
author varchar(32) NOT NULL,
 
subject varchar(128) NOT NULL,
 
PRIMARY KEY (id)
);
 
--用户基本信息表
CREATE TABLE user (
 
id int(11) NOT NULL AUTO_INCREMENT,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
nick_name varchar(32) NOT NULL,
 
password char(64) DEFAULT NULL,
 
email_b varchar(32) DEFAULT NULL,
 
status varchar(16) DEFAULT NULL,
 
PRIMARY KEY (id)
);
 
--用户个人详细信息表
CREATE TABLE user_profile (
 
user_id int(11) NOT NULL,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
sexuality char(1) NOT NULL,
 
msn varchar(32) DEFAULT NULL,
 
sign varchar(64) DEFAULT NULL,
 
birthday date DEFAULT NULL,
 
hobby varchar(64) DEFAULT NULL,
 
location varchar(64) DEFAULT NULL,
 
description varchar(1024) DEFAULT NULL,
 
PRIMARY KEY (user_id)
);
 
--用户分组表
CREATE TABLE user_group (
 
user_id int(11) NOT NULL,
 
gmt_create datetime NOT NULL,
 
gmt_modified datetime NOT NULL,
 
group_id int(11) NOT NULL,
 
user_type int(11) NOT NULL,
 
status varchar(16) NOT NULL,
 
PRIMARY KEY (user_id,group_id)
);

, , , , , ,

已经有4个回复

  1. Willko Says @ 09-06-22 10:42 pm

    想请教下~
    就是在书里的
    第6章6.3里的那条sql优化
    selec … from (select user_id from user_group where user_group.groupd_id = 1 order by gmt_create desc limit 100,20) t, user where t.user_id = user.user_id

    为什么选择临时表,而不选择创建index(group_id, gmt_create)呢?

    谢谢

  2. 朝阳 Says @ 09-06-28 11:40 am

    @Willko
    你好,这里只是一个简单的示例,在示例schema中的user_group 表这个时候并不存在 group_id 和 gmt_create 的联合索引。如果是在实际场景中,这里可以通过给 user_group 表 创建一个 由 group_id 和 gmt_create 的组合索引来避免 filesort 操作。

Trackbacks & Pingbacks

看完了要说点啥么?