• Non ci sono risultati.

4T - MODULO 1

N/A
N/A
Protected

Academic year: 2022

Condividi "4T - MODULO 1"

Copied!
19
0
0

Testo completo

(1)

Pagina 1 di 1

Brescianet

Sito didattico - Prof. Sechi Marco

https://lnx.brescianet.com/ScuolaForum2020/

4T - MODULO 1

https://lnx.brescianet.com/ScuolaForum2020/viewtopic.php?f=3&t=7

4T - MODULO 1

da e01692

Appunti estemporanei

17/09/2020 - 4T - MODULO 1

da e01692

INSERIRE SUL VS PC ANYDESK + ACCESS/OPENBASE www.anydesk.com

DATABASE => un archivio

anche come prg che gestisce archivi

DATABASE STRUTTURATI => I DATI SONO COLLEGATI => esempio dato uno studente so subito i suoi voti BIG DATA => DATABASE NON STRUTTURATI => I DATI RISULTANO NON CORRELATI

Programmi DB capaci di gestire archivi sono:

1) Access (office 365) => menu esegui => scrivo msaccess 2) OPenBase => menu esegui => scrivo sbase

(devo prima installare OPENOFFICE e scaricarlo sul PC ==> https://www.openoffice.org/it/download/

3) MySql => è un db server => prg che rappresentano contenitori di db immensi incapaci di fornire un'interfaccia grafica (non richiesto)

Per eseguire il menu esegui premere il tasto bandierina+r (run) Per andare subito sul vostro desktop premere il tasto bandierina+d Access (WIN) e Openbase (WIN+MAC+LINUX)

Openbase è freeware => gratuito ed anche opensource (non richiesto)

Estensione dei files permette al sistema operativo di capire quale applicazione usare per aprire un documento.

In access i documenti creati da tale applicativo hanno un'estensione .accdb In OpenBase i documenti creati da tale applicativo hanno un'estensione .odb

Inviato: 17/09/2020, 9:53

Inviato: 17/09/2020, 9:53

(2)

Le 6 funzioni di access mostrano le 6 modalità operative dei DB

TABELLE => definizione della struttura dei dati e per un inserimento molto primitivo dei dati stessi QUERY => funzione che consente al db di estrarre i dati

4F - 14/09/2020 4O - 15/09/2020 ---

Quando i dati non sono scritti seguendo delle regole la ricerca dei dati potrebbe essere difficile oppure fornire risultati errati.

Le query usano un linguaggi di interrogazione conosciuto con l'acronimo SQL.

Esempio (sarà visto nel 2° modulo) SELECT Nominativo

FROM Studenti WHERE Classe="4t"

MASCHERE O FORMS => propongono un'interfaccia semplificata che guida l'utente nell'inserimento dei dati e consente un inserimento uniforme dei dati => quindi non posso scrivere 4T oppure IVT oppure 4°T oppure 4 T ma solo una di esse

REPORT => meccanismo per fornire una rendicontazione sui dati inseriti a sola lettura

MACRO => modalità di programmazione visiva che può essere usata da coloro che non sanno programmare ma hanno comunque una certa attitudine alla pianificazioni

MODULO => scrivo i prg con un linguaggio di programmazione (VBA) (spiegata esercitazione facoltativa VBA)

24/09/2020: 4T - MODULO 1

da e01692

www.anydesk.com

https://meet.google.com/ota-ubcx-yxe

L'estensione è la parte finale del nome (dopo l'ultimo punto). Usato dal sistemA operativo per riconosce l'applicazione da usare per aprire quel file.

Estensione dei file di access .accdb (mdb vecchie versioni) Estensione dei file di openbase .odb

DB => contenitore dati caratterizzato da tabelle

Inviato: 24/09/2020, 9:53

(3)

Tabelle => contenitore di dati omogenei

campi => caratteristiche che contraddistinguono gli elementi di una tabella (esempio per la tabella studente il cognome, nome, mail, classe ect.) struttura tabella => insieme delle caratteristiche che descrivono gli elementi di una tabella.

(insieme dei campi)

record => singola entità contenuta in una tabella (esempio il singolo studente) QUESITO => termini equivalenti tra spreadsheet e DB

Cartella di lavoro (nome x i file prodotti con gli spreadsheet) - Database o archivio Spreadsheet - DB

COlonne => campi Righe => i record

Insieme delle intestazioni nel mio foglio di lavoro => struttura tabella Foglio di lavoro - Tabelle.

I db monolitici (monotabellari) possono essere gestiti perfettamente con XLS Relazioni => collegamenti logici tra le diverse tabelle.

Un db che gestisce le relazioni si dice db relazionale. Excel non è in grado di gestire in modo semplice le relazioni

QUESITO => quali sono i limiti degli spreadsheet rispetto ai DB:

1) non gestiscono le relazioni 2) non gestiscono il tipo di dato

3) non hanno strutture dati che velocizzano le ricerche (indici) Spiegato come creare una tabella in access 2007

4F 21/09/2020 - riprendere dal contatore STRUTTURAZIONE DEL DB:

1° step => definizione campo chiave e campo significativo

Campo significativo =>campo che consente all'utente umano di riconoscere il singolo record Tale campo è soggetto a ricerche e può avere casi di omonimia.

Campo chiave =>campo che consente al computer di riconoscere il singolo record Tale campo è soggetto a ricerche e non può avere casi di omonimia.

TIPO CONTATORE => usato per i campi chiave quando la realtà che sto progettando non propone chiavi eleggibili di facile utilizzo. => permette una numerazione univoca

CHIAVE ELEGGIBILE => caratteristica che non ha repliche all'interno della realtà che sto descrivendo (univoca)

(4)

4O - 22/09/2020

Database relazionale => db con + tabelle dotato di relazioni

Scelgo la chiave primaria (o campo chiave) tra le diverse chiavi eleggibili che la realtà che sto analizzando mi propone. La chiave sarà quella che risulta + comoda ed adatta ai ns scopi.

Esempi Auto

Chiavi eleggibili => nr di serie , targa campo significativo => modello+colore campo chiave => targa (è quella + comoda) Libri (a casa mia)

Chiavi eleggibili => codice isbn, nr che ho messo come etichetta sulla costina del libro campo significativo => titolo

campo chiave => nr che ho messo come etichetta sulla costina del libro (è quella + comoda) Libri (biblioteca)

Chiavi eleggibili => nr che ho messo come etichetta sulla costina del libro campo significativo => titolo

campo chiave => nr che ho messo come etichetta sulla costina del libro scritta con un codice a barre Studenti (per la ns scuola)

Chiavi eleggibili => codice fiscale e la matricola campo significativo => Nominativo

campo chiave => matricola (è quella + comoda) studenti (per il ministero)

Chiavi eleggibili => codice fiscale e la matricola campo significativo => Nominativo

campo chiave => codice fiscale

Chiave multipla => combinazione di campi (esempio NOminativo + data di nascita+ luogo di nascita) che risulta univoca all'interno di una tabella. Sono complessi da gestire e in tutto il corso noi non le useremo

Campo parlante => è un campo che fornisce un gruppo di info relative al record abbinato Esempio il codice fiscale => nominativo, data di nascita, sesso il luogo di nascita.

Il contatore viene usato quando al realtà che sto descrivendo non propone chiavi eleggibili.

(5)

01/10/2020: 4T - MODULO 1

da e01692

Il tipo contatore con nuovi valori casuale va usato quando voglio occultare la cardinalità (numerosità) di un archivio

INDICE => struttura dati che velocizza le ricerche e gli ordinamenti ma rallenta gli inserimenti.

Il rallentamento è dovuto all'aggiornamento degli indici 4O 29/09/2020

Vediamo perchè gli indici velocizzano le ricerche

Ricerca sequenziale => confronto un record dopo l'altro fino a quando lo trovo oppure capisco che non esiste. Posso applicare questo metodo sempre anche se l'archivio non è ordinato.

Bonta' dell'algoritmo => valuto il nr di confronti (massimo o in media) DOMANDA => dimostra il nr medio di confronti nel sequenziale ipotizzo una tabella con N record ed inizio la ricerca sequenziale 1° caso => becco il record al 1° confronto => 1 solo confronto 2° caso => becco il record al 2° confronto => 2 confronti 3° caso => becco il record al 3° confronto => 3 confronti ....

k° caso => becco il record al k° confronto => k confronti ...

N° caso => becco il record al N° confronto oppure il record cercato non esiste => n confronti

1+2+3+...+n-1+n => nr totale di confronti in tutte le casistiche nr medio di confronti è (1+2+3+...+n-1+n)/n

per la formula di gauss (1+2+3+...+n-1+n) = n(n+1)/2

nr medio di confronti è n(n+1)/2n => (n+1)/2 => o(n) questo simbolo indica che il nr di confronti medio cresce in modo lineare rispetto al nr di record RICERCA BINARIA O DICOTOMICA => l'elenco deve essere ordinato

ALGORITMO :

Confronto il valore cercato X con l'elemento mediano M.

Inviato: 01/10/2020, 9:55

(6)

Se M = X significa che ho terminato la ricerca

Se M > X significa che la sequenza a dx di M può essere eliminata (compreso M) Se M < X significa che la sequenza a sx di M può essere eliminata (compreso M) ripeto l'algoritmo sulla sottosequenza che è rimasta

ad ogni step riduco la cardinalità (numerosità) dell'insieme di N/2 dopo k ricerche rimangono N/2^k

k è il numero massimo di confronti se N/2^k=1 N=2^k

log_2(N)=log_2(2^k)=k

quindi il nr di confronti massimo nel dicotomico è log_2(N) dove N è il nr di record In un archivio di 1000000 di record mi bastano solo 20 confronti.

Indice => ordina => posso usare dicotomico => veloci ricerche

08/10/2020 - 4T - MODULO 1

da e01692

Gli algoritmi di ricerca seguono un nr di confronti massimo pari a log_m(N) dove m è legato all'algoritmo applicato (con il dicotomico m=2) access usa l'algoritmo di ricerca b-tree

Indicizzo i campi che sono soggetti a ricerche.

Il campo chiave e significativo sono naturalmente soggetti a questa pratica per cui vanno indicizzati di default (il primo senza e il secondo dipende ma generalmente è con duplicati)

Il formato è un modo per visualizzare un dato in maniera differente da come è stato registrato ma non ne altera assolutamente il contenuto Qualsiasi sequenza che non ha un significato di calcolo o cronologico va scritta come TIPO TESTO

Quando metto richiesto => quando quell'info è obbligatoria. Nel campo significativo va impostata. Nel campo chiave se non si tratta di un contatore 4F 05/10/2020

Se non compilo un campo con richiesto a SI il record non verrà salvato

VALORE PREDEFINITO => si usa quando quel campo assume QUASI sempre quel valore.

Un campo che in una tabella assume sempre lo stesso valore non va implementato.

Inviato: 08/10/2020, 9:51

(7)

visto maschere di formato per il testo richieste sono > e <

MASCHERA DI INPUT (input mask - IM) => meccanismo volto a uniformare l'input degli utenti (a garanzia di ricerche corrette)

00/00/0000 => devo inserire 8 numeri obbligatoriamente (lo / è un riempitivo) - probabilmente una data con il secolo nell'anno 00/00/00 devo inserire 6 numeri (lo / è un riempitivo) - probabilmente una data senza il secolo nell'anno

90/90/0000 => con questa IM ammetto scritture del tipo 01/01/2020 e 1/1/2020 L000 => ammetto codifiche come A001 (le cifre e la 1° lettera vanno messe!) L099 => ammetto codifiche come A1 e a001

L999 => ammetto codifiche come A, Z1 e W001 ==> non è permesso scrivere 9W oppure W000110 00L?? => => ammetto codifiche come 67AAA e 67A => non è permesso scrivere 67AAAA

oppure 678A

Esempio di IM per il campo classe

0L??? => quindi potrò scrivere 4O, 4Oapp ma non 4 O, IVO 4°O ...

4O 6/10/2020

TIPO NUMERICO => quando uso valori su cui applicherò dei calcoli dimensione del campo

byte => è fatto con 8 bit => 2^8 combinazioni => ovvero un numero intero da 0 a 255

intero=> è fatto con 16 bit e gestisce il segno => +/-2^15 combinazioni = numeri interi +/-32000

intero lungo => è fatto con 32 bit e gestisce il segno => +/-2^31 combinazioni = numeri interi +/-2.000.000.000 precisione singola (single) => nr con la , non molto preciso => valori piccoli e piccola precisione - 4 byte

precisione doppia (double) => nr con la , molto preciso => valori grandi e grande precisione (calcolo scientifico) - 8 byte

Se nel testo dell'esercizio descrivo una caratteristica che richiede valori interi molto elevati (superiori al range dell'intero lungo!) allora userò il tipo double

0,00 => visualizzo il nr con 2 cifre decimali eventualmente arrotondate per difetto se la parte troncata è < 5 per eccesso altrimenti.

VALORE => COSA VEDO 10,119 => 10,12 10,113 => 10,11 10,1139999 => 10,11 10,15 => ?

10,4499999=> 10,45 0,000

VALORE => COSA VEDO 10,119 => 10,119 10,1134 => 10,113

(8)

10,1136 => 10,114 0

VALORE => COSA VEDO 10,119 => 10

10,9 => 11

15/10/2020: 4T - MODULO 1

da e01692

#,00

VALORE => COSA VEDO 10,11944 => 10,12 0,11944 => ,12

#.##0,00

VALORE => COSA VEDO 10,11944 => 10,12 1010,11344 => 1.010,13

#.##0

VALORE => COSA VEDO 10000000 => 10.000.000

\E\u\r\o #.##0,00 oppure

"Euro "#.##0,00

VALIDO SE

Esempi di controllo sugli esiti delle verifiche

<=10 oppure <11 se il campo è byte

>=1 and <=10 oppure

>0 and <11 (è un tipo byte!) Messaggio di errore

i voti di condotta sono interi da 1 a 10 1101 =

CODIFICA DELL'INFORMAZIONE:

Inviato: 15/10/2020, 9:54

(9)

I tipi nativi sono i tipi che il calcolatore conosce a priori. Sono i numeri e il testo (sequenze di char ASCII). I tipi testuali vengono evidenziati con i "

Ogni tipo nativo è corredato da operatori nativi Tipo numerico => +, -, * / ^ => 1+2=3

Tipo testuale => & (concatenazione) => "1" + "2" => "12"

Operazioni d'ordine native => quelle che il pc applica sul tipo nativo per stabilire un ordine 123 > 9

"123" < "9" => vera

Relazioni d'ordine inattese => ordinamenti inattesi => ricerche impossibili.

4F 12/10/2020 => riprendere dagli obiettivi della rappresentazione e dalla rappresentazione del tempo

3 obiettivi che devo perseguire per codificare tipi non nativi esempio le date, il colore, ...

1) leggibilità umana

2) con l'operatore nativo applicato alla codifica del non nativo cerco di ottenere l'emulazione dell'operatore non nativo ad esempio

codifica(oggi)+1 => codifica(domani) codifica(oggi)&"1" => codifica(domani)

3) l'ordine del tipo nativo utilizzato per la codifica deve coincidere con quello non nativo.

se data1 > data2 (dal punto di vista umano) allora codifica(dato1) > codifica(dato2)

Codifica del colore (tipo di dato non nativo) con il tipo nativo numerico 11111111 00000000 00000000 => rosso +

00000000 11111111 00000000 => verde ---

11111111 11111111 00000000 => giallo

questa codifica emula il comportamento additivo dei fasci luminosi infatti la sintesi additiva del colore produce il giallo se sommo i 2 colori rosso e verde. Il computer ottiene il medesimo risultato se usa l'operatore nativo di somma sulla codifica del colore

(10)

1 codifica con tipi numerici (ggmmaaaa) 15102020 uso la funzione

gg*1000000 + mm*10000+aaaa

codificA(12/10/2000) => 12102000 1) leggibilità => ok

2) compatibilità operatori nativi con quelli del tipo codificato => no codificA(12/10/2000)+1 <> codificA(13/10/2000)

12102000+1 => codifica del gg dell'anno dopo!

3) compatibilità operatori d'ordine con la relazione d'ordine attesa sul tipo codificato:

12102000 < 13111999 (cronologicamente assurda! 12/10/2000 è successiva a 13/10/1999)

2 codifica con tipi numerici uso la funzione

aaaa*10000 + mm*100+gg codificA(12/10/2000) => 20001012 (aaaammgg) 1) leggibilità => ok

2) compatibilità operatori nativi con quelli del tipo codificato => no codificA(12/10/2000)+1 = codificA(13/10/2000)

20001012+1 => 20001013 codifica del gg dopo ma non sempre!

codificA(31/10/2000)+1 = codificA(01/11/2000) 20001031+1 => 20001032 codifica assurda!

3) compatibilità operatori d'ordine con la relazione d'ordine attesa sul tipo codificato:

20001012 > 19991113 (cronologicamente vera! 12/10/2000 è successiva a 13/10/1999)

4O 13/10/2020

3 codifica con tipi testuale ("ggmmaaaa") "15102020"

uso la funzione

CODIFICA(GG/mm/AAAA) => "GGMMAAAA"

codificA(12/10/2000) => "12102000"

1) leggibilità => ok

2) compatibilità operatori nativi con quelli del tipo codificato => no codificA(12/10/2000) & "1" <> codificA(13/10/2000)

"12102000" & "1" => codifica assurda "121020001"

(11)

3) compatibilità operatori d'ordine con la relazione d'ordine attesa sul tipo codificato:

"12102000" < "13111999" (cronologicamente assurda! 12/10/2000 è successiva a 13/10/1999) 4 codifica con tipi testuale ("aaaammgg") "20201015"

codificA(12/10/2000) => "20001012"

1) leggibilità => ok

2) compatibilità operatori nativi con quelli del tipo codificato => no codificA(12/10/2000) & "1" <> codificA(13/10/2000)

"20001012" & "1" => codifica assurda "200010121"

3) compatibilità operatori d'ordine con la relazione d'ordine attesa sul tipo codificato: ok

"20001012" < "19991113" (cronologicamente vera! 12/10/2000 è successiva a 13/10/1999) 5 codifica con tipo numerico

codifica(data) => nr gg rispetto ad una data di riferimento

codifica(15/10/2020) => 44119 (se la data di riferimento è 1/1/1900)

1) leggibilità (No ma se implemento del sw [maschera di formato] riesco a renderla umanamente leggibile 2) compatibilità operatori nativi con quelli del tipo codificato => si

codificA(15/10/2020) -1 = codificA(14/10/2020) => si infatti

codificA(15/10/2020) -1 = 44119 -1 = 44118 = codificA(14/10/2020)

3) compatibilità operatori d'ordine con la relazione d'ordine attesa sul tipo codificato: ok

Infatti una data1 > data2 ha una codifica in gg maggiore della data precedente ovvero codifica(Data1)>codifica(Data2)

RAPPRESENTAZIONE DELLE ORE IN ACCESS/ EXCEL / PC

frazione di giorno => quindi un valore tra 0 e 1 (1 non è mai raggiunto) 12:00 0,5

06:00 0,25

12:00+06:00 = 0,5+0,25 = 0,75 = 18:00 => l'operatore algebrico di somma (nativo)emula un operatore di somma oraria ipotetico se ora1<ora2 => codifica(ora1) < codifica(ora2) => quindi la relazione d'ordine nativa numerica coincide con quella oraria.

Algebra booleana

(12)

OPERATORE A AND B vero and vero =vero vero and falso=falso vero and falso=falso falso and falso =falso

Se codifico il concetto del vero e del falso con 0 e 1 1 => vero

0 => falso

ottengo che l'operatore * (moltiplica) emula l'operatore logico AND 1*1=1

1*0=0 0*1=0 0*0=0

22/10/2020: 4T - MODULO 1

da e01692

OPERATORE A OR B f(a,b) =A+B-A*B vero OR vero =vero

vero OR falso=vero falso OR vero=vero falso OR falso =falso

L'espressione A+B-A*B emula l'or 1+1-1*1=1

1+0-1*0=1 0+1-0*1=1 0+0-0*0=0

OPERATORE NOT A NOT VERO => falso NOT FALSO => VERO L'espressione emula il NOT 1-A

4F 19/10/2020

"ciao" => testo 123 => numero

Inviato: 22/10/2020, 9:51

(13)

#12/31/2020# => una data sono le 09.06

"h:nn" => 9:06

"h:n"=> 9:6

"hh:nn" => 09:06 Esempi

Valore -> maschera di formato => cosa vedo 1 -> "aaaa" => 1899

1 -> "mmmm" => dicembre 1 -> "gg" => 31

1 -> "gg/mm/aaaa" => 31/12/1899

1 -> "gggg, g mmmm aaaa" => "domenica, 31 dicembre 1899"

#12/31/1899# -> "0" => 1

=Date() nel valore predefinito inserisce la data di oggi nel campo corrispondente

=now() nel valore predefinito inserisce la data e l'ora di adesso nel campo corrispondente

Il tipo MEMO (o testo lungo) non aveva l'indice nella versione 97. L'indice su un campo memo è meno performante rispetto a quello su un campo di tipo testo (breve).

BOOLEANO => SI/NO

devo usarlo in tutte le situazioni caratterizzati da 2 stati PROMOSSO => SI/NO

FEMMINA => SI/NO

GENERE => pur essendo duale la valorizzazione non va bene SI/NO perchè il nome del campo non si abbina al valore assegnato.

Indicizzare un campo booleano non è un problema (anche se non preciso che è soggetto a ricerche) poichè se inserisco un campo di questo tipo è perchè voglio separare in 2 gruppi il contenuto della tabella (per cui probabilmente effettuo una ricerca!)

CAMPO VALUTA => usato per valorizzare dati monetari. gestisce al massimo 4 cifre decimali (virgola fissa)

OLE => meccANismo che consente ad una applicazione di sfruttare funzioni presenti in altri applicativi (esempio un prg non sa fare i grafici => sfrutta una connessione OLE con Excel). Quando copio un oggetto OLE in una maschera di access creo una connessione verso l'applicazione che ha creato quell'oggetto.

Pertanto facendo doppio click sull'oggetto incollato appare il menu dell'applicazione che ha generato quell'oggetto.

4O - 20/12/2020 DIFETTI DI OLE:

1) se nel pc di destinazione non ho l'applicazione che ha generato quell'oggetto non posso vederne il contenuto (questo perchè non è access che gestisce la visualizzazione)

2) se inserisco come oggetti ole ad esempio dei film il db cresce in dimensioni aumentando la probabilità di errori che possono portare alla perdita dell'archivio 3) è un meccanismo tipico di windows che non esiste in altri ambienti

(14)

Il vantaggio di ole è che al suo interno salva sostanzialmente un file nel formato nativo dell'applicazione che ha creato quell'oggetto.

Formato nativo => formato di salvataggio dei dati in un file usato di default da una applicazione. (xlsx per esempio per excel) Ho il valore 0,5 e la format mask è "hh:nn" => cosa vedo?

Indicizzare campi booleani senza alcuna specifica di ricerca è comunque corretto. Vengono usati per suddividere un insieme in 2 gruppi e pertanto è realistico immaginare che vengano fatte delle estrazioni in tal senso.

TIPO COLLEGAMENTO IPERTestuale => è UN CAMPO TESTUALE che viene usato in alternativa a ole quando i difetti indicati per ole diventano reali

Tipo allegato => usato in alternativa a OLE quando voglio che in qualche modo i file vengano conservati in un archivio separato dal file accdb. Posso avere n elementi allegati

GESTIONE ELENCHI

0) seleziono il campo dove voglio costruire l'elenco 1) Pannello ricerca in fianco al pannello "Generale"

2) Cambiare "tipo origine riga" in "Elenco valori"

3) compilare un elenco di valori separandoli con ;. Ad esempio:

1;Promosso;2;Bocciato;3;Rimandato 4) Indico il nr di colonne

5) occulto la 1° colonna con larghezza colonne

6) colonna associata => nr colonna dove pesco il valore da salvare in archivio

Re: 4T - MODULO 1

da e01692

--- TEST REMOTI (detto a: 4T)

COMPITO 1 => preparare la postazione per la prossima lezione.

fornire 10 nomi per le 3 sessioni => su file di EXCEL o OpenCalc

1 sessione ho 8 persone le 2 in + si aggiungono alle 10 della successiva.

4T Inizio orali 19/11

Pubblicazione esercitazione estiva => toglie 2 domande orali Esercitazione 1 => entro le 24.00 del 18/11

LINK PROTOCOLLO TEST TELEMATICI

http://www.brescianet.com/TEST.Teledidattica/help.teleappello.html ---

Quando imposto un elenco a discesa su un campo questo va indicizzato anche se nel testo non avete alcuna indicazione che evidenzia una possibile ricerca. Se

Inviato: 29/10/2020, 10:59

(15)

costruisco un campo con questa caratteristica è perchè voglio un input vincolato preciso che probabilmente mi permetterà di fare ricerche mirate su quella caratteristica (campo).

ASSEGNATA Eser. 1 Monolitici per dopo il completamento della parte relazionale

http://www.brescianet.com/appunti/db/esercizi/eser_acc1.htm (assegnato a 4O e 4T) DB RELAZIONALI

Ridondanza => replica degli stessi dati all'interno di un archivio Fatto esempio biblioteca.

Svolgere su paint il seguente esercizio

Esercizio: Costruire un database che consenta di registrare tutti i propri parenti di ordine e grado di parentela (ovvero il proprio albero genealogico). Per ogni persona prevedo al massimo un solo coniuge

4O 27/10/2020

TABELLE MASTER => che non necessitano di ulteriori tabelle (possono esistere anche da sole!)

TABELLE SLAVE => quelle che definiscono la relazione => non possono esistere da sole ma necessitano delle tabelle master per recuperare i dati mancanti RELAZIONE 1-1

E' generata quando ad un record di una tabella ne corrisponde uno solo. Solitamente le motivazioni sono 1) Privacy

2) Ottimizzazione

La relazione 1-1 nasce dalla scissione di una tabella unica. Se ho queste 2 motivazioni trasformo una tabella monolitica in uno schema relazionale 1-1 Viceversa se ho una relazione 1-1 e non ho quelle 2 motivazioni => allora posso fondere le 2 tabelle in una

La tabella master è quella che ha il campo significativo RELAZIONI 1-N

Va usata quando una caratteristica della tabella master puo' assumere + valori.

Una caratteristica che assume un unico valore diventa un campo nella tabella master (natoil, nominativo).

Le assenze di uno studente sono una caratteristica che assume + valori

Date 2 tabelle A e B se ad ogni elemento di A corrispondono N elementi di B ed a ogni elemento di B corrisponde un solo elemento di A allora il modello relazionale da usare è quello 1->N

RELAZIONI N-N

Date 2 tabelle A e B se ad ogni elemento di A corrispondono N elementi di B ed a ogni elemento di B corrispondono N elementi di A allora il modello relazionale da usare è quello N->N

Se ho una relazione N-N tra A e B A <-> B

(16)

La sua implementazione è una doppia relazione 1->N verso una tabella di relazione C A -> C <- B

ESEMPIO BIBLIOTECA

1 Libro -> N utenti che l'hanno richiesto in prestito 1 utente -> N libri che ha chiesto in prestito quindi tra libri e utenti la relazione è N-N Libri <-> Utenti

e pertanto la implemento in questo modo Libri -> Prestiti <- Utenti

RAGIONE SOCIALE => nome della società

La fattura testimonia una vendita e io come cliente riceverò un documento per ogni acquisto che farà Nei relazionali identificare le tabelle master!

Completato esempio fatture.

4T - 29/10/2020 riprendere dall'esempio sulle prestazioni

5/11/2020: 4T - MODULO 1

da e01692

Completato esempi fatture 4F 2/11/2020

Esempio listino personalizzato

4O 3/11/2020 riprendere dal listino generico ESEMPIO LISTINO GENERICO

Voglio un listino generico ovvero tutti i clienti pagano lo stesso prezzo per quell'articolo

ESEMPIO CLASSIFICAZIONE FOTO

Quando una tabelle MASTER ha 2 campi soli (Chiave e il significativo) e il significativo è una chiave eleggibile posso eliminare il campo chiave e rendere chiave il significativo (vi ricordo che questo non è un obbligo quando ho bisogno di performance => il campo numerico è + veloce per cui posso decidere di mantenere il campo chiave)

Quando una tabella MASTER risulta semplificato con un solo campo posso eliminarla ed inserire il campo significativo nella tabella slave => implica che una relazione N-N diventi una relazione 1->N

Esempio ulteriore

1) PER OGNI FOTO AMMETTO UNA SOLA CATEGORIA

E INOLTRE VOGLIO LE REGOLE CHE USO PER DECIDERE A QUALE CATEGORIA APPARTIENE LA MIA FOTO:

Inviato: 05/11/2020, 10:54

(17)

2) PER OGNI FOTO AMMETTO UNA SOLA CATEGORIA

NON MI SERVONO LE REGOLE CHE USO PER DECIDERE A QUALE CATEGORIA APPARTIENE LA MIA FOTO!!! => solo 2 campi per la ns tabella categorie Esempio TV

Completare esempio TV (vendita al dettaglio)

12/11/2020 -: 4T - MODULO 1

da e01692

Completato esempio TV (vendita al dettaglio)

INtegrità referenziale => è un meccanismo che impedisce la creazione di un record slave se non esiste un record corrispondente nella tabella master. Esempio non posso dare un voto ad uno studente inesistente

4F 9/11/2020

10/12/2020 - 4T - MODULO 1

da e01692

Fatto albero gen. e eser 2.1 RagioneSociale => NomeSocietà Fatto 2.2 base

Varianti 1, 2 , 3 del 2.2 pubblicare sul mio registro per il 16/12/2020 alle 24.00 (4T)

17/12/2020: 4T - MODULO 1

da e01692

Ricordatevi che i campi che possono essere calcolati on-fly (al volo) non vanno mai inseriti nella struttura. Esempio un campo media in ed. civica non va inserito se ho già nella tabella studenti il voto Ed.Civ 1Quadr. e 2Quadr. La posso calcolare velocemente.

Concluso Eser 2.5

Per il 6/1/2021 ore 24.00 pubblicare eser 6 del relazionale 2 (4T)

7/1/2021 - 4T - MODULO 1

da e01692

conclusa esercitazione 2

14/01/2021 - 4T - MODULO 1

da e01692

Inviato: 12/11/2020, 9:51

Inviato: 10/12/2020, 10:59

Inviato: 17/12/2020, 10:58

Inviato: 07/01/2021, 14:38

Inviato: 14/01/2021, 10:53

(18)

Esempio di sigla alfanumerica AA001 (misto di lettere e numeri) REGOLE DI IMPLEMENTAZIONE =>

1) Se devo ordinare o ricercare rispetto ad un campo => indicizzare tale campo

2) Un campo che classifica i record va indicizzato ed eventualmente va implementato un elenco a discesa 3) campi che assumono sempre lo stesso valore vanno ignorati

4) valori multipli su un campo se limitati possono essere implementati sulla tabella master come istanze multiple di campi. Esempio votoCondotta1Quadr,votoCondotta2Quadr saranno campi della tabella master alunno

5) La scuola associa ad ogni studente una matricola composta di 6 numeri progressivi a partire dallo 000001 ==> o uso un campo testuale con maschera di INPUT 000000 oppure un numerico con opportuna maschera di formato. I tipi numerici sono preferibili in generale poichè su questo tipo di campo la ricerca è molto veloce.

6) I campi che possono essere facilmente dedotti dagli altri (quindi calcolati on-fly) non vanno inseriti (esempio la media di una sequenza di voti, la regione di residenza se conosco la provincia)

7) se un campo è connesso ad una tabella in relazione è il campo collegato è un contatore allora dovrò usare un tipo numerico intero lungo (non contatore!). In altre parole non posso collegare 2 campi (di 2 tabelle #) che abbiano il tipo contatore.

8) Campi non di tipo cronologico (esempio un periodo!) per i quali è necessario creare un ordinamento temporale => la creazione di un campo di tipo data/ora che in qualche modo collochino quel periodo nel tempo.

9) tutte le situazioni duali (caratterizzate da 2 valori) possono essere implementate con un campo booleano.

21/1/2021: 4T - MODULO 1

da e01692

10) Campo chiave e significativo devono avere "Richiesto" a "Si" tranne quando la loro compilazione risulti automatica (esempio contatore).

11) in generale i codici usati per identificare la posizione fisica (in un magazzino ad esempio) costituiscono il campo chiave (sarà probabilmente un codice parlante) del record associato a quella realtà che sto implementando in una tabella.

Pubblicazione 28/1 4T Html-css Pubblicazione 25/1 4F Html-css Pubblicazione 26/1 4O Html-css 4F 18/1/2021

Quando un campo ha un tipo di dato che non consente di raggiungere un determinato obiettivo (esempio il calcolo della media, l'ordinamento, etc) occorre aggiungere un campo che permetta la decodifica di quel campo in un tipo di dato adatto. Esempio:

Voto => testo(5)

5/6 6--- 5+ 5 1/2 buono discreta VotoDiRiferimento tipo single =>

5+ => 5,17 5++ => 5,33 5/6 => 5,6 5 1/2 => 5,5

MONOLITICI - Uso OLE

1) Il campo ole va usato solo se il nr di record è basso e il contenuto del campo è ridotto in termini di dimensioni

2) I campi non soggetti a calcoli caratterizzati da solo cifre vanno comunque implementati come testo (esempio nr telefono, cap, etc)

Inviato: 21/01/2021, 10:56

(19)

Tutti gli orari sono UTC Pagina 1 di 1

3) Riferimenti cronologici che si ripetono vanno implementati come testo eliminando la parte che specifica una data precisa (esempio la data del s. patrono non può essere abbinata ad un particolare anno)

Un libro pubblicato nel gennaio 2021 avrà come valore nel campo periodopubblicazione

"01/2021"

Un libro pubblicato nel dicembre 2020 avrà come valore nel campo periodopubblicazione

"12/2020"

12)

E' richiesto un ordine cronologico rispetto al periodopubblicazione

"01/2021" < "12/2020" => ordine lessicogrAFICO è incompatibile con quello cronologico Se scrivo la sequenza in modo ribaltato AAAA/MM

"2021/01" > "2020/12" => ordine lessicogrAFICO è compatibile con quello cronologico Quindi la soluzione è un campo testuale di 7 char con maschera di input "0000/00"

4O 19/1/2021 - TEST di recupero il 16/2021 - 5 persone

4T 21/1/2021 - TEST di recupero il 18/2021 - 4 persone - chi ha pubblicato l'esercitazione estiva non deve rispondere a quesiti dell'esercitazione 2 - La settimana prossima ultima scadenza per la pubblicazione.

Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/

Riferimenti

Documenti correlati

Non sono ancora disponibili i prezzi al pubblico delle dure vetture e neppure il sistema di tariffazione per il servizio di sostituzione delle batterie, tuttavia

il tipo di appartenenza è: (c_uff, matr, data) dove c_uff, matr è la chiave. e data è una proprietà

Il Piano doveva fornire specifici obiettivi colturali per ognuna delle 566 UFor della superficie forestale produttiva, circostanziati in chiare indicazioni

strutturazione delle attività didattiche funzionale alla costruzione di conoscenze e competenze. un curriculum minimo forte di storia in grado di garantire

WORKERS' compensation -- Adjustment of claims 1 WORKERS' compensation -- Law &amp; legislation 1.

CARTELLONE MURALE SULLA COMPRENSIONE DELLE PAROLE CHIAVE NELLA RISOLUZIONE.

 Legge e comprende vocaboli, frasi e semplici testi con il supporto di immagini e, se necessario, della lingua italiana.  Legge e comprende cartoline, brevi lettere personali

• Legge e comprende vocaboli, frasi e semplici testi con il supporto d’immagini e anche della lingua italiana. • Legge e comprende cartoline, brevi lettere personali o e-mail