Reserva no banco de dados
14/02/2016
0
Tabelas do sistema:
CREATE TABLE IF NOT EXISTS `reservas` ( `id_reserva` int(10) NOT NULL AUTO_INCREMENT, `datainicial` date DEFAULT NULL, `datafinal` date DEFAULT NULL, `horainicial` time DEFAULT NULL, `horaaprox` time DEFAULT NULL, `rota` text, `cidades_id_cidade` int(10) NOT NULL, `setores_id_setor` int(10) NOT NULL, `usuarios_id_usuario` int(10) NOT NULL, `regioes_id_regiao` int(10) NOT NULL, `veiculos_id_veiculo` int(10) NOT NULL, `motoristas_id_motorista` int(10) NOT NULL, PRIMARY KEY (`id_reserva`), KEY `fk_reservas_cidades1_idx` (`cidades_id_cidade`), KEY `fk_reservas_setores1_idx` (`setores_id_setor`), KEY `fk_reservas_usuarios1_idx` (`usuarios_id_usuario`), KEY `fk_reservas_regioes1_idx` (`regioes_id_regiao`), KEY `fk_reservas_veiculos1_idx` (`veiculos_id_veiculo`), KEY `fk_reservas_motoristas1_idx` (`motoristas_id_motorista`) ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS `veiculos` ( `id_veiculo` int(10) NOT NULL AUTO_INCREMENT, `modelo` varchar(50) DEFAULT NULL, `placa` varchar(10) DEFAULT NULL, `motoristas_id_motorista` int(10) NOT NULL, `regioes_id_regiao` int(10) NOT NULL, `cidades_id_cidade` int(10) NOT NULL, `setores_id_setor` int(10) NOT NULL, PRIMARY KEY (`id_veiculo`), KEY `fk_veiculos_motoristas1_idx` (`motoristas_id_motorista`), KEY `fk_veiculos_regioes1_idx` (`regioes_id_regiao`), KEY `fk_veiculos_cidades1_idx` (`cidades_id_cidade`), KEY `fk_veiculos_setores1_idx` (`setores_id_setor`), ) ENGINE=InnoDB;
A estrutura do banco está correta?
Jose Fernando
Post mais votado
23/02/2016
Entendido. rsrs
Digamos que você precisa fazer alguma coisa (calculo, cruzamentos) e depois utiliza-la em outro cruzamento. Se já usou o SSIS da microsoft ja deve ter percebido, é como quebrar em partes a sua query, facilitando a manutenção.
Também tem a parte de performance....
Imagine que voce tenha uma TABELA_A e que voce precise fazer um join com a TABELA_B, e na mesma query, cruza-la com a TABELA_C.
Se os parametros da sua query for a mesma, não precisa realizar 2 consultas, faça uma e coloque na memória.
Claudio Lopes
Mais Posts
15/02/2016
Claudio Lopes
CREATE TEMPORARY TABLE VEICULOS_RESERVADOS SELECT ID_VEICULOS FROM VEICULOS LEFT JOIN RESERVAS ON VEICULOS.ID_VEICULOS = RESERVAS.ID_VEICULOS WHERE @DATA BETWEEN DATAINICIAL AND DATAFINAL AND @HORA BETWEEN HORAINICINAL AND HORAFINAL SELECT * FROM VEICULOS WHERE ID_VEICULOS IN (SELECT ID_VEICULOS FROM VEICULOS_RESERVADOS) DROP TABLE VEICULOS_RESERVADOS
Observei que você não utilizou campos no formato datetime, Eu utilizaria, pois reduziria a quantidade de colunas de sua tabela e centralizava as informações de periodo, alem de facilitar na manipulação da sua query.
15/02/2016
Claudio Lopes
CREATE TEMPORARY TABLE VEICULOS_RESERVADOS SELECT ID_VEICULOS FROM VEICULOS LEFT JOIN RESERVAS ON VEICULOS.ID_VEICULOS = RESERVAS.ID_VEICULOS WHERE @DATA BETWEEN DATAINICIAL AND DATAFINAL AND @HORA BETWEEN HORAINICINAL AND HORAFINAL SELECT * FROM VEICULOS WHERE ID_VEICULOS IN (SELECT ID_VEICULOS FROM VEICULOS_RESERVADOS) DROP TABLE VEICULOS_RESERVADOS
Observei que você não utilizou campos no formato datetime, Eu utilizaria, pois reduziria a quantidade de colunas de sua tabela e centralizava as informações de periodo, alem de facilitar na manipulação da sua query.
16/02/2016
Jose Fernando
Estou quase entendendo o seu código. hehehe
17/02/2016
Jose Fernando
17/02/2016
Claudio Lopes
Ainda não consigo entender.. como assim muda as partes da estrutura? formato?
20/02/2016
Alan Mario
Clique aqui para fazer login e interagir na Comunidade :)