我正在为正在从事的初创公司创建数据库,但现在我不知道哪个选项最适合继续操作。下图说明了这种情况,F的每个外观仅与P1 P2或P3的一个外观相关联:
我正在编程,并且找到了三种实现方法。
第一种方式:这样,我每次在数据库中重复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的元素创建之后才可以将外键保留为空值的? >
您如何看待?非常感谢