Возможны ли множественные внешние ключи в одном поле?

Я хочу знать, есть ли способ иметь несколько значений в одном поле в базе данных MySQL, где каждое значение является внешним ключом, ссылающимся на другую таблицу.

Я разрабатываю базу данных с таблицей продуктов и таблицей сертификации продуктов.

Я использую ограничения InnoDB и внешних ключей.

В таблице «продукт» содержатся сведения о конкретных экземплярах продукта. Одна из деталей, содержащихся в таблице продуктов, – это столбец «product_certification_id», который является внешним ключом, ссылающимся на индекс в таблице столбцов «product_certification».

В таблице сертификации продукта содержатся возможные сертификаты, которые могут иметь экземпляры продукта.

Моя проблема связана с тем, что сертификаты продукта не являются взаимоисключающими, поэтому мне интересно, возможно ли иметь несколько значений внешнего ключа в одном и том же поле, ссылающемся на одну и ту же таблицу.

Кроме того, меня беспокоит возможность добавления дополнительных сертификатов в будущем, поэтому мне нужно в этом смысле легко разработать масштабируемое решение.

Спасибо за ваши мысли.

То, что вы обычно делаете, – это установление отношений многих и многих с промежуточной таблицей ссылок. Что-то вроде следующего:

CREATE TABLE product ( `id` integer AUTO_INCREMENT NOT NULL, -- other cols -- PRIMARY KEY (`id`) ); CREATE TABLE certification ( `id` integer AUTO_INCREMENT NOT NULL, -- other cols -- PRIMARY KEY (`id`) ); CREATE TABLE product_certification ( `product_id` integer NOT NULL, `certification_id` integer NOT NULL, PRIMARY KEY (`product_id`, `certification_id`), CONSTRAINT `product_id_product_id` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE CASCADE, CONSTRAINT `certification_id_certification_id` FOREIGN KEY (`certification_id`) REFERENCES `certification` (`id`) ON DELETE CASCADE ); 

Если я правильно вас понимаю, product отношений: product_certification1:M вы можете создать внешний ключ из product_certification для products через product_id , вместо того, чтобы иметь product_certification_id в таблице products (что является недопустимым, поскольку продукт может иметь более 1 сертификации )

Одно поле не может быть внешним ключом для более чем одного поля в другой таблице. Это просто невозможно. Поскольку ваша внешняя таблица имеет составной ключ, ваша таблица должна иметь одинаковые поля.