开发者社区> 问答> 正文

为什么建立数据库表中有一对一的关系?

下面两张表是一对一的关系,我不明白为什么要用一对一, 直接放在一张表里不好吗? 这样只操作一张表, 很好维护.
一对一的关系有什么好处?难道是把大字段单独存可以提高查询性能吗?

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;

展开
收起
落地花开啦 2016-02-05 13:25:29 6834 0
1 条回答
写回答
取消 提交回答
  • 这个设计的好处是如果只查询一个用户的文章列表会比较快。
    因为用户发的文章内容往往比较大, 但是标题往往会比较短。 如果都放到一个表里, 那么这个表会非常大。 查询大表的是比较耗时的。
    而如果单独出来, jforum_posts这个表会比较小,查询起来比较快。

    当然这种设计也不是总是好的。如果2个表都非常小,那么放到一张表里避免了一次join, 那么效果要比2个表好。 要具体问题具体分析。

    2019-07-17 18:37:43
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载