Ajuda com banco de dados

Bom dia gente, fiz os ER’s de dois exercícios, um de uma administradora de imóveis e outro de uma clinica, e passei para o PostgreSQL, mas não estou segura quanto a sintaxe dos códigos e também estou com dúvidas em tabelas auxiliares e autorelacionamentos, gostaria que vocês dessem uma olhada pra me ajudar =)
Neste da administradora de imóveis há uma tabela auxiliar entre pessoa e unidade, e não sei como representar isso

[code]CREATE TABLE ADMINISTRADORA (
CODIGO_ADM INT NOT NULL,
CNPJ_ADM VARCHAR(15) NULL,
ENDERECO_ADM VARCHAR(60) NULL,
TELEFONE_ADM INT NULL,
PRIMARY KEY (CODIGO_ADM)
);

CREATE TABLE CONDOMINIO (
CODIGO_CDM INT NOT NULL,
ENDERECO_CDM VARCHAR(60) NULL,
NUMERO_CDM INT NULL,
DESC_CDM VARCHAR(50) NULL,
PRIMARY KEY (CODIGO_CDM),
FOREIGN KEY(CODIGO_ADM) REFERENCES
ADMINISTRADORA(COD_ADMINISTRADORA)
);

CREATE TABLE UNIDADE (
CODIGO_UND INT NOT NULL,
NUMERO_UND INT NULL,
DESC_UND VARCHAR(50),
PRIMARY KEY (CODIGO_UND),
FOREIGN KEY (CODIGO_CDM) REFERENCES
CONDOMINIO (COD_CONDOMINIO)
);

CREATE TABLE PESSOA (
CODIGO_PSOA INT NOT NULL,
NOME_PSOA VARCHAR(60) NOT NULL,
CPF_PSOA VARCHAR(25) NULL,
END_PSOA VARCHAR(60) NULL,
TELEFONE_PSOA INT NULL,
PRIMARY KEY (CODIGO_PSOA),
FOREIGN KEY (CODIGO_UND) REFERENCES
UNIDADE (CODIGO_UNIDADE)
);[/code]

e aqui a clinica

[code]CREATE TABLE CLINICA (
CODIGO_CLN INT NOT NULL,
CNPJ_CLN VARCHAR(15) NULL,
ENDERECO_CLN VARCHAR(60) NULL,
TELEFONE_CLN INT NULL,
PRIMARY KEY (CODIGO_CLN)
);

CREATE TABLE PACIENTE (
CODIGO_PCT INT NOT NULL,
NOME_PCT VARCHAR(60) NOT NULL,
CPF_PCT VARCHAR(25) NULL,
RG_PCT VARCHAR(25) NULL,
END_PCT VARCHAR(60) NULL,
TELEFONE_PCT INT NULL,
DATA_NASC_PCT DATE NULL,
PRIMARY KEY (CODIGO_PCT),
FOREIGN KEY (CODIGO_CLN) REFERENCES
CLINICA (CODIGO_CLINICA)
);

CREATE TABLE QUARTO (
CODIGO_QTO INT NOT NULL,
NUMERO_QTO INT NOT NULL,
PRIMARY KEY (CODIGO_QTO),
FOREIGN KEY (CODIGO_PCT) REFERENCES
PACIENTE (CODIGO_PACIENTE)
);

CREATE TABLE MEDICO (
CODIGO_MDC INT NOT NULL,
NOME_MDC VARCHAR(60) NOT NULL,
CPF_MDC VARCHAR(25) NULL,
CRM_MDC VARCHAR(25) NULL,
TELEFONE_MDC INT NULL,
SALARIO_MDC INT NULL,
PRIMARY KEY (CODIGO_MDC),
FOREIGN KEY (CODIGO_CLN) REFERENCES
CLINICA (CODIGO_CLINICA)
);

CREATE TABLE ATIVIDADE (
CODIGO_ATV INT NOT NULL,
DESC_ATV VARCHAR (60) NOT NULL,
PRIMARY KEY (CODIGO_ATV)
);

CREATE TABLE ESPECIALISTA (
CODIGO_ESPC INT NOT NULL,
DESC_ESPC VARCHAR (60) NOT NULL,
PRIMARY KEY (CODIGO_ESPC)
);
[/code]
Obrigadaa!

Se uma Pessoa vai poder ter varias Unidades, então vc vai ter uma chave estrangeira de Pessoa em Unidades.

Se uma Unidade vai possuir varias Pessoas, então vc vai ter uma chave estrangeira de Unidades em Pessoa.

Lembre que a chave estrangeira vai sempre na tabela que contém o ‘muitos’

Vc só cria um tabela de relacionamento entre as 2 tabelas, se for N-N e não 1-N.

Neste caso vc teria as 2 opções que citei simultaneamente.

Então vc não iria criar chave estrangeira em nenhuma das 2 tabelas, criaria a tabela Unidades_Pessoas e teria nela a chave da tabela mais uma chave estrangeira de Unidades e uma chave estrangeira de Pessoas.

Obrigada romarcio, de forma simples tu explicou tudo =)

fiz assim então:

CREATE TABLE PESSOA_UNIDADE CODIGO_UND_PSOA INT NOT NULL, FOREIGN KEY (CODIGO_PSOA) REFERENCES CONDOMINIO (COD_PESSOA) FOREIGN KEY (CODIGO_UND) REFERENCES UNIDADE (CODIGO_UNIDADE)

ai estas duas chaves estrangeiras ficam só aqui e caem fora das outras (pessoa e unidade) né?

Isso mesmo Mariana.