Dificuldade com PK composta ou dupla

1. Dificuldade com PK composta ou dupla

Marco Brainiac
mbrainiac

(usa Debian)

Enviado em 16/12/2016 - 11:08h

http://arquivo.devmedia.com.br/artigos/Joel_Rodrigues/mer/image004.png

Estou tentando replicar o DER do link acima em SQL no DBeaver e estou tendo dificuldades, parece requerer 2 PKs ou fazer uma composta.

O erro, ou minha dificuldade está na tabela aluguel a qual teria de criar pelo diagrama um pk composta ou algo assim.

Estou enrolado, poderiam dar uma força?


DROP DATABASE IMOB1;

CREATE DATABASE IMOB1;

USE IMOB1;

############ TABELA INQUILINO #####################
CREATE TABLE TBL_INQUILINO(
INQ_ID INT PRIMARY KEY AUTO_INCREMENT,
INQ_NOME VARCHAR(100) NOT NULL,
INQ_DTCAD DATETIME DEFAULT CURRENT_TIMESTAMP, # CAMPO DE AUDITORIA
INQ_DTALT DATE #CAMPO DE AUDITORIA
);

############# TABELA CORRETOR #######################
CREATE TABLE TBL_CORRETOR(
COR_ID INT PRIMARY KEY AUTO_INCREMENT,
COR_NOME VARCHAR(100) NOT NULL,
COR_DTCAD DATETIME DEFAULT CURRENT_TIMESTAMP, # CAMPO DE AUDITORIA
COR_DTALT DATE #CAMPO DE AUDITORIA
);

############## TABELA PROPRIETARIO ##################
CREATE TABLE TBL_PROPRIETARIO(
PRO_ID INT PRIMARY KEY AUTO_INCREMENT,
PRO_NOME VARCHAR(100) NOT NULL,
COR_ID INT, # CHAVE ESTRANGEIRA DA TBL_CORRETOR
PRO_DTCAD DATETIME DEFAULT CURRENT_TIMESTAMP, # CAMPO DE AUDITORIA
PRO_DTALT DATE #CAMPO DE AUDITORIA
);

ALTER TABLE TBL_PROPRIETARIO
ADD CONSTRAINT (FK_COR_ID)
FOREIGN KEY (COR_ID)
REFERENCES TBL_CORRETOR (COR_ID);

################ TABELA IMOVEL #########################
CREATE TABLE TBL_IMOVEL(
IMO_ID INT PRIMARY KEY AUTO_INCREMENT,
IMO_DESCRICAO VARCHAR(200) NOT NULL,
IMO_VALOR Decimal (2,2) NOT NULL,
IMO_ALUGADO VARCHAR(2) NOT NULL, # ALUGADO 'S' SIM, 'N' NÃO
PRO_ID INT, # CHAVE ESTRANGEIRA DA TBL_IMOVEL
INQ_ID INT, # CHAVE ESTRANGEIRA DA TBL_INQUILINO
ALU_VALOR DOUBLE, # CHAVE ESTRANGEIRA DA TBL ALUGUEL
IMO_DTCAD DATETIME DEFAULT CURRENT_TIMESTAMP, # CAMPO DE AUDITORIA
IMO_DTALT DATE #CAMPO DE AUDITORIA
);

ALTER TABLE TBL_IMOVEL
ADD CONSTRAINT FK_PRO_ID
FOREIGN KEY (PRO_ID)
REFERENCES TBL_PROPRIETARIO (PRO_ID);

ALTER TABLE TBL_IMOVEL
ADD CONSTRAINT FK_INQ_ID
FOREIGN KEY (INQ_ID)
REFERENCES TBL_INQUILINO (INQ_ID);

ALTER TABLE TBL_IMOVEL
ADD CONSTRAINT FK_ALU_VALOR
FOREIGN KEY (ALU_VALOR)
REFERENCES TBL_ALUGUEL (ALU_VALOR);

################ TABELA ALUGUEL###########################
CREATE TABLE TBL_ALUGUEL(
ALU_ID INT AUTO_INCREMENT,
ALU_DATAALUGEL DATE,
ALU_DATAVENC DATE,
ALU_VALOR DOUBLE NOT NULL,
INQ_ID INT, # CHAVE ESTRANGEIRA DA TBL_INQUILINO
IMO_ID INT, # CHAVE ESTRANGEIRA DA TBL_IMOVEL
COR_ID INT, # CHAVE ESTRANGEIRA DA TBL_CORRETOR
ALU_DTCAD DATETIME DEFAULT CURRENT_TIMESTAMP, # CAMPO DE AUDITORIA
ALU_DTALT DATE, #CAMPO DE AUDITORIA
PRIMARY KEY (ALU_VALOR, ALU_ID)
);

ALTER TABLE TBL_ALUGUEL
ADD CONSTRAINT FK_INQ_ID
FOREIGN KEY (INQ_ID)
REFERENCES TBL_INQUILINO (INQ_ID);

ALTER TABLE TBL_ALUGUEL
ADD CONSTRAINT FK_IMO_ID
FOREIGN KEY (IMO_ID)
REFERENCES TBL_IMOVEL (IMO_ID);

ALTER TABLE TBL_ALUGUEL
ADD CONSTRAINT FK_COR_ID
FOREIGN KEY (COR_ID)
REFERENCES TBL_CORRETOR (COR_ID);




  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts