У меня есть четыре таблицы в базе данных PostgreSQL:SQL Constraint на таблицу соединения
- Company
- пользователя (с ключом company_id внешней колонки)
- Местонахождение (с ключом company_id внешней колонны)
- UserLocations (объединение таблицы, с внешним ключом user_id и LOCATION_ID)
По существу:
- компания имеет много пользователей и мест
- пользователь принадлежит к компании и имеет много мест,
- местоположение принадлежит компании и имеет много пользователей
Я хочу знать, есть ли способ, чтобы база данных ограничивала записи в таблице ассоциации UserLocations таким образом, чтобы ссылочный пользователь и местоположение должны иметь одинаковое значение company_id. Я не хочу, чтобы пользователь из компании A имел место от компании B.
Я могу проверить это на своем уровне приложения (рельсы), но был бы заинтересован в том, чтобы сделать это жестким ограничением уровня базы данных, если эта опция существует.
В реальном мире местоположение может иметь несколько компаний, и пользователь может иметь несколько компаний. –