Ir para conteúdo
Fórum Script Brasil
  • 0

executar ações em 2 tabelas ao mesmo tempo


joanita

Pergunta

Queria fazer o seguinte:

Sempre que inserisse dados no banco, os dados fossem gravados em 2 tabelas ao mesmo tempo (tipo backup) para poder usar apenas uma (tabela suites) onde faria todas as ações do crud mysqli, e outra tabela para armazenar os dados gerais onde só seria mexida caso algum dado fosse editado, de resto serviria apenas como backup para posterior consulta de estatisticas ao final do ano?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Antes de tudo, pense bem se você **realmente** precisa desses dados em tabelas diferentes. Duplicar dados não costuma ser algo normal e pode dar MUITA dor de cabeça no futuro

O ideal seria uma rotina diária que faz o backup, não uma rotina que insere nas duas tabelas.

Até daria pra usar uma trigger no banco de dados para isso, mas não vale a pena. O melhor é usar um sistema de backup do banco

Link para o comentário
Compartilhar em outros sites

  • 0

antes de mais obrigado a todos pelas dicas... sem a vossa ajuda nunca teria chegado sequer onde cheguei ate aqui...

bom, a minha ideia é usar o script para adicionar/editar/remover/apagar ao longo do ano (tal como em qualquer casa de turismo), mas ao mesmo tempo queria poder ter um registo no final do ano que me mostrasse por ex: (total de reservas efetuadas, total de valores, etc... ao longo do ano (incluindo as reservas que foram eliminadas etc)... um total geral de tudo o que se passou... qual a melhor forma de o fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse caso, aconselho ter uma tabela principal, que só armazena dados fixos de cada registro (mesmo que seja só o ID dele). Em outra tabela você armazena cada informação desse registro, relacionando-os com os registros na tabela principal.

Assim pode ter um histórico completo de todas as modificações, sem duplicar dados.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Beraldo

a minha tabela atualmente esta assim (ainda falta incluir os campos para os valores das epocas alta/baixa nas suites):

--------------------------------------------------------

--
-- Estrutura da tabela `suites`
--

CREATE TABLE IF NOT EXISTS `suites` (
  `id`

smallint(6) NOT NULL AUTO_INCREMENT,
  `nome` text CHARACTER SET utf8 NOT NULL,
  `telefone` decimal(9,0) NOT NULL,
  `email` varchar(50)

CHARACTER SET utf8 NOT NULL,
  `suite` varchar(50) CHARACTER SET utf8 NOT NULL,
  `tipo_reserva` text CHARACTER SET utf8 NOT NULL,
  `checkin`

date NOT NULL,
  `checkout` date NOT NULL,
  `late_checkout` varchar(50) CHARACTER SET utf8 NOT NULL,
  `pagamento` decimal(4,0) NOT NULL,
  `hora_chegada` time NOT NULL,
 

`camas_extra` varchar(30) CHARACTER SET utf8 NOT NULL,
  `berco` varchar(30) CHARACTER SET utf8 NOT NULL,
  `pequeno_almoco` varchar(30)

CHARACTER SET utf8 NOT NULL,
  `jantar` varchar(30) CHARACTER SET utf8 NOT NULL,
  `data_jantar` date NOT NULL,
  `animais` decimal(1,0) NOT

NULL,
  `atividades` varchar(30) CHARACTER SET utf8 NOT NULL,
  `transporte` varchar(30) CHARACTER SET utf8 NOT NULL,
  `pedido_especial`

varchar(250) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=44 ;

--
-- Extraindo dados

da tabela `suites`
--

INSERT INTO `suites` (`id`, `nome`, `telefone`, `email`, `suite`, `tipo_reserva`, `checkin`, `checkout`, `late_checkout`,

`pagamento`, `hora_chegada`, `camas_extra`, `berco`, `pequeno_almoco`, `jantar`, `data_jantar`, `animais`, `atividades`, `transporte`,

`pedido_especial`) VALUES
(35, 'joaquim', '443243433', '', '', '', '0000-00-00', '0000-00-00', '0000-00-00', '0', '00:00:00', '', '', '', '',

'0000-00-00', '0', '', '', ''),
(2, 'sandra', '474747744', '547d@adsasdda.dsa', 'Azul Céu', 'Booking', '2016-01-13', '2016-01-14',

'0000-00-00', '20', '00:00:00', '---', '---', '---', '---', '2016-01-20', '0', '---', '---', '');

/*!40101 SET

CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET

COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Link para o comentário
Compartilhar em outros sites

  • 0

Se você realmente precisa de outra tabela para manter o histórico, sugiro separar mais ou menos assim:

 

Tabela "suites"

- id

- outros campos fixos (que nunca serão editados)

 

Tabela "suite_detalhes"

- suite_id -> id da suíte na tabela "suites"

- dados da reserva da suíte

- data_hora -> data e hora da criação ou alteração

 

Estes links sobre Relacionamento de Tabelas devem ajudar:

http://rberaldo.com.br/usando-campos-multivalorados/

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

mnas era importante que alguns desses dados fossem tambem alterados na tabela anual, imagina que fizeram uma reserva e eu registei na tabela... mais tarde ligam-me a alterar o numero de pessoas dessa mesma reserva, eu terei que alterar... e era importante ser alterado nas 2 tabelas porque isso vai influenciar os preços da reserva e depois na estatistica anual vai dar-me o preço inserido da primeira vez e não o preço que realmente foi cobrado, percebes?

Link para o comentário
Compartilhar em outros sites

  • 0

Com a estrutura que te mostrei, não há duplicação de dados e nem há "tabela anual". É uma única estrutura que armazena todo o histórico de modificações. Dessa forma a tabela "suite_detalhes" terá vários registros para o mesmo ID de suíte. Os dados do registro mais recente é referente à última alteração realizada.

 

Por exemplo, para a suíte 1775:

 

Tabela "suites_detalhes"

suite_id | ocupantes | telefone  | data_hora
1775     |    2      | 3222-2222 | 2016-01-10 10:00:00
1775     |    3      | 3222-2222 | 2016-01-14 10:00:00

Nesse caso, no dia 10 foi feita a reserva. No dia 14 foi solicitada uma alteração no número de ocupantes. Os demais dados ficam iguais (mudando o horário também, é claro)

Assim, o registro mais recente é sempre o atual e, da mesma tabela é possível gerar o histórico de alterações. É melhor que atualizar duas tabelas

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...