Pessoal, estou fazendo faculdade e estou nas primeiras aulas de Banco de Dados, recebemos uma atividade para criar um modelo lógico de um banco de dados de uma Clínica Médica que continha um sistema de cadastro de pacientes e agendamentos de consultas e exames online. Queria que vocês que sabem muito mais que eu dessem uma olhada e verificassem possíveis erros que cometi em redundância, normalização, essas coisas. Recebi alguns comentários de que a tabela HistoricoMedico não precisaria estar em uma tabela separada e sim dentro da tabela Paciente e que a relação da Tabela Usuario/Paciente estava errada.
create table Paciente (
codPaciente int primary key,
nome varchar(100) not null,
dataNascimento date not null,
genero varchar(11) not null,
estadoCivil varchar(11),
endereco varchar(255),
telefone varchar(20),
email varchar(100),
rg varchar(11) not null unique,
cpf varchar(11) not null unique,
cidade varchar(25),
uf varchar(2),
cns varchar(25) not null
);
create table Clinica (
codClinica int primary key,
nome varchar(100) not null,
endereco varchar(255),
telefone varchar(20)
);
create table Medico (
codMedico int primary key,
crm int not null unique,
nome varchar(100) not null,
especialidade varchar(50) not null,
inicioTrabalho time not null,
fimTrabalho time not null,
telefone varchar(15),
codClinica int not null,
foreign key (codClinica) references Clinica(codClinica)
);
create table Usuario (
codUsuario int primary key,
nomeUsuario varchar(50) not null unique,
senha varchar(50) not null,
codPaciente int not null,
foreign key (codPaciente) references Paciente(codPaciente)
);
create table Consulta (
codConsulta int primary key,
codPaciente int not null,
codMedico int not null,
dataHora datetime not null,
motivo varchar(255),
presencial varchar(3),
foreign key (codPaciente) references Paciente(codPaciente),
foreign key (codMedico) references Medico(codMedico)
);
create table ResultadoConsulta (
codResultado int primary key,
codConsulta int not null,
resultado varchar(255),
prescricaoMedica varchar(255),
dataHora datetime not null,
foreign key (codConsulta) references Consulta(codConsulta)
);
create table HistoricoMedico (
codHistorico int primary key,
codPaciente int not null,
dataRegistro date not null,
descricao varchar(255),
foreign key (codPaciente) references Paciente(codPaciente)
);
create table Exame (
codExame int primary key,
nome varchar(100) not null,
descricao varchar(255)
);
create table AgendamentoExame (
codAgendamento int primary key,
codPaciente int not null,
codExame int not null,
dataHora datetime not null,
foreign key (codPaciente) references Paciente(codPaciente),
foreign key (codExame) references Exame(codExame)
);
create table ResultadoExame (
codResultado int primary key,
codAgendamento int not null,
resultado varchar(255),
dataHora datetime not null,
foreign key (codAgendamento) references AgendamentoExame(codAgendamento)
);