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)
)