Não encontro o erro no script das 2 tabelas EspecialidadeAlimento e fichaSocio. Alguém pode me ajudar? Agradeço

SQL

26/09/2017

/*
Created 26/10/2016
Modified 26/10/2016
Project
Model
Company
Author
Version
Database mySQL 5
*/
CREATE DATABASE CMD5;
USE CMD5;

Create table paciente (
idPaciente Serial NOT NULL,
nome Varchar(100) NOT NULL,
sexo Char(1) NOT NULL,
dtNascimento Date NOT NULL,
endereco Varchar(150),
complemento Varchar(150),
bairro Varchar(150),
cidade Varchar(150),
uf Char(2),
cep Varchar(10),
fone Varchar(15),
whatsapp Char(1) NOT NULL DEFAULT 'S',
documentoIdentif Varchar(20) NOT NULL,
email Varchar(250),
socio Char(1) NOT NULL,
diaMesPag Varchar(5),
Primary Key (idPaciente));

Create table especialidade (
idEspecialidade Serial NOT NULL,
nome Varchar(100) NOT NULL,
valor Decimal(10,2) NOT NULL,
tipoPagamento Char(1) NOT NULL,
percentualEmpresa Decimal(10,2) NOT NULL,
periodicidade Char(1) NOT NULL,
Primary Key (idEspecialidade));

Create table empresa (
idEmpresa Serial NOT NULL,
nomeEmpresa Varchar(150),
fone Varchar(15),
endereco Varchar(150),
complemento Varchar(150),
bairro Varchar(150),
cidade Varchar(150),
uf Varchar(2) NOT NULL,
cep Char(10),
Primary Key (idEmpresa));

Create table fichaPaciente (
idFichaPaciente Serial NOT NULL,
idPaciente Bigint UNSIGNED NOT NULL,
idEspecialidade Bigint UNSIGNED NOT NULL,
Primary Key (idFichaPaciente,idPaciente,idEspecialidade),
CONSTRAINT fk_Paciente_idPaciente
FOREIGN KEY (idPaciente)
REFERENCES paciente (idPaciente)
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT fk_especialidade_idEspecialidade
FOREIGN KEY (idEspecialidade)
REFERENCES especialidade (idEspecialidade)
ON DELETE NO ACTION
ON UPDATE CASCADE);

Create table funcionario (
idFuncionario Char(20) NOT NULL,
nome Varchar(100) NOT NULL,
documentoIdentif Varchar(20) NOT NULL,
dtNascimento Date NOT NULL,
senhaDesconto Varchar(100),
percMaximoDesconto Decimal(10,2),
Primary Key (idFuncionario));

Create table usuario (
idUsuario Char(20) NOT NULL,
login Varchar(15) NOT NULL,
senha Varchar(100) NOT NULL,
nivelAcesso Char(1) NOT NULL,
idFuncionario Char(20) NOT NULL,
UNIQUE (login),
Primary Key (idUsuario,idFuncionario),
CONSTRAINT fk_funcionario_idFuncionario
FOREIGN KEY (idFuncionario)
REFERENCES funcionario (idFuncionario)
ON DELETE NO ACTION
ON UPDATE CASCADE);

Create table atendimento (
idAtendimento Serial NOT NULL,
idFichaPaciente Bigint UNSIGNED NOT NULL,
idPaciente Bigint UNSIGNED NOT NULL,
idEspecialidade Bigint UNSIGNED NOT NULL,
dataConsulta Date NOT NULL,
horaConsulta Varchar(5) NOT NULL,
pago Char(1) NOT NULL,
Primary Key (idAtendimento,idFichaPaciente,idPaciente,idEspecialidade),
CONSTRAINT fk_atendimento_idFichaPacidPacidEspec
FOREIGN KEY (idFichaPaciente,idPaciente,idEspecialidade)
REFERENCES fichaPaciente (idFichaPaciente,idPaciente,idEspecialidade)
ON DELETE NO ACTION
ON UPDATE CASCADE);

Create table alimento (
idAlimento Serial NOT NULL,
alimento Varchar(150),
Primary Key (idAlimento));

Create table EspecialidadeAlimento (
idEspecialidade Bigint UNSIGNED NOT NULL,
idAlimento Bigint UNSIGNED NOT NULL,
Primary Key (idEspecialidade, idAlimento),
CONSTRAINT fk_especialidade_idEspecialidade
FOREIGN KEY (idEspecialidade)
REFERENCES especialidade (idEspecialidade)
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT fk_alimento_idAlimento
FOREIGN KEY (idAlimento)
REFERENCES alimento (idAlimento)
ON DELETE NO ACTION
ON UPDATE CASCADE);

Create table fichaSocio (
idFichaSocio Serial NOT NULL,
idPaciente Bigint UNSIGNED NOT NULL,
dataPagamento Date,
valorPagamento Decimal(10,2) NOT NULL,
Primary Key (idFichaSocio),
CONSTRAINT fk_paciente_idPaciente
FOREIGN KEY (idPaciente)
REFERENCES paciente (idPaciente)
ON DELETE NO ACTION
ON UPDATE CASCADE);
Emir Neto

Emir Neto

Curtidas 0

Respostas

Leandro Chiodini

Leandro Chiodini

26/09/2017

Emir seria interessante se você colocasse o Erro que da, isso direcionaria melhor para o problema.
GOSTEI 0
Emir Neto

Emir Neto

26/09/2017

Não sei porque, mas reclamafa das chaves estrangeiras. Contornei o problema trocando por:

Create table IF NOT EXISTS EspecialidadeAlimento (
idEspecialidade Bigint UNSIGNED NOT NULL,
idAlimento Bigint UNSIGNED NOT NULL,
Primary Key (idEspecialidade, idAlimento),
FOREIGN KEY (idEspecialidade)
REFERENCES especialidade(idEspecialidade),
FOREIGN KEY (idAlimento)
REFERENCES alimento(idAlimento));

Create table IF NOT EXISTS fichaSocio (
idFichaSocio Serial NOT NULL,
idPaciente Bigint UNSIGNED NOT NULL,
dataPagamento Date,
valorPagamento Decimal(10,2) NOT NULL,
Primary Key (idFichaSocio),
FOREIGN KEY (idPaciente)
REFERENCES paciente(idPaciente));
GOSTEI 0
POSTAR