У меня есть два класса, Foo
и Bar
. Каждый Bar
будет содержать много Foo
с. Foo
с может быть кратным Bar
с, но каждый Foo
может быть только в данном Bar
один раз. У меня есть следующая структура таблицы:
CREATE TABLE `bar_foos` (
`bar_id` INT UNSIGNED NOT NULL,
`foo_id` INT UNSIGNED NOT NULL,
PRIMARY KEY ( `bar_id` , `foo_id` )
);
Это должно хорошо работать для моих отношений "многие ко многим". У меня вопрос: хочу ли я, чтобы мой код мог проверять, используется ли Foo
любым Bar
s, I.E. чтобы сказать пользователю «Этот Foo не может быть удален, потому что он используется 5 барами», индекс PRIMARY KEY помогает мне с запросом типа
SELECT * FROM `bar_foos` WHERE `foo_id`=2
или
SELECT COUNT(*) FROM `bar_foos` WHERE `foo_id`=2
Или мне нужен отдельный индекс только для столбца foo_id
?