Как определить автоматически сгенерированный первичный ключ, используемый в качестве внешнего ключа для другой таблицы

Это вопрос из двух частей. Прилагается схема для таблицы базы данных PostgreSQL. Есть четыре стола. ТаблицаMain имеет отношение один-ко-многим с таблицейSubmain, ТаблицаSubmain имеет отношения один-много с таблицейSubsub, Первичные ключи для всех четырех таблиц являются последовательными NOT NULL (поэтому они автоматически увеличиваются). Каждая таблица имеет несколько атрибутов, которые здесь не показаны.

Вопрос 1. Несколько пользователей будут иметь доступ к этому приложению и базе данных. Когда пользователь обращается к приложению, которое использует эту базу данных, часть его информации будет храниться в таблицеMain, Последующая информация (предоставленная пользователем и другие результаты, основанные на вводе пользователя) будет храниться в таблицахSubmain а такжеSubsub, Мое мышление заключается в следующем:

Пользователь отправляет информацию через форму.A MainId Первичный ключ будет сгенерирован автоматически, а часть пользовательской информации будет помещена в таблицу.Main.Запись будет вставлена ​​в таблицуSubmain на основе ввода пользователя (элементы вMain). Как я могу определить, какой первичный ключ пользователяMainId так что я могу вставить его вSubmain.MainId [FK] для новой записи?Запись также будет вставлена ​​вSubsub и эта информация будет основана на информации в таблицеSubmain, Точно так же, как я могу определитьSubmain.Submain [PK] так что я могу использовать его в качестве внешнего ключа вSubsub.Submain [FK]?

Вопрос 2. Между многими существует связьMain а такжеOther (Я опустил ассоциативную таблицу). Однако для того, чтобы вставить запись в таблицуOtherтребуется информация отSubsub, Будет взаимно однозначное сопоставлениеSubsub а такжеOther, Нужно ли мне извлекать это отношение один к одному ИЛИ можетOther быть заселен на основе комплексаSELECT/JOIN выписка из таблицыMain вниз к столуSubsub? Это может быть плохой вопрос, но я думаю, что мне нужно нарисовать отношение один к одному и вставить внешний ключSubsubId [FK] вOther вместо того, чтобы пытаться сложный оператор SQL.

Ответы на вопрос(1)

Ваш ответ на вопрос