Вот как выглядят мои таблицы:
tableMembers | memberID as primary key
tableAddress | addressID as primary key references memberID
tableSubscription | subsID as primary key references memberID
Эта база данных предназначена для сайта подписки.По сути, если строка вставляется в tableMembers, соответствующая строка вставляется в каждую из других таблиц.
Я установил внешние ключи для двух последних таблиц, чтобы иметь к ним доступ по отношению к tableMembers.В основном, если я получаю доступ к строке из tableAddress, я делаю:
SELECT * FROM tableAddress WHERE addressID = (SELECT memberID FROM tableMembers WHERE uname = 'John');
Проблема с моей настройкой состоит в том, что, когда синхронизация идентификаторов нарушается, внешние ключи больше не будут работать.Скажем, когда я вставляю строку в tableMembers, а затем tableSubscription перестает работать на несколько секунд по каким-то странным причинам?Или в случае регистрации пользователя ( последний идентификатор участника становится = 2 ), скажем, он / она не подписывается, что оставляет subsID (, который остается = 1 ) не синхронизированным с memberID.И позже новый пользователь регистрируется ( последний идентификатор участника становится = 3 ) и подписывается ( subsID становится = 2 ).Это делает мой запрос выше устаревшим.Как мне предотвратить такой сценарий?Или, пожалуйста, просветите меня, если вы думаете, что я не понимаю концепцию внешних ключей.