Dúvidas sobre relação de tabelas

Bom dia galera, a minha duvida é… quando temos relação entre tabelas, na chave estrangeira tem que trazer os dados da coluna da tabela referenciada, né ?
Tipo, em uma tabela “a” pega o dado da chave primaria da tabela “b”, ou não seria isso ?

Sim, o vínculo entre os registros num relacionamento de FK é feito usando o valor da coluna:

TB_PESSOA

+----+------+----------+
| id | nome | telefone |
+----+------+----------+
|  1 | 'A'  | 1        | <- Aqui vai o ID do telefone que está relacionado com a pessoa de ID 1
+----+------+----------+

TB_TELEFONE

+----+--------+
| id | numero |
+----+--------+
|  1 | 12345  |
+----+--------+

Então tem algo errado com a minha tabela por que os dados não passam automaticamente, eu teria que fazer o processo manualmente pelo jdbc…
Na coluna id tinha que vir o id do usuário e não vem, e esse id na tabela do usuário esta como chave primária…
Essa é a tabela de endereço…

CREATE TABLE public.endereco
(
rua character varying,
estado character varying NOT NULL,
cidade character varying,
pais character varying,
cep character varying NOT NULL,
numerocasa integer NOT NULL,
id_endereco bigint NOT NULL DEFAULT nextval(‘endesequence’::regclass),
id bigint,
CONSTRAINT “Endereco_pkey” PRIMARY KEY (id_endereco),
CONSTRAINT enderecocomunicacao FOREIGN KEY (id)
REFERENCES public.usuario (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)

Na tabela de usuário esta assim …como podemos organizar e fazer funcionar ? Não esta tendo erro no console e o sistema funciona, mas eu teria que passar o id pelo jdbc em vez de ser automático feito pela relação de tabelas…
CONSTRAINT usuario_pkey PRIMARY KEY (id),
CONSTRAINT comunicacaoendereco FOREIGN KEY (id_endereco)
REFERENCES public.endereco (id_endereco) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,

Vc está inserindo os dados através de uma aplicação? Se sim, como vc está fazendo?

Sim, eu estou desenvolvendo um projeto e faço os input no banco de dados através do jdbc (daos).

Logo após o insert da tabela relacionada, vc pega o ID gerado para poder utilizar na tabela onde está a FK:

Se for mysql (ou algum outro DB que possua estratégia de auto incremento), por exemplo:

String sql = "YOUR INSERT STATEMENT HERE";
 
PreparedStatement ps = conn.prepareStatement(sql,
        Statement.RETURN_GENERATED_KEYS);
 
ps.execute();
 
// aqui vc pega o ID do registro que foi inserido
ResultSet rs = ps.getGeneratedKeys();
int generatedKey = 0;
if (rs.next()) {
    generatedKey = rs.getInt(1);
}
 
System.out.println("Inserted record's ID: " + generatedKey);

FONTE: https://www.codejava.net/java-se/jdbc/get-id-of-inserted-record-in-database

Ah então só colocando diretamente pelo jdbc,blza então.

Obrigado

Se fosse direto pelo banco, vc teria que seguir o mesmo procedimento. Grava primeiro a tabela relacionada e depois a tabela onde está a FK.