O PostgreSQL, assim como cada banco, tem suas particularidades. O conceito de criação de tabelas é basicamente o mesmo de banco pra banco, mas às vezes a sintaxe muda. Nesse artigo vou mostrar um pequeno exemplo prático de como criar duas tabelas, onde uma referencia a outra por meio de uma chave estrangeira (foreign key). Se você está procurando uma documentação mais completa, pode encontrar aqui e aqui. E vamos ao exemplo:

A primeira tabela a ser criada é uma tabela de estados. Ela possui uma chave primária (ds_sigla_estado):

CREATE TABLE tb_estado (
 ds_sigla_estado char(2) NOT NULL,
 ds_nome_estado character varying(100) NOT NULL,
 CONSTRAINT tb_estado_pkey PRIMARY KEY (ds_sigla_estado)
)

A segunda tabela é tb_município, que possui uma chave primária (id_municipio) e faz referência (chave estrangeira) ao campo ds_sigla_estado em tb_estado.

CREATE TABLE tb_municipio (
 id_municipio serial NOT NULL,
 ds_municipio character varying(100) NOT NULL,
 ds_sigla_estado char(2) NOT NULL references tb_estado(ds_sigla_estado),
 CONSTRAINT tb_municipio_pkey PRIMARY KEY (id_municipio)
)

Entendeu? Se não, utilize os comentários e tire suas dúvidas ou então leia mais sobre o assunto aqui e aqui.