Проблема избыточности эффективности базы данных - PullRequest
0 голосов
/ 09 октября 2018

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

Что вы думаете об этом?Большое спасибо

...