Читал учебное пособие Как работать с отношениями «многие ко многим» с PHP и MySQL .
В этом вопросе я ссылаюсь на раздел «Схема базы данных», в котором изложены следующие правила:
Эта новая таблица должна быть построена для
разрешить следующее:
* It must have a column which links back to table 'A'.
* It must have a column which links back to table 'B'.
* It must allow no more than one row to exist for any combination of rows from table 'A' and table 'B'.
* It must have a primary key.
Теперь он кристально чистый.
Единственная проблема, с которой я сталкиваюсь, связана с третьим правилом («Оно должно позволять существовать не более одной строки для любой комбинации »).
Я хочу, чтобы это также применялось, но, похоже, это не сработает.
В моем тестовом экземпляре mysql (5.XX) я могу добавить две строки, которые отражают одинаковые отношения!
Например, если я сделаю это отношение (добавив строку):
от A до B
Это также позволяет мне сделать это отношение:
B до A
Итак, вопрос на самом деле состоит из двух вопросов:
1) Как мне сформулировать 3-е правило, которое не позволяет выполнять вышеуказанное ? Имейте только одно уникальное отношение независимо от комбинации.
2) Когда я захочу найти все отношения 'A', как будет выглядеть SQL-запрос ?
Примечание # 1: По сути, моя последняя цель - создать систему «дружбы», и, насколько я понимаю, решение - это таблица «многие ко многим». Предложите иначе, если это возможно.
Примечание # 2: Таблица пользователей находится в базе данных, отличной от отношений (назовите это дружескими отношениями) Таблица . Поэтому я не могу использовать внешние ключи.