Я создаю базу данных для стартапа, над которым я работаю, я пришел к точке, где я не знаю, какой вариант должен быть наиболее подходящим для продолжения;следующее изображение объясняет ситуацию, каждое появление 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 мог оставить внешний ключ как нулевое значение, я прав?
Что вы думаете об этом?Большое спасибо