MySQL: создание внешнего ключа между таблицей с первичным ключом и таблицей без уникальных столбцов - PullRequest
0 голосов
/ 21 октября 2018

У меня проблемы с выяснением этого.

У меня есть две таблицы, одна довольно большая с уникальными значениями в столбце - 'column1'.Я хочу связать это с меньшей таблицей, содержащей всего два столбца, один столбец связан с 'column1', а другой столбец - 'column2' с нулевыми и дублированными значениями.

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

Любая помощь с этой проблемой очень ценится.

1 Ответ

0 голосов
/ 21 октября 2018

У вас есть два возможных решения:

  • . Вы можете создать первичный ключ, используя column1 и column2.Вы можете дублировать одно из двух значений, если пара не повторяется внутри таблицы;
  • вы можете добавить третий столбец во второй таблице (легендарное поле id), автоматическиувеличить числовое значение и установить его как PK.Таким образом, вы можете дублировать столько, сколько хотите, поскольку id всегда будет отличаться.

Недостатки:

  • первый случай более «теоретически корректен»Это то, что учебники предлагают вам сделать, но составленный PK может быть очень сложным, в зависимости от типа двух столбцов (сравнение строк отличается от сравнения целых чисел)
  • второй случай легче вычислить (только одно значение и числовое), но допускает дублирование пар, что может быть не тем, что вы хотите.

На ваш выбор.

РЕДАКТИРОВАТЬ

Значения null могут вызвать некоторые проблемы, поэтому я бы, вероятно, выбрал числовой столбец с автоинкрементным значением id.Я оставлю ответ с обоими вариантами для дальнейшего использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...