Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] erro nas criações de tabelas

Após as finalização da escrita das tabelas (endereço, proprietario e etc), fui tentar 'rodar' elas para poder dá inicio nas importações dos dados. No começo tinha dado erro na criação do endereço, depois clientes, mas consegui arrumar rodando eles um por um, a partir dai consegui importar normalmente mas assim que chegou na hospedagem, tentei fazer da mesma forma porém não consegui, entendo que hospedagem seria tipo 'filho' e endereço e proprietario 'pais', porém recebo o seguinte erro:

Código e Erros abaixo

DÚVIDA: Pq ele diz que enedereço já existe? Quando tentei rodar sem ele recebo outro erro:

Erro na hospedagem

DÚVIDA: E pq parece está errado algo na criação da tabela 'ALUGUEIS'? obs: já realizado o erro na palavra 'hospedagens' para 'hospedagem' e mesmo assim ele continua lá

Abaixo deixo os códigos escritos para a criação das tabelas, para que possam ser analisados:
USE insight_places;
CREATE TABLE enderecos (
endereco_id VARCHAR (255) PRIMARY KEY,
rua VARCHAR (255),
numero INT,
bairro VARCHAR (255),
cidade VARCHAR (255),
estado VARCHAR (255),
cep VARCHAR (10)
);
CREATE TABLE clientes (
cliente_id VARCHAR (255) PRIMARY KEY,
nome VARCHAR (255),
cpf VARCHAR (14),
contato VARCHAR (255)
);
CREATE TABLE proprietarios (
proprietario_id VARCHAR (255) PRIMARY KEY,
nome VARCHAR (255),
cpf_cpnj VARCHAR (20),
contato VARCHAR (255)
);
CREATE TABLE hospedagens (
hospedagem_id VARCHAR (255) PRIMARY KEY,
tipo VARCHAR (50),
endereco_id VARCHAR (255),
proprietario_id VARCHAR (255),
    ativo bool,
    FOREIGN KEY (endereco_id) REFERENCES enderecos(endereco_id),
    FOREIGN KEY (proprietario_id) REFERENCES proprietarios(proprietarios_id)
    );
    CREATE TABLE enderecos (
CREATE TABLE alugueis (
aluguel_id VARCHAR (255) PRIMARY KEY,
cliente_id VARCHAR (255),
hospedagem_id VARCHAR (255),
data_inicio DATE,
data_fim DATE,
preco_total DECIMAL (10, 2),
FOREIGN KEY (cliente_id) REFERENCES clientes(cliente_id),
FOREIGN KEY (hospedagem_id) REFERENCES hospedagem(hospedagem_id)
);
CREATE TABLE avaliacoes (
avaliacoes_id VARCHAR (255) PRIMARY KEY,
cliente_id VARCHAR (255),
hospedagem_id VARCHAR (255),
nota INT,
comentario TEXT,
FOREIGN KEY (cliente_id) REFERENCES clientes(cliente_id),
FOREIGN KEY (hospedagem_id) REFERENCES hospedagem(hospedagem_id)
);
2 respostas
solução!

Olá Isabeli, creio que o problema está em alguns erros de digitação ou confusão com os nomes de tabelas e colunas, os erros que identifiquei foram:

ome de coluna errado no FOREIGN KEY de hospedagens:
FOREIGN KEY (proprietario_id) REFERENCES proprietarios(proprietarios_id)

sua tabela proprietarios tem a coluna proprietario_id, não proprietarios_id.
Correto seria:

FOREIGN KEY (proprietario_id) REFERENCES proprietarios(proprietario_id) <------ proprietario_id não tem s

vc duplicou a criação da tabela enderecos
no meio do script aparece: CREATE TABLE enderecos (

isso acontece nesse trecho aqui:

proprietario_id VARCHAR (255),
    ativo bool,
    FOREIGN KEY (endereco_id) REFERENCES enderecos(endereco_id),
    FOREIGN KEY (proprietario_id) REFERENCES proprietarios(proprietarios_id)
    );
    CREATE TABLE enderecos (
    

sendo que enderecos já foi declarado.

de novo, sem fechar nem nada. Isso quebra o script. O trecho está logo antes de CREATE TABLE alugueis. Precisa apagar essa linha duplicada.

vc usou hospedagem em vez de hospedagens: FOREIGN KEY (hospedagem_id) REFERENCES hospedagem(hospedagem_id)
mas a tabela criada foi declarada dessa forma: CREATE TABLE hospedagens ( ... )
logo, a declaracao correta de chave estrangeira seria: FOREIGN KEY (hospedagem_id) REFERENCES hospedagens(hospedagem_id)

e há um erro de digitacao na colua cpf_cpnj, acho que voce quis dizer cpf_cnpj

Boa noite

Bom dia, tudo bem?

Muito obrigada!! Quem diria que minha pressa em digitar os códigos não iria me atrapalhar uma hora kk :/