Я создал базу данных для хранения точек данных в подходе ACID.Одна таблица содержит сами точки данных и имеет внешний ключ к источнику данных.Существует несколько источников для каждого географического местоположения, поэтому у меня есть еще одна таблица для этих мест.Из источников данных у меня есть внешний ключ в этих местах, и все хорошо.
Теперь мой начальник попросил меня создать новый столбец в данных датчика, чтобы также связать его с местоположением для упрощения отладки и повышения производительности.Но я все еще хочу, чтобы база данных проверила, что будет невозможно вставить точку данных для определенного источника данных и местоположения, где источник и местоположение не совпадают.
Было бы еще лучше, если база данныхбудет автоматически генерировать идентификатор местоположения на основе предоставленного sourceid.
Данные :
ID | SrcID | LocID | MoreColumns
---+-------+-------+------------
1 | 1 | 1 | X - OK
2 | 1 | 2 | X - Bad, DataSource is not at location 2
3 | 4 | 4 | X - Bad, Location 4 doesn't exist, but is caught by FK-Constraints
Src :
ID | LocID | MoreColumns
---+-------+------------
1 | 1 | X
2 | 1 | X
3 | 2 | X
Loc :
ID | MoreColumns
---+------------
1 | X
2 | X
Как мне достичь согласованности данных здесь?
С FK проверяется, существуют ли Loc и Src, но как я могу убедиться, что местоположение, котороеданные указывают на то же местоположение, на которое указывает их источник?