Уникальный ключ на столбцы из разных таблиц

0

Возможно ли в MySQL создать уникальный индекс по двум столбцам из другой таблицы? У меня есть две таблицы - адрес (адрес ID - pk, customerID, код) и клиент (customerID - pk, companyID). PK- первичный ключ. Требование представляет собой уникальную пару code-companyID - уникальный адресный код для каждой компании. Любое предложение? Могу ли я реализовать это требование на уровне БД или только в стороне от конца?

  • 0
    Вы можете создать внешний ключ, это то, что вы имеете в виду?
  • 0
    Вы ищете, чтобы создать отношения один на один. Вы должны создать внешний ключ для code companyId , а также добавить уникальный индекс для code .
Показать ещё 1 комментарий
Теги:

1 ответ

0

Нет, индексы не могут охватывать несколько таблиц. Однако, похоже, вы не понимаете, как отношения выполняются в sql, и, следовательно, вопрос.

Если клиент может иметь только один адрес, то address id должен быть полем в таблице customer с внешним ключом, указывающим на таблицу address. В этом случае вам не нужен уникальный столбец с несколькими столбцами.

Если у клиента может быть несколько адресов (и, очевидно, у нескольких клиентов может быть один и тот же адрес), то у вас есть отношение "многие ко многим". Это можно решить, создав третью таблицу (позвоните на нее CustomersAddresses), которая будет иметь customer id address id как поля (как минимум). Вы определяете уникальный столбец с несколькими столбцами по этим двум полям в этой таблице CustomersAddresses, гарантируя, что пары адрес-клиент уникальны.

Поля customer id address id в таблице CustomersAddresses будут внешними ключами, указывающими на соответствующие столы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню