3 - Modelo Físico

From Grupo2 Ahand

CREATE TABLE Motoristas (

ID_MOTORISTA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
NOME VARCHAR(45) NULL,
ENDEREÇO VARCHAR(255) NULL,
RG VARCHAR(20) NULL,
CPF VARCHAR(20) NULL,
CNH VARCHAR(20) NULL,
TELEFONE VARCHAR(20) NULL,
CELULAR VARCHAR(20) NULL,
PRIMARY KEY(ID_MOTORISTA, ID_PROPRIETARIO),
INDEX Motoristas_FKIndex1(ID_PROPRIETARIO)
);

CREATE TABLE Ocorrencias (

ID_OCORRENCIA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
DATA_HORA DATETIME NULL,
DESCRIÇÃO VARCHAR(255) NULL,
ID_VEICULO INTEGER UNSIGNED NULL,
ID_MOTORISTA INTEGER UNSIGNED NULL,
NOME_INFORMANTE VARCHAR(45) NULL,
FONE_INFORMANTE VARCHAR(20) NULL,
PRIMARY KEY(ID_OCORRENCIA)
);

CREATE TABLE Ocorrencias_Motoristas (

ID_OCORRENCIA INTEGER UNSIGNED NOT NULL,
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
ID_MOTORISTA INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(ID_OCORRENCIA, ID_PROPRIETARIO, ID_MOTORISTA),
INDEX Ocorrencias_Motoristas_FKIndex1(ID_MOTORISTA, ID_PROPRIETARIO),
INDEX Ocorrencias_Motoristas_FKIndex2(ID_OCORRENCIA)
);

CREATE TABLE Ocorrencias_Veiculos (

ID_VEICULO INTEGER UNSIGNED NOT NULL,
ID_OCORRENCIA INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(ID_VEICULO, ID_OCORRENCIA),
INDEX Ocorrencias_Veiculos_FKIndex1(ID_OCORRENCIA),
INDEX Ocorrencias_Veiculos_FKIndex2(ID_VEICULO)
);

CREATE TABLE Periodos (

ID_PERIODO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
NOME_PERIODO VARCHAR(45) NULL,
PRIMARY KEY(ID_PERIODO)
);

CREATE TABLE Proprietarios (

ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
NOME CHAR NULL,
ENDEREÇO CHAR NULL,
RG CHAR NULL,
CPF CHAR NULL,
TELEFONE CHAR NULL,
CELULAR CHAR NULL,
PRIMARY KEY(ID_PROPRIETARIO)
);

CREATE TABLE REFERENCIAS (

ID_REFERENCIA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
BAIRRO VARCHAR(255) NULL,
DESCRICAO VARCHAR(255) NULL,
ESCOLA BOOL NULL,
PRIMARY KEY(ID_REFERENCIA)
);

CREATE TABLE REL_EMPRESTA (

ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
ID_VEICULO INTEGER UNSIGNED NOT NULL,
DATA_RETIRADA DATE NULL,
DATA_ENTREGA DATE NULL,
PRIMARY KEY(ID_PROPRIETARIO, ID_VEICULO),
INDEX Proprietarios_has_Veiculos_Sindicato_FKIndex1(ID_PROPRIETARIO),
INDEX Proprietarios_has_Veiculos_Sindicato_FKIndex2(ID_VEICULO)
);

CREATE TABLE REL_REFERENCIAS (

ID_REFERENCIA INTEGER UNSIGNED NOT NULL,
ID_ROTA INTEGER UNSIGNED NOT NULL,
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(ID_REFERENCIA, ID_ROTA, ID_PROPRIETARIO),
INDEX Rotas_has_REFERENCIAS_FKIndex1(ID_ROTA, ID_PROPRIETARIO),
INDEX REL_REFERENCIAS_FKIndex2(ID_REFERENCIA)
);

CREATE TABLE Rotas (

ID_ROTA INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
ID_PERIODO INTEGER UNSIGNED NOT NULL,
PONTO_INICIO VARCHAR(45) NULL,
PONTO_FIM VARCHAR(45) NULL,
SITUAÇAO VARCHAR(255) NULL,
PRIMARY KEY(ID_ROTA, ID_PROPRIETARIO),
INDEX Rotas_FKIndex2(ID_PROPRIETARIO),
INDEX Rotas_FKIndex2(ID_PERIODO)
);

CREATE TABLE Usuarios (

ID_USUARIO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
ID_ROTA INTEGER UNSIGNED NOT NULL,
ID_PERIODO INTEGER UNSIGNED NOT NULL,
NOME CHAR NOT NULL,
ENDEREÇO VARCHAR(255) NULL,
RG VARCHAR(20) NULL,
CPF VARCHAR(20) NULL,
TELEFONE INTEGER UNSIGNED NULL,
CELULAR VARCHAR(20) NULL,
NOME_RESPONSAVEL VARCHAR(45) NULL,
PRIMARY KEY(ID_USUARIO, ID_PROPRIETARIO, ID_ROTA, ID_PERIODO),
INDEX Usuarios_FKIndex1(ID_PROPRIETARIO),
INDEX Usuarios_FKIndex2(ID_ROTA, ID_PROPRIETARIO),
INDEX Usuarios_FKIndex3(ID_PERIODO)
);

CREATE TABLE Veiculos (

ID_VEICULO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
MARCA VARCHAR(20) NULL,
ANO INTEGER UNSIGNED NULL,
MODELO VARCHAR(45) NULL,
FABRICANTE VARCHAR(45) NULL,
CHASSI VARCHAR(45) NULL,
PLACA VARCHAR(20) NULL,
COR VARCHAR(20) NULL,
CAPACIDADE INTEGER UNSIGNED NULL,
PRIMARY KEY(ID_VEICULO)
);


CREATE TABLE Veiculos_Proprietarios (
ID_PROPRIETARIO INTEGER UNSIGNED NOT NULL,
ID_VEICULO INTEGER UNSIGNED NOT NULL,
valor_mensalidade FLOAT NULL,
PRIMARY KEY(ID_PROPRIETARIO, ID_VEICULO),
INDEX Veiculos_Proprietarios_FKIndex1(ID_VEICULO),
INDEX Veiculos_Proprietarios_FKIndex2(ID_PROPRIETARIO)
);

CREATE TABLE Veiculos_Sindicato (

Veiculos_ID_VEICULO INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Veiculos_ID_VEICULO),
INDEX Veiculos_Sindicato_FKIndex1(Veiculos_ID_VEICULO)
);

Personal tools