Caricare documenti e articoli online  
INFtube.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.
Meneame
 
Non ricordi la password?  ››  Iscriviti gratis
 

Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti - Eliminazione delle ambiguità presenti

informatica


Inviare l'articolo a Facebook Inviala documento ad un amico Appunto e analisi gratis - tweeter Scheda libro l'a yahoo - corso di



ALTRI DOCUMENTI

passwd à cambiare la password
LE INTERFACCE STANDARD - INTERFACCIA
Telematica
L'assegnazione degli indirizzi IP
ALGORITMI - LE PROPRIETÀ DEGLI ALGORITMI - MODELLI DI ALGORITMI
STORIA DI INTERNET
Informatica
Oggetti fondamentali della libreria VCL
CORRELACIONES

Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti.

Indice

Argomento

Pagina

1.        Analisi dei requisiti

1



a.    Requisiti espressi in linguaggio naturale

1

b.    Glossario dei termini

2

c.    Eliminazione delle ambiguità presenti

3

d.    Strutturazione dei requisiti

3

e.    Specifica operazioni

4

2.        Progettazione concettuale

4

2a.Identificazione delle entità e relazioni

5

2b.    Un primo scheletro dello schema

5

2c.Sviluppo delle componenti dello scheletro

5

2d.    Unione delle componenti nello schema finale ridotto

7

2e.Dizionario dei dati

7

2f.      Regole aziendali

9

3.        Progettazione logica

10

3a.Tavole dei volumi e delle operazioni

10

3b.    Ristrutturazione dello schema concettuale

11

3c.Normalizzazione

14

3d.    Traduzione verso il modello relazionale

15

4.        Codifica SQL

16

4a.Definizione dello schema

16

4b.    Codifica delle operazioni

18

1.     Analisi dei requisiti

1a.  Requisiti espressi in linguaggio naturale

Si vuole realizzare una base di dati per una società di riciclaggio di metalli e rifiuti, con rivendita bombole, di cui si desidera rappresentare i dati relativi ai fornitori di metallo o rifiuti, le fonderie o centri di raccolta rifiuti e i trasportatori. Per quel che concerne i metalli si vuole rappresentare il nome, la capacità di resa, il codice europeo (CER), la quantità disponibile in magazzino. Relativamente alla raccolta dei rifiuti si vuole rappresentare il nome, il codice, il fatto che sia materiale di smaltimento oppure di riciclaggio, la quantità, il costo di smaltimento e prezzo di riciclaggio. Per quel che concerne le bombole si vuole memorizzare il contenuto (gas), la capacità, il codice, la scadenza del collaudo, la persona o azienda che la ha in affitto al momento e il prezzo; si rappresentano anche il nome, il codice, la percentuale di purezza dei gas. Per quel che riguarda le attrezzature della società si vuole conoscere il nome, la data di acquisto, il venditore (è sempre un'azienda) con relativa ragione sociale, la garanzia e la percentuale di ammortamento. Occorre memorizzare ognuno dei seguenti atti di cui si vuole sapere la data e la persona o azienda con cui è stato stipulato:

- di vendita (rifiuti di riciclaggio o metalli), di smaltimento rifiuti, di acquisto (rifiuti di riciclaggio o

metalli), di carico rifiuti di smaltimento;(si vuole sapere le quantità e prezzo di ogni metallo o rifiuto)

- di affitto bombole;(si vuole sapere le quantità e prezzo di ogni bombola)

- di trasporto con relativo atto correlato (vendita, acquisto, carico o smaltimento), prezzo e chilometraggio;

- di acquisto attrezzature.(si vuole sapere le quantità e prezzo di ogni attrezzatura)

Delle fonderie o dei centri di raccolta rifiuti (sono sempre società) si vuole conoscere la ragione sociale, il tipo, la quantità e il prezzo dei metalli o rifiuti acquistati (atti di vendita o smaltimento), i tempi di consegna, la modalità e i tempi di pagamento; per ogni loro intermediario (solo per fonderie) si vuole sapere il nome e la percentuale sulla vendita e ragione sociale. Dei fornitori (possono essere società o persone), invece, si vuole conoscere la ragione sociale, il tipo, la quantità e il prezzo dei metalli o rifiuti forniti (atti di acquisto o carico rifiuti di smaltimento). Riguardo ai trasportatori (sono sempre società) si desidera apprenderne il nome, la ragione sociale, il costo di trasporto in base al peso, al tipo di materiale trasportato e al chilometraggio.

1b.  Glossario dei termini

Termine

Descrizione

Sinonimi

Collegamenti

Metallo

Tipo di metallo immagazzinato.

Materiale

Atto di acquisto, atto di vendita, fonderia, fornitore

Rifiuto

Materiale di scarto ricevuto da fornitori

Materiale

Atto di acquisto, atto di vendita, atto di smaltimento o carico, fornitore, centro di raccolta

Bombola

Contiene gas e viene affittata.

-

Gas, atto di affitto

Fornitore

Persona o società che fornisce un carico di materiale metallico o di scarto (rifiuti).

-

Atto di acquisto, atto di carico, metallo, rifiuto

Fonderia

Società che acquista il materiale metallico.

-

Intermediario, atto di vendita, metallo

Intermediario

Persona che si occupa dell'acquisto di materiale metallico per conto di una fonderia.

-

Fonderia

Centro di raccolta rifiuti

Ente che riceve materiale di smaltimento e acquista materiale di riciclaggio

-

Atto di smaltimento, atto di vendita, rifiuto

Gas

Tipo di gas contenuto in una bombola

-

Bombola

Trasportatore

Società o persona che si occupa del trasporto di materiale (metallico o rifiuti).

-

Atto di trasporto

Persona affittuaria

Persona o società che affitta bombole

-

Atto di affitto

Atto di acquisto materiale

Dati relativi all'acquisto di metalli o rifiuti di riciclaggio.

-

Fornitore, metallo o rifiuto, atto di trasporto

Atto di vendita materiale

Dati relativi alla vendita di metalli o rifiuti di riciclaggio.

-

Atto di trasporto, metallo o rifiuto, fonderia o centro di riciclaggio

Atto di carico rifiuti di smaltimento

Dati relativi al ricevimento di rifiuti di smaltimento e guadagno relativo.

-

Fornitore, atto di trasporto, rifiuto

Atto di smaltimento rifiuti

Dati relativi allo smaltimento di rifiuti e relativo costo.

-

Centro di raccolta rifiuti, atto di trasporto, rifiuto

Atto di trasporto

Dati relativi al trasporto di materiale.

-

Atto di vendita o smaltimento o carico o acquisto

Atto di affitto

Dati relativi all'affitto di bombole.

-

Bombola, Persona affittuaria

Atto di acquisto attrezzature

Dati relativi all'acquisto di attrezzature.

-

Attrezzatura, venditore

Attrezzatura

Strumento di lavoro

-

Atto di acquisto attrezzature, venditore

Venditore

Persona o società che ha venduto una attrezzatura

-

Attrezzatura, atto di acquisto attrezzature

1c.   Eliminazione delle ambiguità presenti (è stata effettuata una nuova intervista)

Il termine generale materiale serve a indicare materiale contenente vari tipi di metalli oppure composto da scarti riciclabili e non, perciò si può identificare un atto di vendita o acquisto.

La ragione sociale di una persona o di un'azienda corrisponde al nominativo (nome e cognome in caso di una persona), alla partita IVA (codice fiscale in caso di una persona), all'indirizzo di reperimento, al numero o numeri di telefono, al numero o numeri di fax e all'indirizzo e-mail.

I tempi di consegna sono i tempi da rispettare perché essa venga effettuata, le modalità di pagamento sono i mezzi (es. bonifico bancario) con cui il pagamento viene effettuato, entrambe queste caratteristiche sono relative ad un atto di vendita.

Il costo di trasporto in base al peso, al tipo di materiale trasportato e al chilometraggio sono rappresentati in un atto di trasporto.

La percentuale di ammortamento di un'attrezzatura è la frazione di capitale investito per il suo acquisto che va ad incidere in positivo sulla dichiarazione dei redditi; la sua garanzia è una data.

1d.  Strutturazione dei requisiti

Ø        Frasi di carattere generale

Si vuole realizzare una base di dati per una società di riciclaggio di metalli e rifiuti, con rivendita bombole, di cui si desidera rappresentare i dati relativi ai fornitori di metallo o rifiuti, le fonderie o centri di raccolta rifiuti e i trasportatori.

Ø        Frasi relative ai fornitori

Dei fornitori (possono essere società o persone), invece, si vuole conoscere la ragione sociale, il tipo, la quantità e il prezzo dei metalli o rifiuti forniti (atti di acquisto o carico rifiuti di smaltimento).

Ø        Frasi relative a fonderie o centri di raccolta rifiuti

Delle fonderie o dei centri di raccolta rifiuti (sono sempre società) si vuole conoscere la ragione sociale, il tipo, la quantità e il prezzo dei metalli o rifiuti acquistati (atti di vendita o smaltimento), i tempi di consegna, la modalità e i tempi di pagamento

Ø        Frasi relative ai trasportatori

Riguardo ai trasportatori (sono sempre società) si desidera apprenderne il nome, la ragione sociale, il costo di trasporto in base al peso, al tipo di materiale trasportato e al chilometraggio.

Ø        Frasi relative agli intermediari

per ogni loro intermediario (solo per fonderie) si vuole sapere il nome e la percentuale sulla vendita e ragione sociale.

Ø        Frasi relative ai metalli

Per quel che concerne i metalli si vuole rappresentare il nome, la capacità di resa, il codice europeo (CER), la quantità disponibile in magazzino.

Ø        Frasi relative ai rifiuti

Relativamente alla raccolta dei rifiuti si vuole rappresentare il nome, il codice, il fatto che sia materiale di smaltimento oppure di riciclaggio, la quantità, il costo di smaltimento e prezzo di riciclaggio.

Ø        Frasi relative alle bombole

Per quel che concerne le bombole si vuole memorizzare il contenuto (gas), la capacità, il codice, la scadenza del collaudo, la persona o azienda che la ha in affitto al momento e il prezzo

Ø        Frasi relative alle attrezzature

Per quel che riguarda le attrezzature della società si vuole conoscere il nome, la data di acquisto, il venditore (è sempre un'azienda) con relativa ragione sociale, la garanzia e la percentuale di ammortamento.

Ø        Frasi relative agli atti

Occorre memorizzare ognuno dei seguenti atti di cui si vuole sapere la data e la persona o azienda con cui è stato stipulato:

- di vendita (rifiuti di riciclaggio o metalli), di smaltimento rifiuti, di acquisto (rifiuti di riciclaggio o metalli), di carico rifiuti di smaltimento;(si vuole sapere le quantità e prezzo di ogni metallo o rifiuto)

- di affitto bombole;

- di trasporto con relativo atto correlato (vendita, acquisto, carico o smaltimento), prezzo e chilometraggio;

- di acquisto attrezzature.(si vuole sapere le quantità e prezzo di ogni attrezzatura)

Ø        Frasi relative ai gas

si rappresentano anche il nome, il codice, la percentuale di purezza dei gas.

1e.   Specifica operazioni

1.         Inserire una nuova fonderia (a regime in media 1 volta all'anno)

2.         Inserire un nuovo trasportatore (a regime in media 1 volta all'anno)

3.         Inserire un nuovo fornitore (a regime in media 10 volte all'anno)

4.         Inserire un nuovo affittuario (a regime in media 2 volte all'anno)

5.         Inserire un nuovo intermediario (a regime in media 5 volte all'anno)

6.         Stipulare un nuovo atto di vendita (a regime in media 2 volte al mese)

7.         Stipulare un nuovo atto di acquisto (a regime in media 2 volte al giorno)

8.         Stipulare un nuovo atto di affitto (a regime in media 10 volte al mese)

9.         Stipulare un nuovo atto di trasporto (in media 1 volta al mese)

10.     Calcolare per il mese corrente il totale delle entrate e delle uscite (in media 1 volta al mese)

11.     Visualizzare il numero di bombole vuote (in media 5 volte al mese)

12.     Visualizzare il numero di bombole non affittate (a regime in media 1 volta al mese)

13.     Visualizzare le bombole scadute (a regime in media 1 volte al mese)

14.     Visualizzare gli affittuari che hanno in dotazione bombole da più di un certo periodo (a regime in media 1 volta al mese)

15.     Visualizzare gli atti che hanno associato un atto di trasporto (a regime in media 1 volte al mese)

16.     Visualizzare tutti i metalli e relative quantità in magazzino (1 volta al giorno)

2.     Progettazione concettuale

Abbiamo seguito una strategia mista come sotto descritto.

2a.  Identificazione delle entità e relazioni (bottom-up)

Sono state identificate (seguendo la strategia bottom-up) inizialmente le seguenti entità: metallo, rifiuto, bombola, gas, attrezzatura, fonderia, centro raccolta rifiuti, fornitore, intermediario, trasportatore, affittuario, venditore, vari tipi di atto.

Le entità sopra elencate si possono suddividere in tre gruppi principali: persona o azienda che  comprende tutte le entità che hanno una ragione sociale, atto che comprende tutti gli atti, componente che generalizza ogni entità che può essere elencata in un atto.

2b.  Un primo scheletro dello schema (top-down)

Ad un primo livello di astrazione, tenendo conto delle considerazioni fatte sopra è stato concepito il seguente primo scheletro di schema concettuale:

dove stipulazione è la sottoscrizione di un atto tra le due parti, elencazione è l'elenco dei componenti di un atto (es. elenco dei metalli venduti in un atto di vendita).

2c.   Sviluppo delle componenti dello scheletro (inside-out)

Persona o azienda:

Ognuna di queste entità è caratterizzata dagli stessi attributi: ragione sociale e codice fiscale o partita IVA, nome indica il nominativo di una azienda oppure il nome e cognome di una persona.

Sono state rilevati due gruppi di entità (Intermediario e Correlato) che si diversificano per il rapporto che hanno con la ditta da gestire con la base di dati: gli intermediari non stipulano atti e sono gli unici che possono svolgere un'azione di intermediazione con le fonderie, azione descritta dalla relazione Intermediazione (un intermediario ha sempre almeno una fonderia per la quale media, una fonderia può non avere intermediari o averne più d'uno).

Atto:

Esecuzione indica a quale atto è relativo un determinato atto di trasporto, gli atti sui materiali possono non avere associato nessun atto di trasporto poiché il trasporto può essere effettuato dalla ditta stessa o dai fornitori.

Componente:

Contenuto indica quale gas è contenuto in una bombola, ci possono essere più bombole con lo stesso gas e una bombola può non contenere gas, nel qual caso o è vuota o è stata appena utilizzata.

Nota:

Visto il numero elevato di entità e relazioni nelle singole componenti dello scheletro, abbiamo deciso di non sviluppare due tra le parti dell'applicazione con caratteristiche di schema molto simili ad altre implementate:

- la parte riguardante la gestione dei rifiuti (simile alla gestione dei metalli) composta dalle entità Rifiuto, Centro di raccolta, Atto di smaltimento, Atto di carico e relative relazioni.

- la parte relativa la gestione delle attrezzature (stipulazione di un atto è in comune a tutte le componenti come pure l'elencazione delle componenti di un atto) composta dalle entità Attrezzatura, Venditore, Atto attrezzature e relative relazioni.

2d.  Unione delle componenti nello schema finale ridotto

 Analizzando gli schemi, abbiamo deciso di lasciare inalterata la relazione Stipulazione poiché ogni Correlato ha stipulato un Atto; di contro la relazione Elencazione è stata specializzata in Elencazione bombole, Elencazione vendita, Elencazione acquisto.

2e.   Dizionario dei dati

Entità:

Nome entità

Descrizione

Attributi

Identificatore

Persona o azienda

Persona o azienda in contatto con la società

Nome (stringa),

Email (stringa),

Telefono (numerico),

Fax (numerico),

Numero civico (stringa),

Via (stringa),

CAP (numerico)

Partita IVA o codice fiscale (stringa)

Intermediario

Persona o azienda che fa da tramite tra la società di riciclaggio e la fonderia

"



"

Correlato

Persona o azienda che ha stipulato un atto con la società

"

"

Fonderia

Azienda che tratta l'acquisto di metallo dalla società

"

"

Fornitore

Azienda o persona che tratta la vendita di metallo

"

"

Affittuario

Azienda o persona che tratta l'affitto di bombole

"

"

Trasportatore

Azienda o persona che si occupa del trasporto di metallo

"

"

Atto

Contratto di affitto di bombole, di trasporto o di vendita o di acquisto di metallo

Data (data)

Codice (stringa)

Atto affitto

Contratto di affitto di bombole stipulato tra la società e un correlato

"

"

Atto trasporto

Contratto di trasporto metallo dalla società alla fonderia o da un fornitore alla società

"

Importo (numerico)

"

Atto Materiale

Contratto di acquisto o vendita di metallo stipulato dalla società con un fornitore o fonderia

"

"

Atto vendita

Contratto do vendita di metallo stipulato tra la società e una fonderia

"

"

Atto acquisto

Contratto di acquisto di metallo stipulato tra la società e un fornitore

"

"

Componente

Oggetto di vendita o acquisto o affitto definito in un atto

-

-

Bombola

Oggetto di affitto definito in un atto, contiene un gas

Capacità (numerico),

Prezzo (numerico),

Scadenza (data),

Stato (stringa)

Stato indica se la bombola è in affitto, disponibile all'affitto o vuota

Codice (stringa)

Gas

Tipo di contenuto di una bombola

Purezza (numerico),

Nome (stringa)

Purezza indica la percentuale di purezza del gas

Codice (stringa)

Metallo

Oggetto di acquisto o vendita definito in un atto e immagazzinato

Nome (stringa),

Quantità (numerico),

Resa (numerico)

Resa indica la resa termica del metallo

Codice (stringa)

Relazioni:

Nome relazione

Descrizione

Entità coinvolte

Attributi

Intermediazione

Associa un intermediario alle fonderie per cui lavora

Intermediario (1,N)

Fonderia (0,N)

-Percentuale (numerico)

Indica la percentuale percepita dall'intermediario su una vendita di metallo

Stipulazione

Associa un atto all'azienda o persona che lo ha stipulato

Correlato (0,N)

Atto (1,1)

-

Esecuzione

Associa un atto di trasporto al relativo atto materiali

Atto materiali (0,1)

Atto trasporto (1,1)

-

Contenuto

Associa una bombola al suo contenuto (gas)

Bombola (1,1)

Gas (0,N)

-

Elencazione bombole

Associa all'atto di affitto le bombole relative

Atto affitto (1,N)

Bombola (0,N)

-

Elencazione vendita

Associa a un atto di vendita il metallo venduto

Metallo (0,N)

Atto vendita (1,N)

-Quantità (numerico)

Indica la quantità di ogni metallo

-Prezzo (numerico)

Indica il prezzo relativo

Elencazione acquisto

Associa a un atto di acquisto il metallo acquistato

Metallo (0,N)

 Atto acquisto (1,N)

-Quantità (numerico)

Indica la quantità di ogni metallo

-Prezzo (numerico)

Indica il prezzo relativo

2f.    Regole aziendali

Regole di vincolo

(RV1) Ad una Bombola deve essere associato uno stato:

- in affitto ß per indicare che una bombola è in affitto

- vuota ß per indicare che è vuota, va caricata e non è disponibile all'affitto

- disponibile ß per indicare che può essere affittata

(RV2) La percentuale di un Affittuario deve essere compresa tra 0 e 100

(RV3) La resa di un Metallo deve essere compresa tra 0 e 100

(RV4) La  purezza di un Gas deve essere compresa tra 0 e 100

(RV5) La quantità in una Elencazione vendita o acquisto deve essere >0

(RV6) La quantità di un Metallo deve essere >=0

(RV7) Il prezzo di una Bombola deve essere >0

(RV8) La capacità di una Bombola deve essere >0

Regole di derivazione

(RD1) La quantità di un metallo si ottiene sottraendo le quantità specificate nelle relazioni di Elencazione vendita da quelle di acquisto.

3.     Progettazione logica

3a.  Tavole dei volumi e delle operazioni

Tavola dei volumi:

Concetto

Tipo

Volume

Persona o azienda

E

165

Intermediario

E

15

Correlato

E

150

Fonderia

E

10

Fornitore

E

80

Affittuario

E

80

Trasportatore

E

5

Atto

E

950

Atto affitto

E

300

Atto trasporto

E

50

Atto Materiale

E

600

Atto vendita

E

100

Atto acquisto

E

500

Componente

E

45

Bombola

E

20

Gas

E

10

Metallo

E

15

Intermediazione

R

45

Stipulazione

R

950

Esecuzione

R

50

Contenuto

R

20

Elencazione bombole

R

40

Elencazione vendita

R

200

Elencazione acquisto

R

1500

Tavola delle operazioni:

Operazione

Frequenza

1

1 volta all'anno

2

1 volta all'anno

3

10 volte all'anno

4

2 volte all'anno

5

5 volte all'anno

6

2 volte al mese

7

2 volte al giorno

8

10 volte al mese

9

1 volta al mese

10

1 volta al mese




11

5 volte al mese

12

1 volta al mese

13

1 volta al mese

14

1 volta al mese

15

1 volta al mese

16

1 volta al giorno

3b.  Ristrutturazione dello schema concettuale

Eliminazione delle ridondanze:

Abbiamo rilevato una ridondanza sull'attributo Quantità dell'entità Metallo: questo valore si può calcolare dalla differenza dei valori degli attributi Quantità delle relazioni Elencazione acquisto e Elencazione vendita come specificato nella regola di derivazione RD1.

Le operazioni che coinvolgono questo attributo sono la n° 6, 7, 16.

Tavole degli accessi in presenza di ridondanza:

Operazione 6

Concetto

Costrutto

Accessi

Tipo

Metallo

Entità

1

L

Metallo

Entità

1

S

Elencazione vendita

Relazione

2

S

Operazione 7

Concetto

Costrutto

Accessi

Tipo

Metallo

Entità

1

L

Metallo

Entità

1

S

Elencazione acquisto

Relazione

3

S

Operazione 16

Concetto

Costrutto

Accessi

Tipo

Metallo

Entità

15

L

Tavole degli accessi in assenza di ridondanza:

Operazione 6

Concetto

Costrutto

Accessi

Tipo

Elencazione vendita

Relazione

2

S

Operazione 7

Concetto

Costrutto

Accessi

Tipo

Elencazione acquisto

Relazione

3

S

Operazione 16

Concetto

Costrutto

Accessi

Tipo

Elencazione vendita

Relazione

200

L

Elencazione acquisto

Relazione

1500

L

In presenza di ridondanza il costo delle varie operazioni (considerando doppio il costo di una scrittura rispetto a una lettura):

Op.6=7 (costo)* 2 (volte al mese)=14

Op.7=9 (costo)* 42 (volte al mese)=378

Op.8=15 (costo)* 21 (volte al mese)=315

Totale= 707

In assenza di ridondanza il costo delle varie operazioni (considerando doppio il costo di una scrittura rispetto a una lettura):

Op.6=4 (costo)* 2 (volte al mese)=8

Op.7=6 (costo)* 42 (volte al mese)=252

Op.8=1700 (costo)* 21 (volte al mese)=35700

Totale= 35960

Di conseguenza riteniamo opportuno mantenere la ridondanza.

Eliminazione delle gerarchie:

Riguardo l'entità Persona o azienda abbiamo deciso di accorparla in Intermediario e Correlato, questo perché la generalizzazione è di tipo totale e ci sono operazioni che fanno riferimento distinto alle due entità figlie.

Riguardo l'entità Correlato modificata dalla prima eliminazione di gerarchia, abbiamo deciso per gli stessi motivi di accorparla nelle entità figlie: Trasportatore, Affittuario, Fornitore, Fonderia.

Riguardo l'entità Componente risulta evidente accorparla alle entità figlie poiché priva di attributi e poiché è stata aggiunta in fase di creazione di uno scheletro di schema durante la progettazione concettuale al solo scopo di favorire la divisione dello sviluppo dello schema in parti separate.

Riguardo all'entità Atto abbiamo deciso di accorparla in Atto affitto, Atto trasporto, Atto materiali poiché la generalizzazione è di tipo totale e l'operazione 14 ha un riferimento distinto all'entità atto di affitto, per distinguere inoltre gli atti di trasporto che non hanno elencazione di componenti.

Riguardo l'entità Atto materiali modificata dalla terza eliminazione di gerarchia, abbiamo invece deciso di accorpare le entità figlie Atto acquisto, Atto vendita nel padre poiché hanno caratteristiche comuni e le operazioni non fanno riferimenti distinti alle due entità.

Visto quest'ultimo accorpamento bisogna aggiungere la seguente regola di vincolo:

(RV9) Ogni Atto materiali deve essere associato alternativamente ad una Stipulazione di acquisto o vendita.

Accorpamenti e partizionamenti:

Date le caratteristiche comuni delle due relazioni Elencazione vendita e Elencazione acquisto: stesse entità coinvolte, stessi attributi , stessa cardinalità e significato logico simile, abbiamo deciso di accorparli in una relazione unica denominata Elencazione metalli.

Per mantenere una distinzione tra le due relazioni abbiamo deciso di porre i seguenti vincoli:

(RV10) Nell'elencazione di un acquisto la fonderia relativa deve essere nulla(uscite)

(RV11) Nell'elencazione di una vendita il fornitore relativo deve essere nullo(entrate)

Eliminazione degli attributi multivalore:

Le entità Intermediario, Fonderia, Fornitore, Affittuario e Trasportatore aventi gli attributi multivalore Telefono e Fax vengono partizionate come da schema seguente.

Elenco degli identificatori principali:

Nome entità

Identificatore

Intermediario

Partita IVA o codice fiscale (stringa)

Fonderia

Partita IVA o codice fiscale (stringa)

Fornitore

Partita IVA o codice fiscale (stringa)

Affittuario

Partita IVA o codice fiscale (stringa)

Trasportatore

Partita IVA o codice fiscale (stringa)

Atto affitto

Codice (stringa)

Atto trasporto

Codice (stringa)

Atto Materiale

Codice (stringa)

Bombola

Codice (stringa)

Gas

Codice (stringa)

Metallo

Codice (stringa)

3c.   Normalizzazione

Associazioni:

Analizzando lo schema concettuale ristrutturato si nota che tutte le associazioni presenti sono in forma normale di Boyce e Codd perché binarie.

Entità:

Nome entità

Commento

Intermediario

Non esistono dipendenze non banali tra gli attributi. L'unica dipendenza presente è tra codice fiscale e ragione sociale (dipendenza banale).

Fonderia

Non esistono dipendenze non banali tra gli attributi. L'unica dipendenza presente è tra codice fiscale e ragione sociale (dipendenza banale).

Fornitore

Non esistono dipendenze non banali tra gli attributi. L'unica dipendenza presente è tra codice fiscale e ragione sociale (dipendenza banale).

Affittuario

Non esistono dipendenze non banali tra gli attributi. L'unica dipendenza presente è tra codice fiscale e ragione sociale (dipendenza banale).

Trasportatore

Non esistono dipendenze non banali tra gli attributi. L'unica dipendenza presente è tra codice fiscale e ragione sociale (dipendenza banale).

Atto affitto

Non presenta dipendenze non banali tra gli attributi data e codice.

Atto trasporto

Non presenta dipendenze non banali tra gli attributi data, importo e codice.

Atto Materiale

Non presenta dipendenze non banali tra gli attributi data e codice.

Bombola

Anche se non appare nelle specifiche formali, l'attributo prezzo potrebbe presentare una dipendenza funzionale non banale dagli attributi capacità e codice gas associato.

 Correzione dello schema:

Riferendo l'attributo prezzo (inteso come prezzo al Kg) all'entità Gas lo schema non presenta più dipendenze funzionali.

Il prezzo della bombola viene calcolato come prezzo del gas relativo al Kg * capacità.

*Dato che la dipendenza funzionale non è visibile nelle specifiche formali ed è stata evidenziata come una possibile interpretazione dello schema abbiamo deciso di non modificare il codice SQL e i dati immessi nel DB, poiché questa modifica non cambierebbe in modo significativo lo scopo didattico del progetto.

Gas

Non presenta dipendenze non banali tra gli attributi nome, codice e purezza.

Metallo

Non presenta dipendenze non banali tra gli attributi resa, quantità, codice e nome.

3d.  Traduzione verso il modello relazionale

Entità - Relazione

Traduzione

Intermediario

Intermediario(CodPar, Nominativo, Email, NCiv, Via, Cap)

Fonderia

Fonderia(CodPar, Nominativo, Email, NCiv, Via, Cap)

Fornitore

Fornitore(CodPar, Nominativo, Email, NCiv, Via, Cap)

Affittuario

Affittuario(CodPar, Nominativo, Email, NCiv, Via, Cap)

Trasportatore

Trasportatore(CodPar, Nominativo, Email, NCiv, Via, Cap)

Atto affitto

AttoAffitto(Codice, Data, Affittuario)

Atto trasporto

AttoTrasporto(Codice, Data, Importo, Trasportatore, AttoMateriali)

Atto Materiali

AttoMateriali(Codice, Data, Fonderia, Fornitore)

Bombola

Bombola(Codice, Capacità, Scadenza, Stato, Prezzo, Gas)

Gas

Gas(Codice, Nome, Purezza)

Metallo

Metallo(Codice, Nome, Quantità, Resa)

Telefono Int

TelefonoInt(Numero, Intermediario)

Telefono For

TelefonoFor(Numero, Fornitore)

Telefono Fon

TelefonoFon(Numero, Fonderia)

Telefono Aff

TelefonoAff(Numero, Affittuario)

Telefono Tra

TelefonoTra(Numero, Trasportatore)

Fax Int

FaxInt(Numero, Intermediario)

Fax For

FaxFor(Numero, Fornitore)

Fax Fon

FaxFon(Numero, Fonderia)

Fax Aff

FaxAff(Numero, Affittuario)

Fax Tra

FaxTra(Numero, Trasportatore)

Intermediazione

Intermediazione(Intermediario, Fonderia, Percentuale)

Elencazione bombole

ElencazioneBom(Bombola, AttoAffitto)



Elencazione metalli

ElencazioneMet(Metallo, AttoMateriali, Quantità, Prezzo)

Traduzione

Vincoli di riferimento

Intermediario(CodPar, Nominativo, Email, NCiv, Via, Cap)

-

Fonderia(CodPar, Nominativo, Email, NCiv, Via, Cap)

-

Fornitore(CodPar, Nominativo, Email, NCiv, Via, Cap)

-

Affittuario(CodPar, Nominativo, Email, NCiv, Via, Cap)

-

Trasportatore(CodPar, Nominativo, Email, NCiv, Via, Cap)

-

AttoAffitto(Codice, Data, Affittuario)

Affittuario à Affittuario.CodPar

AttoTrasporto(Codice, Data, Importo, Trasportatore, AttoMateriali)

Trasportatore à Trasportatore.CodPar

AttoMateriali à AttoMateriali.Codice

AttoMateriali(Codice, Data, Fonderia, Fornitore)

Fonderia à Fonderia.CodPar

Fornitore à Fornitore.CodPar

Bombola(Codice, Capacità, Scadenza, Stato, Prezzo, Gas)

Gas à Gas.Codice

Gas(Codice, Nome, Purezza)

-

Metallo(Codice, Nome, Quantità, Resa)

-

TelefonoInt(Numero, Intermediario)

Intermediario à Intermediario.CodPar

TelefonoFor(Numero, Fornitore)

Fornitore à Fornitore.CodPar

TelefonoFon(Numero, Fonderia)

Fonderia à Fonderia.CodPar

TelefonoAff(Numero, Affittuario)

Affittuario à Affittuario.CodPar

TelefonoTra(Numero, Trasportatore)

Trasportatore à Trasportatore.CodPar

FaxInt(Numero, Intermediario)

Intermediario à Intermediario.CodPar

FaxFor(Numero, Fornitore)

Fornitore à Fornitore.CodPar

FaxFon(Numero, Fonderia)

Fonderia à Fonderia.CodPar

FaxAff(Numero, Affittuario)

Affittuario à Affittuario.CodPar

FaxTra(Numero, Trasportatore)

Trasportatore à Trasportatore.CodPar

Intermediazione(Intermediario, Fonderia, Percentuale)

Intermediario à Intermediario.CodPar

Fonderia à Fonderia.CodPar

ElencazioneBom(Bombola, AttoAffitto)

Bombola à Bombola.Codice

AttoAffitto à AttoAffitto.Codice

ElencazioneMet(Metallo, AttoMateriali, Quantità, Prezzo)

Metallo à Metallo.Codice

AttoMateriali à AttoMateriali.Codice

4.     Codifica SQL

4a.  Definizione dello schema

create table intermediario(

   codpar char(20) not null primary key,

   nominativo char(30) not null,

   email char(30),

   nciv char(5),

   via char(40),

   cap numeric(5)

)

create table fonderia(

   codpar char(20) not null primary key,

   nominativo char(30) not null,

   email char(30),

   nciv char(5),

   via char(40),

   cap numeric(5)

)

create table fornitore(

   codpar char(20) not null primary key,

   nominativo char(30) not null,

   email char(30),

   nciv char(5),

   via char(40),

   cap numeric(5)

)

create table affittuario(

   codpar char(20) not null primary key,

   nominativo char(30) not null,

   email char(30),

   nciv char(5),

   via char(40),

   cap numeric(5)

)

create table trasportatore(

   codpar char(20) not null primary key,

   nominativo char(30) not null,

   email char(30),

   nciv char(5),

   via char(40),

   cap numeric(5)

)

create table attoAffitto(

   codice char(10) not null primary key,

   data date not null,

   affittuario char(20) references affittuario(codpar)

)

create table attoMateriali(

   codice char(10) not null primary key,

   data date not null,

   fonderia char(20) references fonderia(codpar),

   fornitore char(20) references fornitore(codpar),

check((fonderia is null and fornitore is not null)or(fonderia is not null and fornitore is null))

)

create table attoTrasporto(

   codice char(10) not null primary key,

   data date not null,

   importo numeric(8) not null,

   trasportatore char(20) not null references trasportatore(codpar),

   attoMateriali char(10) not null references attoMateriali(codice)

)

create table telefonoInt(

   numero numeric(18) not null primary key,

   intermediario char(20) not null references intermediario(codpar)

)

create table faxInt(

   numero numeric(18) not null primary key,

   intermediario char(20) not null references intermediario(codpar)

)

create table faxFor(

   numero numeric(18) not null primary key,

   fornitore char(20) not null references fornitore(codpar)

)

create table telefonoFor(

   numero numeric(18) not null primary key,

   fornitore char(20) not null references fornitore(codpar)

)

create table telefonoFon(

   numero numeric(18) not null primary key,

   fonderia char(20) not null references fonderia(codpar)

)

create table faxFon(

   numero numeric(18) not null primary key,

   fonderia char(20) not null references fonderia(codpar)

)

create table faxAff(

   numero numeric(18) not null primary key,

   affittuario char(20) not null references affittuario(codpar)

)

create table telefonoAff(

   numero numeric(18) not null primary key,

   affittuario char(20) not null references affittuario(codpar)

)

create table telefonoTra(

   numero numeric(18) not null primary key,

   trasportatore char(20) not null references trasportatore(codpar)

)

create table faxTra(

   numero numeric(18) not null primary key,

   trasportatore char(20) not null references trasportatore(codpar)

)

create table gas(

   codice char(10) not null primary key,

   nome char(15) not null,

   purezza numeric(3) not null,

   check(purezza>=0 and purezza<=100)

)

create table bombola(

   codice char(10) not null primary key,

   capacita numeric(3) not null,

   check(capacita>0),

   scadenza date not null,

   stato char(15),

   check(stato='vuota' or stato='disponibile' or stato='in affitto'),

   prezzo numeric(7),

   check(prezzo>0),

   gas char(10) not null references gas(codice)

)

create table metallo(

   codice char(10) not null primary key,

   nome char(15) not null,

   quantita numeric(6) not null,

   check(quantita>=0),

   resa numeric(3),

   check(resa>=0 and resa<=100)

)

create table intermediazione(

   intermediario char(20) not null references intermediario(codpar),

   fonderia char(20) not null references fonderia(codpar),

   primary key(intermediario, fonderia),

   percentuale numeric(3),

   check(percentuale>=0 and percentuale<=100)

)

create table elencazioneBom(

   bombola char(10) not null references bombola(codice),

   attoAffitto char(10) not null references attoAffitto(codice),

   primary key(bombola, attoAffitto)

)

create table elencazioneMet(

   metallo char(10) not null references metallo(codice),

   attoMateriali char(10) not null references attoMateriali(codice),

   primary key(metallo, attoMateriali),

   quantita numeric(6) not null,

   check(quantita>0),

   prezzo numeric(8) not null,

   check(prezzo>0)

)

4c.   Codifica delle operazioni

1.    Inserire una nuova fonderia (a regime in media 1 volta all'anno):

insert into fonderia(codpar, nominativo, email, nciv, via, cap) values(.)

Per ogni telefono e fax:

insert into telefonoFon(numero, fonderia) values(.)

insert into faxFon(numero, fonderia) values(.)

2.    Inserire un nuovo trasportatore (a regime in media 1 volta all'anno)

insert into trasportatore(codpar, nominativo, email, nciv, via, cap) values(.)

Per ogni telefono e fax:

insert into telefonoTra(numero, trasportatore) values(.)

insert into faxTra(numero, trasportatore) values(.)

3.    Inserire un nuovo fornitore (a regime in media 10 volte all'anno)

insert into fornitore(codpar, nominativo, email, nciv, via, cap) values(.)

Per ogni telefono e fax:

insert into telefonoFor(numero, fornitore) values(.)

insert into faxFor(numero, fornitore) values(.)

4.    Inserire un nuovo affittuario (a regime in media 2 volte all'anno)

insert into affittuario(codpar, nominativo, email, nciv, via, cap) values(.)

Per ogni telefono e fax:

insert into telefonoAff(numero, affittuario) values(.)

insert into faxAff(numero, affittuario) values(.)

5.    Inserire un nuovo intermediario (a regime in media 5 volte all'anno)

insert into intermediario(codpar, nominativo, email, nciv, via, cap) values(.)

insert into intermediazione(intermediario, fonderia, percentuale) values(.)

Per ogni telefono e fax:

insert into telefonoInt(numero, intermediario) values(.)

insert into faxInt(numero, intermediario) values(.)

6.    Stipulare un nuovo atto di vendita (a regime in media 2 volte al mese)

insert into attoMateriali(codice, data, fonderia, fornitore)

values(., null)

per ogni metallo:

insert into elencazioneMet(metallo, attoMateriali, quantita, prezzo)

values(., <costo>)

update metallo set quantita = quantita - <quantità venduta>

where codice = <codice metallo>

7.    Stipulare un nuovo atto di acquisto (a regime in media 2 volte al giorno)

insert into attoMateriali(codice, data, fonderia, fornitore)

values(., null, .)

Per ogni metallo:

insert into elencazioneMet(metallo, attoMateriali, quantita, prezzo) values(., <costo>)

update metallo set quantita = quantita - <quantità venduta>

where codice = <codice metallo>

8.    Stipulare un nuovo atto di affitto (a regime in media 10 volte al mese)

insert into attoAffitto(codice, data, affittuario) values(.)

Per ogni bombola:

insert into elencazioneBom(bombola, attoAffitto) values(.)

update bombola set stato='in affitto' where codice = <codice bombola>

9.    Stipulare un nuovo atto di trasporto (in media 1 volta al mese)

insert into attoTrasporto(codice, data, importo, trasportatore, attoMateriali) values(.)

10. Calcolare per il mese corrente il totale delle entrate e delle uscite (in media 1 volta al mese)

create view bilancio(valore) as(

   select -importo

   from attoTrasporto

where month(data)=month(current date) and year(data)=year(current date)

  

   union all

   select B.prezzo

from (attoAffitto A join elencazioneBom E on E.attoAffitto=A.codice)

   join bombola B on B.codice=E.bombola

where month(A.data)=month(current date) and year(A.data)=year(current date)

  

   union all

   select E.prezzo

from attoMateriali A join elencazioneMet E on A.codice=E.attoMateriali

where month(A.data)=month(current date) and year(A.data)=year(current date)and A.fornitore is null

  

union all

   select -E.prezzo

from attoMateriali A join elencazioneMet E on A.codice=E.attoMateriali

where month(A.data)=month(current date) and year(A.data)=year(current date)and A.fonderia is null

)

select -sum(valore)as TotUscite

from bilancio

where valore<0

select sum(valore)as TotEntrate

from bilancio

where valore>0

11. Visualizzare il numero di bombole vuote (in media 5 volte al mese)

select count(*) from bombola where stato='vuota'

12. Visualizzare il numero di bombole non affittate (a regime in media 1 volta al mese)

select count(*) from bombola where stato<>'in affitto'

13. Visualizzare le bombole scadute (a regime in media 1 volte al mese)

select codice from bombola where scadenza< <data attuale>

14. Visualizzare gli affittuari che hanno in dotazione bombole da più di un certo periodo (a regime in media 1 volta al mese)

select Af.codpar, max(At.data) as Data

from affittuario Af join attoAffitto At on Af.codpar=At.affittuario

where data<= <data riferimento> group by codpar

15. Visualizzare gli atti che hanno associato un atto di trasporto (a regime in media 1 volte al mese)

select distinct M.codice from attoMateriali M join attoTrasporto T on M.codice=T.attoMateriali

16. Visualizzare tutti i metalli e relative quantità in magazzino (1 volta al giorno)

select codice, nome, quantita from metallo







Privacy

Articolo informazione


Hits: 1697
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI

E 'stato utile?



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2019