none
Triggers, Stored Procedures e Restrições de Integridade RRS feed

  • Pergunta

  • Boas pessoal,

    Iniciei o estudo de SQL server faz algum tempo, sendo que comecei agora a entrar na parte dos triggers e outras acções. Encontrei um exercício que me suscitou algumas dúvidas, será que me conseguem ajudar com sugestões de resolução? Gostaria de utilizar triggers em todas as regras.

    1. Sempre que for carregado um item da oferta deve ser carregada informação na tabela de stocks que permita saber em qualquer altura (e actualizar) o stock disponível dos itens da oferta. 

    2. No carregamento de um item de reserva será necessário garantir que existe stock disponível para satisfazer esse item de reserva; se tal não acontecer o item da reserva não pode ser carregado. 

    3. O emissor de uma mensagem é uma das entidades envolvidas na relação de amizade associada à mensagem e é identificada com o ID dessa entidade. 

    4. É necessário garantir que as relações de amizade existem apenas entre utilizadores ou entre utilizadores e empresas não existindo o conceito de relações de amizade entre empresas. 

    5. Não é obrigatório que um meio de pagamento identifique um utilizador (campo opcional). Se for um meio de pagamento de um utilizador ad-Hoc (UTILIZADOR é NULL) então o Email não pode ser NULL. 

    6. O Gestor de uma oferta tem de ser um utilizador que esteja ligado a uma empresa. Dessa forma é possível saber sempre qual a empresa que disponibilizou uma determinada oferta. 

    7. A entidade Reservas é também usada para pagamentos correspondendo isso apenas a uma alteração do estado. Se o estado ainda não for = 'Pago' a data de pagamento está a NULL. Se o estado fôr 'Pago' a data de pagamento tem de estar preenchida e ser posterior à Data de Reserva e nunca posterior à data actual. 

    8. Se todos os itens da reserva tiverem preço zero então a reserva deve assumir logo o estado de 'Paga'. 

    9. As datas dos itens de reserva servem para especificar reservas que se prolongam por vários dias (e.g. Hotéis). Este intervalo serve para contabilizar o que foi usado do stock bem como o que deve ser pago. Uma regra de negócio que advém daqui é que as datas de início e fim da reserva têm que estar contidas no intervalo das datas de início e fim do item de oferta e se tal não acontecer os itens da reserva deverão ser desdobrados em vários itens que referenciem itens da oferta de forma correcta. 

    10. Um utilizador só pode atribuir classificação a uma oferta se a tiver adquirido (reserva com estado = pago). Por outro lado um dos dois atributos classificação e comentário tem que ser NOT NULL. 

    Toda a ajuda é bem-vinda.

    Obrigado.

    PS: abaixo podem encontrar o modelo da bd

    

    <style type="text/css">p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px} p.p2 {margin: 0.0px 0.0px 6.7px 0.0px; font: 10.0px Helvetica} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica} </style>
    quinta-feira, 14 de dezembro de 2017 20:16

Respostas

Todas as Respostas

  • Link com a foto para o modelo da BD 

    https://drive.google.com/open?id=1xt50y75rwv4fGB-HqQWhQEBKwmfpndzL

    quinta-feira, 14 de dezembro de 2017 20:32
  • Deleted
    • Marcado como Resposta Filipe B Castro quinta-feira, 28 de dezembro de 2017 16:42
    sexta-feira, 15 de dezembro de 2017 09:20
  • dv_developer,

    Mas em todas as suas regras você deseja aplicar trigger?

    Analisando talvez podemos pensar no uso de functions ou stored procedures.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 16 de dezembro de 2017 13:03
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 28 de dezembro de 2017 16:43