Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Basi di Dati Laboratorio - Vincoli
[go: Go Back, main page]


 
Torna alla pagina iniziale

Analisi dei requisiti
Schema relazionale
Definizione delle operazioni
Qualità delle interfacce
Caricamento dati
Vincoli sulle operazioni

Risorse del Corso
Download dei file
Gestione dei gruppi
Procedura per Immissione dei tempi di lavoro

Menu Principale del progetto

Invia una e-mail
Vincoli sulle operazioni

In questa sezione è presente il documento Vincoli e Trigger versione 1.3.
Il documento è consultabile on-line ma può essere scaricato il file dell'ultima versione disponibile nella sezione Download.

Introduzione

Il gruppo "Specifica dei vincoli" ha i seguenti obiettivi:

  1. individuare tutti quei vincoli che rendono i dati memorizzati consistenti con la realtà e che possono essere controllati tramite trigger o procedure
  2. implementare i trigger e le procedure in PL/SQL
  3. realizzare una serie di test in PL/SQL per verificare il corretto funzionamento dei trigger

È importante specificare che sono trattati solo i vincoli individuati tra gli attributi di ennuple diverse di una tabella o tra gli attributi di ennuple di tabelle diverse, e non sono trattati i vincoli tra attributi di una stessa ennupla o vincoli relativi al singolo attributo, essendo la trattazione di questi vincoli delegata ai singoli gruppi che si occupano della realizzazione delle operazioni.

Per quanto riguarda le varie operazioni di cancellazione, per il momento queste non sono state trattate, poiché a nostro avviso, per la struttura stessa del database, è impensabile che il sistema offra la possibilità di cancellare qualche dato, in quanto questa operazione porterebbe la cancellazione a cascata di tutti i dati ad esso riferito, perdendo quindi informazioni sull'attività passata dell' agenzia, compreso il fatturato, andando potenzialmente incontro anche a controversie legali e comunque non permettendo un qualsiasi trattamento di dati che si riferiscono al passato (contattare un ex-cliente, per esempio), etc..



Elenco dei vincoli individuati

In questa sezione, sono elencati e spiegati tutti i vincoli che verranno trattati, con indicato a sinistra il numero che identificherà univocamente il vincolo, ed a fianco (tra parentesi) il numero del gruppo che si occupa della programmazione del vincolo.

L'elenco è organizzato secondo le operazioni più importanti che vengono effettuate da qualsiasi utente del sistema, e con un criterio cronologico.

Stipula Commissione e Sottocommissioni


  1. L'importo dell'acconto di una commissione non può superare l'importo totale della commissione stessa. (23)
  2. L'importo dello sconto di una commissione non può superare l'importo totale della commissione stessa. (23)
  3. Una sottocommissione non può essere disposta più di una volta. (32)
  4. Al momento della stipula di una commissione, devono essere già stati inseriti nel database tutti i dati relativi al cliente e allo spot ai quali la commissione si riferisce (23)
  5. Il numero delle rate può essere uguale a zero solo se esiste un acconto con importo pari all'importo totale da pagare. (23)

Modifica Commissione e Sottocommissione

  1. Una commissione non può essere modificata se esistono già un contratto o una disposizione ad essa associata. (23)

Inserimento Contratto

  1. Un contratto può essere stipulato solo se l'agenzia è già in possesso di tutti i dati relativi alla commissione associata. (23)
  2. La data della "rata zero" deve essere non precedente alla data della stipula del contratto. (23)

Fatturazione

  1. Ogni rata ha un'unica fattura associata. (22)
  2. La data di fatturazione di una fattura non può precedere la data di scadenza effettiva della rata a cui si riferisce. (22)
  3. La data di fatturazione di una rata deve essere precedente alla data di fatturazione di ogni rata seguente e deve essere successiva alla data di fatturazione di ogni rata precedente, ovvero le rate devono essere fatturate nel loro ordine. (21)
  4. Ci deve essere una sequenzialità nell'emissione delle fatture. Due fatture, emesse nello stesso anno, che hanno numero (i primi 4 caratteri di CodiceFattura) l'uno seguente l'altro devono avere anche date di fatturazione consecutive. (21)

Pagamenti

  1. La data di pagamento di una fattura non può essere precedente alla data di emissione della fattura stessa. (32)
  2. La somma dei pagamenti di una fattura non può essere superiore all'importo totale della fattura stessa. (32)

Programmazione fascia pubblicitaria

  1. In un preventivo e in una commissione, la data di inizio programmazione deve essere precedente alla data attuale e la data di termine programmazione deve essere successiva alla data di inizio. (29)
  2. Il numero di emittenti prescelte per una programmazione a rotazione, deve essere un multiplo del numero di emittenti di ciascun sottoinsieme. (29)
  3. Il numero di programmazioni relative ad una disposizione deve essere uguale al numero di passaggi totale della disposizione stessa. (21)
  4. La durata di una fascia pubblicitaria, intesa come somma delle durate degli spot trasmessi al suo interno, non deve superare i quattro minuti. (21)
  5. Nella stessa fascia pubblicitaria non possono essere trasmessi due o più spot con lo stesso genere merceologico. (21)
  6. Il programmatore può effettuare programmazioni relative solo ai giorni successivi al giorno stesso in cui realizza la programmazione. (21)



Implementazione dei vincoli e delle procedure

Nella tabella sottostante, per ogni vincolo, vengono indicati i nomi dei file relativi, il nome del trigger o della procedura contenuto nel file e l'evento in cui si attiva . Ad ogni trigger corrisponde un file con lo stesso nome ed estensione ".sql".


Identificativo

Nome Trigger(Tr) o Procedura(Pr)

Evento su cui si attiva il trigger

1

TrVincolo1A

Insert on Commissioni

2

TrVincolo2A

Insert on Commissioni

3

TrVincolo3A

Insert on Disposizioni

4

TrVincolo4A

Insert on Commissioni

5

TrVincolo5A

Insert on Commissioni

6

TrVincolo6A

Update on Commissioni

7

TrVincolo7A

Inserti on Contratti

8

TrVincolo8A

Insert/Update on Contratti

9

TrVincolo9A

Insert on Fatture

10

TrVincolo10A

Insert on Fatture

11

TrVincolo11A

Insert on Fatture

12

TrVincolo12A

Insert on Fatture

13

PrVincolo13A

Insert on Pagamenti

14

TrVincolo14A

Insert on Pagamenti

15

TrVincolo15A

Insert Preventivo

15

TrVincolo15B

Insert SottoCommissione

16

PrVincolo16A

 

17

PrVincolo17A

 

18

TrVincolo18A

Insert on Passaggi

19

TrVincolo19A

Insert on Passaggi

20

TrVincolo20A

Insert on Passaggi



Nomi delle eccezioni sollevate

Le eccezioni sotto indicate sono dichiarate nel package "trigEccezioni".
Ogni vincolo solleva una sola eccezione anche se può essere violato su eventi diversi.


Vincolo

Nome Eccezione

1

OverflowAcconto

2

OverflowSconto

3

DispostaTroppeVolte

4

ClienteIncompleto

5

ImportoScoperto

6

CommissioneNonModificabile

7

CommissioneIncompleta

8

DataRataZeroPassata

9

TroppeFattureAssociate

10

RataNonScaduta

11

RatePrecNonFatturate

12

FattureNonConsecutive

13

DataPagamentoPassata

14

OverflowTotalePagamenti

15

IntervalloProgrammazioneInvalido

16

RotazioneInvalida

17

NumeroProgrammazioniInvalido

18

SuperatiQuattroMinuti

19

StessoGenereMerceologico

20

DataProgrammazioneErrata