Возможно ли в MySQL создать уникальный индекс по двум столбцам из другой таблицы? У меня есть две таблицы - адрес (адрес ID - pk, customerID, код) и клиент (customerID - pk, companyID). PK- первичный ключ. Требование представляет собой уникальную пару code-companyID - уникальный адресный код для каждой компании. Любое предложение? Могу ли я реализовать это требование на уровне БД или только в стороне от конца?
Нет, индексы не могут охватывать несколько таблиц. Однако, похоже, вы не понимаете, как отношения выполняются в sql, и, следовательно, вопрос.
Если клиент может иметь только один адрес, то address id
должен быть полем в таблице customer
с внешним ключом, указывающим на таблицу address
. В этом случае вам не нужен уникальный столбец с несколькими столбцами.
Если у клиента может быть несколько адресов (и, очевидно, у нескольких клиентов может быть один и тот же адрес), то у вас есть отношение "многие ко многим". Это можно решить, создав третью таблицу (позвоните на нее CustomersAddresses
), которая будет иметь customer id
address id
как поля (как минимум). Вы определяете уникальный столбец с несколькими столбцами по этим двум полям в этой таблице CustomersAddresses
, гарантируя, что пары адрес-клиент уникальны.
Поля customer id
address id
в таблице CustomersAddresses
будут внешними ключами, указывающими на соответствующие столы.
code
companyId
, а также добавить уникальный индекс дляcode
.