数据库效率冗余问题

时间:2018-10-09 13:02:37

标签: database foreign-keys redundancy

我正在为正在从事的初创公司创建数据库,但现在我不知道哪个选项最适合继续操作。下图说明了这种情况,F的每个外观仅与P1 P2或P3的一个外观相关联: enter image description here

我正在编程,并且找到了三种实现方法。

第一种方式:这样,我每次在数据库中重复IDF 2次。

CREATE TABLE F (
  IDF int(11) NOT NULL, --pk
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE FP1 ( --both fk 
  IdF int(11) NOT NULL,
  IdP1 int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE FP2 ( --both fk
  IdF int(11) NOT NULL,
  IdP2 int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE FP3 ( --both fk
  IdF int(11) NOT NULL,
  IdP3 int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二种方式:这样就不会重复IDF,但是每次出现我都会有2个空字段。

CREATE TABLE F ( 
  IDF int(11) NOT NULL, --pk
  IDP1 int(11) DEFAULT NULL, --all fk
  IDP2 int(11) DEFAULT NULL,
  IDP3 int(11) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第三种方式:也许最好的解决方案是将IDF作为每个P表中的外键,因为F的元素是在PI的元素创建之后才可以将外键保留为空值的? >

您如何看待?非常感谢

0 个答案:

没有答案