下面是jForum论坛的两张数据库表, 第一张表是帖子的一些属性, 第二张表是帖子的内容, 两张表是一对一的关系.
我不明白为什么要用一对一的关系, 直接放在一张表里不好吗? 这样只操作一张表, 很好维护.
一对一的关系有什么好处?难道是把大字段单独存可以提高查询性能吗?
CREATE TABLE jforum_posts (
post_id INT NOT NULL auto_increment,
topic_id INT NOT NULL default '0',
forum_id INT NOT NULL default '0',
user_id INT NOT NULL default '0',
post_time datetime default NULL,
poster_ip varchar(15) default NULL,
enable_bbcode tinyint(1) NOT NULL default '1',
enable_html tinyint(1) NOT NULL default '1',
enable_smilies tinyint(1) NOT NULL default '1',
enable_sig tinyint(1) NOT NULL default '1',
post_edit_time datetime default NULL,
post_edit_count INT NOT NULL default '0',
status tinyint(1) default '1',
attach TINYINT(1) DEFAULT '0',
need_moderate TINYINT(1) DEFAULT '0',
PRIMARY KEY (post_id),
KEY (user_id),
KEY (topic_id),
KEY (forum_id),
KEY(post_time),
INDEX (need_moderate)
) TYPE=InnoDB;
CREATE TABLE jforum_posts_text (
post_id INT NOT NULL PRIMARY KEY,
post_text TEXT,
post_subject VARCHAR(100)
) TYPE=InnoDB;