Показать сообщение отдельно
Старый 29.09.2007, 18:59     # 1
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
MySQL: уникальный индекс в 1:n

Есть 2 таблицы, которые надо связать. В А должна быть ссылка (ид) от Б чтобы можно было перейти. А - одна на много Б.
Связываю через 3ю таблицу АБ, куда идут уникальные id из Б (B_id) и где есть индекс который записывается в А (AB_id).
AB_пример:
AB_id: B_id
1 2
1 3
1 2
2 5
2 2
2 3

Таким образом идет много значений B_id на одно значение AB_id, где последний повторяется много раз. Ни один из них не являетс уникальным, AB_id так как повторяется много раз, B_id так как их может быть много одинаковых.

Выборка будет идти тогда так:
Прочитал А, взял AB_id.
По AB_id нашел в таблице AB все ключи для B.
Прочитал все B.


TABLE A
A_id
AB_id
...

TABLE AB
AB_id
B_id

TABLE B
B_id
...
...


Вопрос: как сгенерировать ключ AB_id. Автогенерация не поможет, так как будет его увеличивать. Было бы логично A_id, но

ключ A_id является ключем к "внешнему" миру, это 13-23 значное число из uniqid (php).
Получается многова-то по длине. Значит остается только создать для этой цели отдельный элемент в А и автоматичеси увеличивать его специально чтобы искать AB?
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума