Я работаю над db, который получает данные от пользователей в отношении общественного транспорта. Пользователь может отправить много информации, но то, что имеет значение для обеспечения целостности внутри БД:Обеспечить целостность в Postgresql, если данные объединяются
- вид транспортного средства (метро, автобус)
- номер транспортного средства
- (автобус/метро) остановки где пользователь отправляет данные
До сих пор я обеспечиваю целостность на сервере, но производительность не очень хорошая, и мне бы хотелось, чтобы это произошло в самой db. Я хочу реализовать механизм, который проверяет, когда пользователь отправляет какую-либо информацию, если предоставленные данные существуют в db и является правильным: например, я хочу проверить, предоставила ли она существующее транспортное средство с правильным типом, и правильная остановка.
Дело в том, что автомобиль может быть двух типов (автобус или метро), и он может иметь номер. Для каждого автомобиля есть список остановок.
Так что я думал, что список транспортных средств должен быть столом один, Транспортные средства. Список остановок живет внутри другого стола, Остановки.
Каждое транспортное средство имеет массив целых чисел, относящихся к основным ключам стопов.
Я изо всех сил пытался найти для этого рабочее решение. Некоторые говорят, что для реализации ограничений внешнего ключа, но я действительно не знаю, как это сделать. Некоторые другие говорят, чтобы реализовать триггеры. Как мне продолжить? Благодаря!
Таким образом, я мог бы использовать ограничения транспортного средства в таблице, где храню данные, отправленные пользователем! Можно ли добавить внешний ключ внутри упоров, поэтому мы ссылаемся на транспортные средства внутри таблицы транспортных средств, а также на возможность добавления «ON UPDATE» и «ON DELETE»? – Chris
Нет, 'остановки' не должны ссылаться на« транспортные средства », то есть на цели« vehicle_stops ». –