为什么建立数据库表中有一对一的关系?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

落地花开啦 2016-02-05 13:25:29 5468

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

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;
关系型数据库 数据库
分享到
取消 提交回答
全部回答(1)
  • qilu
    2019-07-17 18:37:43

    这个设计的好处是如果只查询一个用户的文章列表会比较快。
    因为用户发的文章内容往往比较大, 但是标题往往会比较短。 如果都放到一个表里, 那么这个表会非常大。 查询大表的是比较耗时的。
    而如果单独出来, jforum_posts这个表会比较小,查询起来比较快。

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

    1 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程