В MySQL мне посоветовали хранить опции множественного выбора для «Наркотиков» в виде отдельной таблицы user_drug
, где каждая строка - это одна из опций, выбранных конкретным пользователем. Мне также посоветовали создать третью таблицу drug
, которая описывает каждый параметр, выбранный в таблице user_drug
. Вот пример:
user
id name income
1 Foo 10000
2 Bar 20000
3 Baz 30000
drug
id name
1 Marijuana
2 Cocaine
3 Heroin
user_drug
user_id drug_id
1 1
1 2
2 1
2 3
3 3
Как видите, таблица user_drug
может содержать несколько лекарств, выбранных конкретным пользователем, а таблица drug
сообщает вам, к какому препарату относится drug_id
.
Мне сказали, что внешний ключ должен связывать таблицы user_drug
и drug
вместе, но я никогда не имел дело с внешними ключами, поэтому я не уверен, как это сделать.
Не проще ли избавиться от таблицы лекарств и просто сохранить значение TEXT для каждого лекарства в user_drug? Почему или почему нет?
Если добавление 3-й таблицы drug
лучше, то как мне реализовать структуру внешнего ключа и как обычно получать соответствующие значения, используя эти внешние ключи?
(мне кажется, гораздо проще использовать только 2 таблицы, но я слышал, что внешние ключи полезны тем, что они обеспечивают правильное ввод значения и что поиск и сортировка * 1027 также намного быстрее * чем текстовое значение, поэтому я хочу быть уверен.)