SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
![]() |
![]() |
![]() |
Title of test:![]() SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Description: test multi pegaso Creation Date: 2024/05/27 Category: Others Number of questions: 260
|




New Comment |
---|
NO RECORDS |
Il codice binario utilizza come codifica dell'informazione i simboli: 1 e 2. 0 e 1. 0, 1, 2, 3. 2 e 3. L'aritmetica nei vari sistemi di numerazione: segue le stesse regole dell'aritmetica in base decimale. segue delle regole apposite. non segue regole. segue diverse regole a seconda del computer utilizzato. Un sistema di numerazione è un insieme: di regole. di simboli. di operazioni. composto da simboli e regole. In un sistema di numerazione posizionale: ciascun simbolo ha un peso in base solamente al suo valore. ciascun simbolo ha un peso in base alla posizione del simbolo che lo precede o che lo segue. ciascun simbolo ha un peso in base alla sua posizione nella stringa numerica. tutti i simboli hanno lo stesso peso. Nella conversione di base da decimale a binario si usa la regola: dei pesi. delle divisioni successive. dei pesi e la regola delle divisioni successive. delle moltiplicazioni successive. Dato il numero 1010, espresso in base2, il suo analogo in decimale vale: 8. 6. 12. 10. Dato il numero 17, espresso in base decimale, il suo analogo in base binaria è: 11000. 10000. 10001. 10100. Nella conversione di base da binario a decimale si usa la regola: dei pesi. delle divisioni successive. dei pesi e la regola delle divisioni successive. delle moltiplicazioni successive. Il numero 123 in base 6, in base decimale vale: 27. 53. 48. 51. Il numero 34 in base 5, in base 2 vale: 11011. 10011. 10110. 10111. Quando parliamo di: 'una descrizione delle operazioni che devono essere eseguite per risolvere una certa classe di problemi', stiamo definendo un...: programma. algortimo. diagramma. flow chart. Quando parliamo di: 'una successione ordinata di istruzioni (o passi) che definiscono le operazioni da eseguire su dei dati per risolvere una classe di problemi' ci riferiamo alla definizione di: programma. algortimo. diagramma. flow chart. Le proprietà degli algoritmi sono: infinitezza, generalità e ambiguità. finitezza, generalità e non ambiguità. finitezza, generalità e ambiguità. finitezza, specificità e non ambiguità. Un flow chart è un: linguaggio informale di tipo grafico per rappresentare gli algoritmi. linguaggio formale di tipo testuale per rappresentare gli algoritmi. linguaggio informale di tipo testuale per rappresentare gli algoritmi. linguaggio formale di tipo grafico per rappresentare gli algoritmi. La scelta, in un diagramma di flusso, è rappresentata da un: rettangolo. quadrato. rombo. cerchio. Le fasi per descrivere un algortitmo con pseudocodifica sono: intestazione, dichiarativa, esecutiva. intestazione, dichiarativa, scrittura dei risultati. intestazione,acquisizione dei dati, esecutiva. assegnazione, dichiarativa, esecutiva. Le caratteristiche di un linguaggio di programmazione sono: lessico, istruzioni, semantica. alfabeto, sintassi, semantica. lessico, sintassi, semantica. alfabeto, simboli, semantica. I linguaggi di programmazione sono classificati per: livello. complessità. ambiguità. leggerezza. L'Assembly è un linguaggio: di alto livello. di basso livello. vicino all'uomo. macchina. Per tradurre un linguaggio ad alto livello in linguaggio macchina si utilizza il: traduttore. convertitore. codice binario. compilatore. Il primo ad utilizzare le schede perforate è stato: Joseph-Marie Jacquard. Gottfried Wilhelm von Leibniz. Charles Babbage. George Boole. Il primo computer programmabile è stato inventato da: Alan Mathison Turing. Blaise Pascal. John von Neumann. Charles Babbage. L'elemento caratterizzante della prima generazione di computer è: il transistor. la valvola termoionica. il circuito integrato. l'intelligenza artificiale. L'elemento caratterizzante della seconda generazione di computer è: il transistor. il microprocessore. il circuito integrato. l'intelligenza artificiale. L'elemento caratterizzante della terza generazione di computer è: il transistor. il microprocessore. il circuito integrato. l'intelligenza artificiale. L'elemento caratterizzante della quarta generazione di computer è: il transistor. il microprocessore. il circuito integrato. l'intelligenza artificiale. L'elemento caratterizzante della quinta generazione di computer è: il transistor. il microprocessore. il circuito integrato. l'intelligenza artificiale. Un super computer è utilizzato principalmente in: ospedale. ambito aereonautico. casa. ufficio. Un mainframe è utilizzato principalmente in: ospedale. ambito aereonautico. casa. ufficio. Un peronal computer è utilizzato principalmente in: ambito militare. ambito aereonautico. casa. ambito aereospaziale. Il calcolatore è: una macchina programmabile. una calcolatrice meccanica. un modello astratto di macchina da calcolo. un insieme di piccole calcolatrici. Il modello di von Neumann è: un particolare elaboratore. un modello funzionale di un elaboratore. un modello astratto di periferica. un modello astratto di interfaccia. Indicare da quante componenti fondamentali è composto il Modello di von Neumann: 2. 3. 4. 5. Il processore di un elaboratore: esegue solamente le istruzioni di collegamento con le periferiche. elabora dati e istruzioni. serve a collegare i BUS con le periferiche. esegue le istruzioni per elaborare i dati. La memoria centrale: memorizza e fornisce l'accesso a dati e programmi. memorizza solo dati. memorizza solo istruzioni. memorizza dati, istruzioni e indirizzi di I/O. Le interfacce di I/O sono: particolari tipologie di periferiche. componenti di collegamento con le periferiche. componenti di collegamento tra la memoria e il processore. particolari tipologie di memorie usate per connettere il processore alle periferiche. I bus sono: canali di comunicazione solamente tra memoria e processore. canali di comunicazione interni al processore. canali di comunicazione tra le varie componenti dell'elaboratore per lo scambio di istruzioni, dati, segnali di sincronizzazione. canali di comunicazione tra le varie componenti dell'elaboratore per lo scambio delle sole istruzioni. Il bus adibito al trasferimento dei dati tra un'unità che trasmette e un'unità che riceve è il bus: dati. degli indirizzi. dei segnali. dei segnali e degli indirizzi. Il bus di sistema: collega le unità interne all'elaboratore. collega le periferiche tra loro. collega le memorie tra loro. collega il processore alle periferiche. Il bus sul quale viene indicato l'indirizzo dell'unità interessata all'operazione, esempio la cella di memoria è il bus: dati. degli indirizzi. dei segnali. dei segnali e degli indirizzi. La sicurezza nei sistemi informatici si occupa di: preservare le risorse del sistema da accessi non autorizzati. gestire i file sul disco. aumentare la velocità di processanto del pc. creare un collegamento tra programmi presenti in memoria centrale. In un attacco di tipo "man in the middle": l'attaccante invia un elevato numero di messaggi al sistema attaccato. l'attaccante installa un malware sul sistema attaccato. l'attaccante ruba le coordinate bancarie dell'utente attaccato. l'attaccante altera la comunicazione tra due parti che credono di essere in comunicazione diretta tra loro. Il termine attacco DOS (Denial-of-service) indica: un attacco informatico realizzato con sistemi unix-based. un attacco informatico che mira a rubare le credenziali di accesso di un utente. un attacco informatico che mira a rendere inutilizzabile una specifica macchina o una rete, rendendola inaccessibile agli utenti per cui è stata realizzata. la capacità da parte dell'attaccante di modificare i file audio presenti sul dispositivo dell'attaccato. Con il termine compromissione di integrità si intende: la lettura non autorizzata di dati e il furto di informazioni. la modifica non autorizzata di dati e la modifica del codice sorgente. la distruzione non autorizzata di dati e il sabotaggio di siti web. il blocco dell'utilizzo legittimo del sistema. Per protezione fisica di un sistema si intende: l'uso di password molto lunghe per tutti gli utenti. protezione dei luoghi che ospitano le macchine del sistema. l'installazione di un programma antivirus su tutte le macchine del sistema. l'adozione di un firewall di ultima generazione. I quattro livelli del modello di sicurezza sono: applicazione, sistema operativo (SO), rete, fisico. browser, firewall, sistema operativo (SO), CPU. shell, interprete, virtual machine, usb hub. utente, applicazione, middleware, kernel. La crittografia può essere utilizzata per prevenire attachi a livello: fisico. di applicazione. di sistema operativo. di rete. Il "fattore umano" nell'ambito dei sistemi di sicurezza informatici riguarda: i comportamenti degli utenti umani che possano mettere, volontariamente o involontariamente, il sistema in pericolo. il numero di iscritti ad una mailing ist aziendale. la capacità del sistema di aumentare il numero di utenti. l'uso di un programma antivirus "user-friendly". Il Phishing consiste nel: contraffare e-mail o pagine web rendendole simili a quelle autentiche per spingere gli utenti tratti in inganno a comunicare informazioni confidenziali. distruggere tutti i dati presenti su un pc infettato con un virus. disinstallare inavvertitamente i programmi di gestione dell'email sul proprio pc. inserire pubblicità a pagamento nei siti web. Un elemento di dubbio per identificare una email di Phishing è il seguente: mancanza di allegati. lunghezza del testo superiore a tre righe. presenza di testo inviato all'interno dell'e-mail come immagine. invio da parte di un conoscente. Il Cavallo di Troia: e' un malware che agisce in modo malevolo che non esegue semplicemente la sua funzione dichiarata. e' uno scanner di vulnerabilità di rete. e' un tipo di attacco code injection. e' un tipo di attacco DoS. Il trojan mule: permette all'utente di difendersi da attacchi DDoS. e' una variante classica del cavallo di troia che emula una procedura di login. e' un tipo di attacco code injection. e' uno scanner di vulnerabilità di rete. Un programma che emula la procedura di accesso alla sessione di lavoro sottrandendo nome utente e password: e' un ramsomware. e' un trojan mule. e' un tipo di attacco code injection. e' un tipo di attacco DoS. Un tipo di attacco in grado di crittografare le informazioni presenti sul computer di destinazione e renderle inaccessibili al proprietario: e' uno spyware. e' un tipo di attacco code injection. prevede che la rete non sia vulnerabile. e' un ramsomware. Una trap door progettata per attivarsi solo al verificarsi di uno specifico insieme di condizioni logiche: fa parte dei worm. e' impossibile da realizzare. e' detta logic bomb. e' molto facile da rilevare. Il principio del minimo privilegio: e' una variante di port scanning. prevede che a un utente vengano concessi i livelli minimi di accesso dei quali ha bisogno per svolgere le proprie mansioni. consente agli utenti di avere i permessi di amministratore. non e' utile a prevenire attacchi. Per quanto riguarda le minacce relative al sistema e alla rete, i rischi per la sicurezza: diminuiscono se si e' connessi in rete. non sono molto rilevanti. aumentano se si attua il principio di minimo privilegio. aumentano se il sistema e' connesso alla rete. Gli attacchi DDoS: sono effettuati indirettamente tramite una rete bot spesso ampiamente diffusa; da qui il termine "distributed". hanno origine da un'unica fonte. non rappresentano un vero e proprio attacco. sono simili alla scansione delle porte. Un utente malintenzionato che rimane passivo intercettando il traffico di rete: sta compiendo un attacco sniffing. sta compiendo un attacco spoofing. si definisce man-in-the-middle. non sta effettuando un vero e proprio attacco. La scansione delle porte: e' un tipo di attacco code injection. e' effettuata indirettamente tramite una rete bot spesso ampiamente diffusa. non si può definire come un vero e proprio attacco ma come un mezzo impiegato da utenti malevoli per sondare le vulnerabilità di un sistema. e' un tipo di attacco non troppo pericoloso. L'utilizzo degli IP di rete: e' il metodo più sicuro per inviare e ricevere messaggi. permette di risalire al mittente e al destinatario di messaggi. e' sempre affidabile. assicura da solo una comunicazione sicura. I due principali algoritmi di cifratura sono la cifratura simmetrica e la cifratura asimmetrica. La cifratura simmetrica: utilizza due chiavi private differenti. prevede una chiave pubblica e una privata. utilizza una chiave privata comune a mittente e destinatario. utilizza una sola chiave pubblica. La cifratura simmetrica e la cifratura asimmetrica sono due algoritmi di cifratura. La cifratura asimmetrica: utilizza una chiave privata comune a mittente e destinatario. presenta il problema di distribuzione delle chiavi. può evitare che si verichi un attacco di interposizione. utilizza due diverse chiavi (chiave pubblica e privata) e ad ogni attore coinvolto nella comunicazione è associata una coppia di chiavi. In quale delle seguenti situazioni il sistema operativo può determinare con certezza il mittente e il destinatario: in un sistema di calcolatori complesso. in una rete di calcolatori. sempre. in un calcolatore isolato. In un sistema crittografico il ricevitore del messaggio: se ha la chiave k utile alla decifratura sa con certezza chi è il mittente del messaggio. se ha la chiave k utile alla decifratura otterrà il messaggio originale. se ha una sua chiave privata decifrerà comunque il plaintext. conosce con certezza il mittente. In un algoritmo di autenticazione che utilizza chiavi simmetriche: È essenziale che non sia possibile derivare k dai testi cifrati. si garantisce l'insieme dei ricevitori. viene sostituita la cifratura il meccanismo di autenticazione. non si deve sapere chi sia il mittente. In un attacco di interposizione: l'intruso si interpone nella comunicazione e trasmette la propria chiave pubblica illegittima (che fa coppia con la sua chiave privata). si garantisce l'insieme dei ricevitori. si usa il metodo più sicuro per inviare e ricevere messaggi. se il ricevitore ha una chiave privata la sua conoscenza non rappresenta un problema. Le tecniche di cifratura: servono per decifrare un messaggio. servono per capire chi è k. rendono chiaro il plaintext. servono per creare un ciphertext, ossia un testo cifrato. La crittografia si può implementare: solo nel livello Transport Layer. nei vari livelli del modello OSI. solo per scopi non maligni. solo nel livello Application layer. Il tema relativo all'implementazione della crittografia si inquadra facendo riferimento al progetto di una rete di comunicazione. In una rete di comunicazione: le comunicazioni tra gli strati sono casuali. se si implementa il modello OSI non si possono verificare attacchi informatici. la comunicazione fra strati avviene attraverso uno specifico protocollo. non è molto utile eseguire il back-up delle macchine. Un importante problema di sicurezza per i sistemi operativi è l'autenticazione degli utenti. Essa è basata: esclusivamente sulle password. su oggetti, conoscenze e attributi fisici. esclusivamente sui token. su password e token. Il token è un dispositivo elettronico portatile, alimentato a batteria con autonomia dell'ordine di qualche anno. Esso è utilizzato: per contenere una password fissa. per immagazzinare un PIN fisso. ha un numero seriale che è anche il PIN. per generare un codice numerico temporaneo. Un importante problema di sicurezza per i sistemi operativi è l'autenticazione degli utenti. Essa può essere, ad esempio, basata sulla lettura dell'impronta digitale che rientra: tra gli attributi fisici posseduti dall'utente. tra gli oggetti posseduti dall'utente. nella categoria dei token. tra le tecniche crittografiche. Indicare quale tra queste affermazioni è vera: le tecniche biometriche sono più affidabili nel verificare l'identità di un utente rispetto agli altri metodi. una parola molto difficile, ma di senso compiuto, usata come password, è molto difficile da "indovinare". un token è un dispositivo elettronico portatile che comunica in qualche modo con il server di autenticazione. gli elementi su cui è basata l'autenticazione degli utenti sono esclusivamente la password e il token. Per indovinare la password possono essere usate diverse tecniche. Tra queste lo shoulder surfing: e' un attacco dizionario. consiste nella cosiddetta sorveglianza elettronica. e' la sorveglianza visiva, ad esempio un intruso può sbirciare sopra la spalla dell'utente. si basa sulle informazioni che coinvolgono l'utente, conosciute dall'utente malizioso. Utilizzando la funzione f detta hash la password x si trasforma in f(x) detta password cifrata: la password cifrata così ottenuta non è mai possibile da decifrare. se x è una parola del dizionario è possibile indovinare la password con un attacco dizionario. se x non è una parola presente nei dizionari è comunque possibile indovinare la password con un attacco dizionario. data f(x) è comunque molto facile riottenere x. Si definisce One Time Password: una password cifrata. una password fissa accoppiata a un PIN dell'utente. una password casuale monouso creata in un certo istante di tempo. una sola password fissa valida sempre. La password OTP: si può usare se si pensa che la password del sistema non sia cifrata in modo sicuro. e' comoda per l'utente che può usarla sul proprio PC di casa ad ogni accesso. si utilizza in genere quando si preferisce non inserire la propria password, ad esempio, sul PC di un Internet point. si utilizza perché non si ricorda la propria password. I criteri per la scelta di una frase di accesso robusta sono: e' sufficiente che sia una frase molto lunga. e' sufficiente che sia una frase molto lunga ma facile da ricordare. e' sufficiente che sia una frase molto lunga ma facile da intuire. deve essere lunga, non contenere parole o frasi reperibili in un dizionario, facile da ricordare, difficile da intuire, contenere caratteri e numeri. Indicare tra queste la migliore passphrase: nulla si crea nulla si distrugge tutto si trasforma. nullasicreanullasidistruggetuttositrasforma. nulla si Crea nulla si Distrugge tutto si trasforma!. nulla s1 Crea Nulla s1 D1strugge Tutt0 s1 Trasf0rma!. Lo scopo della steganografia: e' quello di rendere nascosta la presenza di un osservatore in un canale di comunicazione. impedisce a un ascoltarore di accedere al contenuto del canale di comunicazione. e' celare l'esistenza stessa della comunicazione. e' quello di decrittare un messaggio. La steganografia e' l'arte di nascondere un messaggio segreto in un contenitore all'apparenza normalissimo, inoltre: impedisce a un ascoltatore non autorizzato di accedere al contenuto del canale. serve per cifrare i messaggi in chiaro. e' utile a decifrare i messaggi. utilizza un canale pubblico come veicolo per lo scambio di messaggi che devono rimanere riservati. Quali tra le seguenti tecniche può essere utilizzata per inserire messaggi segreti all'interno di un cover object all'apparenza innocuo: modifica di bit di codifica all'interno di immagini digitali. firma digitale di documenti testuali. inserimento di user name e password in siti web. cifratura dell'immagine. La griglia di Cardano, o griglia cardanica, e' un metodo per la scrittura di messaggi segreti inventato dal matematico italiano Girolamo Cardano nel 1550: consiste in fogli di materiale rigido, nei quali vengono ritagliati dei fori rettangolari ad intervalli irregolari. Appoggiando la griglia su un foglio di carta bianca, il messaggio segreto va scritto nei buchi, dove ciascun buco può contenere una o più lettere. sono delle griglie su tavolette di legno ricoperte di cera, sulle quali venivano incisi dei messaggi segreti. consiste nel tatuare delle griglie in modo da nascondere un messaggio segreto sul corpo. consiste in fogli di materiale rigido, nei quali vengono ritagliati dei fori rettangolari in modo regolare. Quali tra le seguenti può essere considerata una tecnica steganografica applicata in opere d'arte: inserimento di un particolare difficilmente visibile all'occhio dell'osservatore. utilizzo di colori ad olio. utilizzo di figure mitologiche tra i personaggi raffigurati. applicazione di diverse tecniche pittoriche. Il problema del prigioniero e' un modello che mira semplicemente a spiegare i concetti della Steganografia: Alice e Bob sono due prigionieri che devono escogitare un piano per poter fuggire. Essi si scambiano dei messaggi attraverso il guardiano Wendy. Wendy può scoprire che i due si stanno scambiando messaggi perché il piano comunque non fallirà. Alice e Bob sono due prigionieri che devono escogitare un piano per poter fuggire. Essi si scambiano dei messaggi attraverso il guardiano Wendy. Se Wendy scopre che i due si stanno scambiando dei messaggi, il piano fallirà. mette in evidenza come realizzare il sistema steganografico in pratica. concerne la decifrazione del plaintext. L'oggetto che sarà usato come contenitore per l'inserimento del messaggio: si definisce stego object o stego medium. e' il messaggio segreto. dipende dalla chiave k. e' il cover object o cover medium. L'oggetto risultato dell'algoritmo di steganografia, cioe' dopo che sono state effettuate operazioni su di esso, che contiene (trasporta) al suo interno il messaggio: si definisce stego object o stego medium. e' il messaggio segreto. dipende dalla chiave k. e' il cover object o cover medium. Un buon sistema steganografico: combinare steganografia e crittografia, soluzione e' nota come Principio di Kerckhoffs. si basa solo sulla steganografia secondo il Principio di Kerckhoffs. impedisce a un ascoltatore non autorizzato di accedere al contenuto del canale. rendere nascosto un canale di comunicazione da un eventuale ascoltatore non autorizzato. Uno stego object all'apparenza innocuo: può essere la firma digitale di documenti testuali. può essere costituito da un tatuaggio che nasconde un messaggio segreto. consiste nell'inserimento di user name e password in siti web. prevede la cifratura dell'immagine. A differenza della sicurezza che misura la fiducia nel fatto che l'integrità di un sistema e dei suoi dati siano preservati, la protezione: riguarda la corretta memorizzazione dei dati su supporti di memoria secondaria. concerne il meccanismo per il controllo dell'accesso alle risorse di un sistema informatico. e' il meccanismo di scheduling dei processi nella CPU. e' relativa al mancato controllo sulla coerenza dei dati su un DB. Possiamo distinguere in due grandi categorie di controllo di accesso alle risorse: Discretionary Access Control e Mandatory Access Control. Directional Access Control e Merge Access Control. Role Based Access Control e Matrix Based System. Controllo di accesso a utente singolo e multiutente. I vantaggi di un modello di accesso DAC sono: il meccanismo di classificazione multilivello gerarchica. il criterio di riservatezza dei dati e il controllo del flusso delle informazioni. il fatto che non e' facilmente soggetto ad attacchi informatici, come ad esempio il Cavallo di troia. la flessibilità in termini di specifiche delle politiche di accesso e il fatto di essere supportato da tutti i SO e i DBMS. La descrizione del modello Harrison-Ruzzo-Ullman (HRU) si basa su: un set di soggetti S; un set di oggetti O; un set di file F; una matrice D diagonale. un set di soggetti S; un set di test T; un set di file F; una matrice di accesso M. un set di soggetti S; un set di oggetti O; un set di diritti di accesso R; una matrice degli accessi M. un set di test T; un set di file F; una matrice D diagonale. Il modello HRU ha introdotto alcuni concetti importanti quali la nozione di sistemi di autorizzazionee la nozione di sicurezza. Esso: consente agli utenti di concedere l'autorizzazione ad accedere ai propri oggetti ad altri utenti a propria discrezione. non consente agli utenti di concedere l'autorizzazione ad accedere ai propri oggetti ad altri utenti a propria discrezione. si basa su uno schema gerarchico multilivello. non consente agli utenti di scrivere a un livello classficiato come Confidential. Consideriamo i comandi del modello HRU, siano s1,...,sm i soggetti e gli o1,...,om gli oggetti che compaiono nella lista dei parametri: un soggetto s non può creare un nuovo file f. un soggetto s può creare un nuovo file f. un soggetto s non può creare un nuovo file f ed esserne il proprietario. un soggetto s non può creare un nuovo file f ed abilitare la lettura e la scrittura sul file. Il modello Harrison-Ruzzo-Ullman (HRU): e' un modello che può essere classificato Discretionary Access Control (DAC). e' un modello che può essere classificato Mandatory Access Control (MAC). e' un sistema di sicurezza. combina elementi di DAC e MAC. Il modello Bell-Lapadula e' un modello che specifica un tipo di controllo d'accesso alle risorse in base ai soggetti e alla classificazione degli oggetti. Inoltre: e' un modello che può essere classificato Discretionary Access Control. consente agli utenti di concedere l'autorizzazione ad accedere ai propri oggetti ad altri utenti in modo discrezionale. e' un modello di protezione definito multilivello. combina elementi di DAC e MAC. Il modello Bell-LaPadula si concentra su riservatezza di dati e accesso a informazioni classificate. In particolare, ai soggetti: sono assegnati sensitivity levels. sono assegnati livelli di confidenzialità. non e' mai data la possibilità di scrittura su file. sono assegnati i clearance levels (livelli di autorizzazione). Se consideriamo informazioni al livello di sicurezza "Top-secret" nel modello BLP: le informazioni possono essere scritte in files di livello Unclassified. le informazioni possono essere scritte in files di livello Confidential. le informazioni possono essere scritte in ogni livello. le informazioni non possono essere scritte in files di livello Unclassified. Un sistema informativo è costituito da: dati e informazioni di una organizzazione. memorie non volatili. hardware dei PC aziendali. software denominato DBMS. Una base di dati è una collezione di dati: che viene mantenuta in una memoria volatile. che viene integrata nella RAM. che viene mantenuta in memoria di massa, quindi in maniera non volatile e permanente. che costituisce il SO. Il DBMS è un software progettato per: ottimizzare le performance della processore grafico del calcolatore. gestire e utilizzare grandi collezione di dati. gestire e utilizzare le connessioni di rete dell'elaboratore. gestire e utilizzare gli indirizzi IP. Il Data Base Management System o sistema di gestione di basi di dati: può essere visto come uno strato software allo stesso livello dei dati. e' un software che serve a utilizzare in modo ottimale le connessioni di rete dell'elaboratore. costituisce il sistema operativo. può essere visto come uno strato software che si interpone fra l'utente ed i dati veri e propri. Un sistema di gestione di basi di dati deve essere affidabile, cioè: resistente a malfunzionamenti hardware e software. non deve garantire un controllo sugli accessi. utilizzare le risorse di spazio e tempo del sistema in modo non necessariamente efficiente. rendere produttive le attività dei suoi utilizzatori. Il Data Base Management System (DBMS) è: un blocco hardware del SO. una memoria non permanente. un sistema di gestione di basi di dati basato su file system. un sistema di gestione di basi di dati basato su un modello dei dati descritto da una collezione di costrutti. In un sistema informatico, per archivio tradizionale s'intende uno o più file di archivio, in cui: i dati vengono gestiti direttamente dal software dell'applicazione utilizzatrice. i dati vengono gestiti per mezzo del DBMS. i dati vengono gestiti direttamente dal software DBMS. DBMS è l'unico responsabile della gestione dei file. Consideriamo la consistenza e l'integrità dei dati. Queste: sono vantaggi del DBMS. sono vantaggi propri degli archivi tradizionali. permettono che copie dello stesso dato possano essere diverse. devono essere garantite dal SO. Tra i vantaggi dei DBMS troviamo l'affidabilità dei dati, ossia: il fatto che i dati devono essere autenticati. la standardizzazione dei dati. la facilità di utilizzo dei dati. il fatto che i DBMS offrano meccanismi per la protezione dei dati da malfunzionamenti. I DBMS e File System sono due modalità che possono essere adoperate per gestire, archiviare, recuperare e manipolare i dati: non ci sono casi in cui è meglio usare il file system invece che il DBSM. sono due sistemi equivalenti. sono due sistemi di archivio tradizionali. sono eslusivamente sistemi di gestione dei dispositivi I/O. Il modello relazionale si basa sul concetto matematico di relazione, ma con alcune differenze. L'elemento principale per la descrizione dei dati in questo modello è: il dominio dei dati. la stringa. l'attributo. la tabella. Il costrutto di base per la descrizione dei dati nel modello relazionale è la relazione, che consiste: in un vettore riga. in uno schema relazionale e una istanza della relazione. in un vettore colonna. in un insieme di istruzioni. La relazione intesa secondo il modello relazionale dei dati: presenta alcune differenze significative rispetto alla relazione matematica. È identica alla relazione matematica. non ha alcuna similarità con la relaziona matematica. non prevede l'uso di tabelle. Si consideri la relazione nella sua accezione matematica. Il prodotto cartesiano di n insiemi I1 × I2 ×…× In è: un valore non significativo. l'insieme di tutte le ennuple non ordinate. un sottoinsieme delle tuple ordinate (i1, i2,…, in) tali che i1 ∈ I1, i2 ∈ I2,…, in ∈ In. l'insieme di tutte le ennuple (o tuple) ordinate (i1, i2,…, in) tali che i1 ∈ I1, i2 ∈ I2,…, in ∈ In. Una relazione nel modello relazionale si può rappresentare come una tabella in cui i nomi degli attributi: sono usati come intestazioni delle colonne. sono riportati nella prima colonna. sono riportati nell'ultima colonna. sono i valori degli attributi. In una relazione del modello relazionale si ha che: i valori di ciascuna colonna non appartengono allo stesso dominio. i valori di ciascuna colonna appartengono allo stesso dominio. le tuple (righe) sono uguali tra loro. i nomi degli attributi sono uguali tra loro. Una istanza di base di dati su uno schema di base di dati è: un campo di valori. un vettore riga. un insieme di istanze di relazione, una istanza per ogni schema di relazione dello schema della base di dati. un insieme di schemi. Nella modello relazionale i dati disponibili potrebbero non permettere di ottemperare esattamente al formato previsto. Se ad esempio l'informazione è incompleta: e' meglio inserire uno zero. e' opportuno inserire 0000 nel record corrispondente. e' consigliato inserisce 9999. si adotta la tecnica del valore nullo (NULL). Nel modello relazionale la tecnica del valore nullo (NULL): inserisce uno zero nella stringa. denota l'assenza di un valore del dominio. denota la presenza di una stringa. denota la presenza di una tipo double. L'utilizzo di NULL è necessario quando non esiste, non è noto o non si conosce l'esistenza di un valore del dominio. I DBMS: distinguono tra i tre casi. non fanno alcuna distinzione tra le diverse situazioni di necessità per l'uso del valore nullo. considerano solo il caso di non esistenza del valore. considerano solo il caso in cui il valore è senza informazione. Un vincolo di integrità (VI) è una condizione che si esprime a livello di schema e che si intende debba essere soddisfatta da tutte le istanze della base di dati. Prendendo ad esempio i valori dell'attributo intero 'Età' di una tabella 'Persona': e' possibile inserire la stringa "meno_dieci". sarebbe un errore associare ad 'Età' un valore negativo. sarebbe un errore associare ad 'Età' un valore positivo. non ci sono condizioni inammissibili. L'operatore AND serve a concatenare tra loro due espressioni Booleane a e b. Se a ha valore TRUE e B ha valore FALSE, l'espressione a AND b ha valore: TRUE. FALSE. non ha valore. 1. I vincoli di tupla sono vincoli di integrità: intrarelazionali. che si riferiscono a un singolo attributo. interrelazionali. che si applicano a una e una sola colonna della tabella. Un vincolo di tupla che coinvolge un solo attributo si dice: vincolo di riga. vincolo di chiave. NULL. vincolo di dominio. Consideriamo il vincolo in una tabella "Impiegato" per cui nessuna coppia di tuple possa avere lo stesso codice fiscale (CF). Esso è un vincolo di chiave della relazione, cioè: e' un insieme non vuoto di attributi che identificano univocamente le tuple di una relazione. specifica che ci possano essere due ennuple con lo stesso valore sull'attributo CF. indica che ci possano essere tre tuple con lo stesso valore sull'attributo CF. un insieme non vuoto di attributi che identificano univocamente i domini di una relazione. Quale tra queste asserzioni potrebbe definire un vincolo di chiave in un ipotetico Database: ci possono essere due studenti con la stessa matricola. ci possono essere due impiegati con lo stesso codice fiscale. non ci possono essere due impiegati con lo stesso codice fiscale. non ci possono essere studenti con lo stesso nome e cognome. Considerando il concetto di chiave in uno schema di relazione R, sia r una istanza di R: r può contenere ennuple uguali fra loro. una chiave per r è una superchiave minimale. una superchiave per r è sempre una chiave. r potrebbe non contenere una chiave. Nello schema Studenti(matricola, cognome, nome, corso, data_di_nascita) una chiave può essere: corso. nome. matricola. data_di_nascita. La presenza del valore NULL nelle chiavi deve essere limitata: ammettendo valori NULL solo sulla chiave primaria. inserendo in tutte le superchiavi almeno un valore NULL. consentendo valori NULL per tutti gli attributi di tutte le relazioni. scegliendo per ogni relazione una chiave su cui non siano ammessi valori nulli. Un vincolo di chiave primaria è un'asserzione che specifica che un insieme di attributi formano la chiave primaria della relazione: tale insieme di attributi non è una chiave per la relazione. tale insieme di attributi forma una chiave per la relazione. nel DB si ammette per tale insieme che almeno un attributo possa presentare valori NULL. sono ammessi più vincoli di chiave primaria per la relazione. Il vincolo di integrità referenziale è un vincolo interrelazionale. Quando siamo in presenza di questo vincolo si ha che: due colonne della stessa tabella hanno lo stesso nome attributo. considerando le informazioni contenute in relazioni diverse, queste non sono correlate tra di loro. considerando le informazioni contenute in relazioni diverse, queste sono correlate per mezzo di valori comuni. due tabelle devono avere lo stesso numero di tuple. Quale tra le seguenti affermazioni definisce correttamente la chiave esterna: e' una colonna i cui valori corrispondono a una tupla in una tabella diversa. e' una colonna o una combinazione di colonne i cui valori corrispondono a una chiave primaria in una tabella diversa. e' una tupla o una combinazione di tuple i cui valori corrispondono a una chiave primaria in una tabella diversa. e' una sequenza di valori diversi rispetto a tutte le colonne di una tabella correlata. L'integrità referenziale viene rispettata quando per ogni valore non nullo della chiave esterna, esiste un valore corrispondente della chiave primaria nella tabella associata. Si ha che: la chiave esterna fa parte della tabella referenziante. la chiave esterna fa parte della tabella referenziata. il vincolo di integrità referenziale non corrisponde al vincolo di chiave esterna. la chiave primaria può contenere il valore NULL. Consideriamo il vincolo di foreign key (FK). Esso è rispettato se: per ogni valore non nullo della chiave esterna, non esiste un valore corrispondente della chiave primaria nella tabella associata. e' verificato il vincolo di tupla. e' verificato il vincolo di dominio. per ogni valore non nullo della chiave esterna, esiste un valore corrispondente della chiave primaria nella tabella associata. Consideriamo il vincolo di foreign key (FK). E' possibile asserire che: il valore NULL contenuto in un attributo coinvolto in un vincolo di chiave esterna non costituisce violazione del vincolo. il valore NULL contenuto in un attributo coinvolto in un vincolo di chiave esterna costituisce violazione del vincolo. e' ammesso il valore NULL nella chiave primaria. chiave primaria e chiave esterna devono necessariamente avere lo stesso numero di righe. I valori NULL non possono apparire in un campo di chiave primaria. Ciò significa che essi possono apparire: nella relazione referenziante. nella relazione referenziata. nella chiave primaria. nella colonna relativa alla superchiave minimale della tabella referenziata. Sia ordini una relazione referenziante con un vincolo di FK su clienti (relazione referenziata). Si ha che: ordini può contenere il valore NULL nella chiave primaria. studenti può non avere una chiave primaria. i valori NULL della FK di ordini devono trovarsi nella chiave di clienti. i valori non NULL della FK di ordini devono trovarsi nella chiave di clienti. Un vincolo di inclusione fra una serie non vuota A di n attributi di una relazione R1 ed una serie B di n attributi di una relazione R2 impone che ogni combinazione di valori su A presenti in R1 compaia come combinazione di valori su B in R2: esso è una generalizzazione del vincolo di chiave esterna. l'insieme di attributi in B formano una chiave per R2. l'insieme di attributi in B formano una chiave primaria per R2. e' un vincolo tra tuple. Consideriamo l'istanza r della relazione R. Se un vincolo generale non è soddifatto: r è una istanza legale. r è una istanza non legale. r non ha una chiave primaria. il DBMS dovrebbe comunque permettere di inserire il valore non corretto. I sistemi di DB relazionali supportano vincoli generali in due forme: vincoli di tabella e asserzioni. Le asserzioni coinvolgono: diverse tabelle e sono controllate ogni volta che una di queste tabelle viene modificata. una singola tabella. un singolo dominio. solo le FK. Con riferimento ai linguaggi di interrogazione associati al modello relazionale, il data definition language (DDL): agisce sullo schema della base di dati. permette di modificare direttamente i dati. non riguarda lo schema della base di dati. e' un linguaggio di programmazione ad oggetti. Con riferimento ai linguaggi di interrogazione associati al modello relazionale, il data manipulation language (DML): agisce sullo schema della base di dati. permette di modificare direttamente i dati. non riguarda la modifica e l'inserimento dei dati. e' un linguaggio di programmazione ad oggetti. I linguaggi di interrogazione per basi di dati relazionali possono essere classificati in dichiarativi e procedurali. In particolare i linguaggi dichiarativi: specificano le modalità di generazione del risultato (indicano come). indicano tutti i passi da fare per raggiungere il risultato. dichiarano le proprietà del risultato senza fare riferimento alle procedure da eseguire per generare il risultato stesso (indicano che cosa). specificano come è stato raggiunto il risultato. L'algebra relazionale è un linguaggio formale di tipo algebrico i cui operandi sono relazioni. In particolare: e' un linguaggio dichiarativo. e' un linguaggio per i calcoli con numeri reali. e' un linguaggio misto, procedurale e dichiarativo. e' un linguaggio procedurale, in cui cioè le operazioni complesse vengono specificate descrivendo il procedimento da seguire per ottenere la soluzione. Consideriamo l'operatore unione tra due istanze di relazione R e S. Affinchè l'unione possa essere eseguita R e S devono avere: lo stesso numero di tuple. gli stessi nomi degli attributi. lo stesso numero di attributi. un numero di attributi diverso. Consideriamo l'operatore intersezione tra due istanze di relazione R e S. Il risultato contiene: tutte le tuple presenti in R oppure in S. la concatenazione delle tuple r che appartengono a R e s appartenenti a S. tutte le tuple presenti in R, ma non in S. tutte le tuple (prese una sola volta) presenti contemporaneamente in R e S. La differenza tra due relazioni R e S è indicata con R - S e contiene tutte le tuple che sono presenti in R ma che non esistono in S. Inoltre: R e S devono essere compatibili rispetto all'unione. R e S non devono essere compatibili rispetto all'unione. R - S contiene la concatenazione delle tuple r che appartengono a R e s appartenenti a S. la differenza è un operatore unario. Si consideri il prodotto cartesiano. Se due relazioni hanno degli attributi con nomi identici, allora: tali attributi sono individuabili dal numero di riga della tupla. per prassi, i nomi degli attributi possono essere indicati tra parentesi: possiamo riferirci a loro per mezzo della posizione. non è possibile eseguire il prodotto cartesiano. la soluzione ottimale è lasciare i nomi originali. Consideriamo l'operatore di ridenominazione. Esso: e' un operatore binario. varia i valori delle tuple. non cambia lo schema. È un operatore unario. L'operatore di ridenominazione indicato con la lettera greca ρ ("ro"): cambia lo schema del risultato, lasciando invariati i valori delle tuple. varia i valori delle tuple. non cambia lo schema. È un operatore binario. L'operatore di selezione σ consente di selezionare un sottoinsieme delle tuple di una relazione r, applicando a ciascuna di esse una data condizione. L'istanza di relazione risultante dalla selezione: contiene le colonne di r che rendono vera tale condizione. contiene le tuple di r che rendono falsa tale condizione. contiene le colonne di r che rendono falsa tale condizione. contiene le tuple di r che rendono vera tale condizione. Si consideri l'operatore di selezione. Esso è: un operatore che permette di manipolare i dati di due relazioni. un operatore unario che permette di manipolare i dati di una singola relazione. un operatore binario che permette di manipolare i dati di due colonne. un operatore binario che permette di manipolare i dati di una singola colonna. La condizione di selezione si applica a ciascuna tupla dell'istanza di relazione: singolarmente, quindi non può coinvolgere più di una tupla. coinvolgendo più di una tupla. coinvolgendo tutte le tuple dell'istanza di relazione. coinvolgendo due colonne. L'operatore di proiezione "proietta" le colonne di una relazione. Il simbolo è π al cui pedice viene indicata la lista degli attributi che costituiscono la nuova relazione. Tale lista: È un sottoinsieme dei valori degli attributi della relazione originale. identifica le tuple. È un sottoinsieme degli attributi della relazione originale. contiene tutti gli attributi dell'istanza di partenza. Si consideri l'operatore proiezione. I campi di interesse: contengono sempre la chiave primaria. sono indicati nella lista degli attributi, mentre gli altri campi sono "proiettati fuori". coinvolgono due relazioni diverse. non sono presenti nella istanza risultante. Il risultato dell'operazione di proiezione: contiene al più tante ennuple quante ne ha l'operando. contiene sempre lo stesso numero di ennuple. contiene un numero di tuple maggiore dell'operando. ha cardinalità maggiore dell'operando. Si consideri l'operatore proiezione. Se la lista di attributi è una superchiave della relazione r, allora, la relazione risultante: ha un numero di tuple maggiore di r. ha un numero di tuple minore di r. ha lo stesso numero di colonne presenti in r. ha lo stesso numero di tuple presenti in r. Si consideri una lista di attributi dell'operatore proiezione che sia una superchiave di una relazione r, allora, la relazione risultante: ha la stessa cardinalità di r. ha sempre lo stesso grado di r. ha sempre lo stesso numero di colonne presenti in r. ha un numero di righe minore di r. Se si combinano selezione e proiezione possono essere estratte interessanti informazioni: da due istanze di relazione. da due tabelle. da una relazione, applicando sempre prima la proiezione e poi la selezione. da una sola relazione. La selezione e la proiezione: combinate, correlano informazioni presenti in relazioni diverse. sono operatori binari. permettono di ottenere informazioni importanti da una sola relazione. permettono di ottenere informazioni importanti da più relazioni. Si consideri l'operatore join naturale dell'algebra relazionale tra due istanze di relazione R1 e R2, il risultato R è una relazione che: ha sempre lo stesso numero di attributi di R1. ha sempre lo stesso grado di R1. esegue anche un filtraggio, perché le tuple che non hanno un dato legame semantico con l'altra relazione non vengono considerate. è un risultato poco significativo rispetto a gli operatori di base. Si applichi l'operatore join naturale dell'algebra relazionale a due relazioni R1 e R2. Il risultato contiene: solo gli attributi di R1 che sono anche in R2. tutte le coppie formate da una tupla di R1 e da una tupla di R2 per cui, per gli attributi con nome diverso il valore è uguale. tutte le coppie formate da una tupla di R1 e da una tupla di R2 per cui, per gli attributi con stesso nome, il valore è diverso. tutte le coppie formate da una tupla di R1 e da una tupla di R2 per cui, per gli attributi con stesso nome, il valore è uguale. Il join naturale gode delle seguenti proprietà: è monadico. è commutativo, ma non associativo. è associativo, ma non commutativo. è un operatore binario, commutativo eassociativo. Si consideri l'operatore join naturale dell'algebra relazionale applicato a due relazioni R1 e R2 non vuote. Se R1 e R2 hanno attributi con lo stesso nome, ma i valori sono tutti diversi, il risultato del join naturale: è vuoto. ha cardinalità pari a R1. ha cardinalità pari a R2. ha lo stesso numero di ennuple del prodotto cartesiano tra R1 e R2. La condizione nel theta-join deve essere soddisfatta: tra attributi di relazioni diverse che non hanno lo stesso nome. tra attributi della stessa relazione che non hanno lo stesso nome. tra attributi di relazioni diverse di tipo (string, real, boolean) diverso. tra attributi della stessa relazione di tipo (string, real, boolean) diverso. Il theta-join genera le coppie di una tupla di R1 e di una tupla di R2 che soddisfano una certa condizione. Esso è un operatore: monadico. binario, date due relazioni R1 e R2 genera una nuova relazione R3 che ha come schema lo schema di R2. binario, date due relazioni R1 e R2 genera una nuova relazione R3 che ha come schema lo schema di R1. binario, date due relazioni R1 e R2 genera una nuova relazione R3 che ha come schema tutti gli attributi di R1 e tutti quelli di R2. Si consideri il theta-join. Esiste un caso particolare dove l'operatore di confronto 'theta' è: l'operatore diverso. l'operatore uguale = e si chiama equi-join. un operatore che opera su domini diversi. confronta domini della stessa istanza di relazione. L'operazione (R1'semi-join' R2) crea un legame tra le tuple della relazione R1 e della relazione R2 e: restituisce nel risultato lo schema di R2. restituisce nel risultato le tuple di R2. restituisce nel risultato lo schema di R1. restituisce nel risultato lo schema di R1 e di R2. L'operazione (R1 'semi-join' R2) restituisce l'informazione rilevante della prima relazione del join. In particolare: sullo schema del join viene fatta una proiezione su tutti gli attributi dello schema di R2. sullo schema del join viene fatta una proiezione su tutti gli attributi dello schema di R1. nel caso ci siano duplicati, questi si mantengono. il risultato contiene tutte le tuple di R2 per cui è vera una condizione c. Il semi-join tra due istanze di relazione R1 e R2 (R1 'semi-join' R2): non gode della proprietà commutativa. gode della proprietà commutativa. è un operatore monadico. genera una relazione con lo stesso stesso schema di R2. L'operazione "R1 left outer-join R2" genera le coppie di tuple formate da una tupla di R1 e una di R2 per cui è vera una data condizione c e inoltre: una tupla di R2 che non è correlata mediante la condizione c a tuple di R1 completata mediante valori NULL per tutti gli attributi di R1. una tupla di R1 che non è correlata mediante la condizione c a tuple di R2 completata mediante valori NULL per tutti gli attributi di R2. nessuna altra tupla. le tuple di R1 e R2 che non sono correlate mediante la condizione c riempite con valori NULL per i rispettivi attributi. L'operazione "R1 right outer-join R2" genera le coppie di tuple formate da una tupla di R1 e una di R2 per cui è vera una data condizione c e inoltre: una tupla di R2 che non è correlata mediante la condizione c a tuple di R1 completata mediante valori NULL per tutti gli attributi di R1. una tupla di R1 che non è correlata mediante la condizione c a tuple di R2 completata mediante valori NULL per tutti gli attributi di R2. nessuna altra tupla. le tuple di R1 e R2 che non sono correlate mediante la condizione c riempite con valori NULL per i rispettivi attributi. L'operazione "R1 full outer-join R2" genera le coppie di tuple formate da una tupla di R1 e una di R2 per cui è vera una data condizione c e inoltre: una tupla di R2 che non è correlata mediante la condizione c a tuple di R1 completata mediante valori NULL per tutti gli attributi di R1. una tupla di R1 che non è correlata mediante la condizione c a tuple di R2 completata mediante valori NULL per tutti gli attributi di R1. nessuna altra tupla. le tuple di R1 e R2 che non sono correlate mediante la condizione c riempite con valori NULL per i rispettivi attributi. Si consideri l'operatore anti-join tra due istanze di relazione R1 e R2, esso seleziona: le tuple di R1 e R2 legate semanticamente da una condizione c. gli attributi di R2. le tuple di R1 semanticamente non legate da una condizione c alle tuple di R2. le tuple di R1 e R2 che contengono valori NULL. Si consideri l'operatore anti-join tra due istanze di relazione R1 e R2, il suo simbolo è: un bow-tie negato aperto a destra. un bow-tie. un bow-tie aperto a destra. un bow-tie aperto a sinistra. Si consideri l'operatore anti-join tra due istanze di relazione R1 e R2, esso: gode della proprietà commutativa. gode della proprietà associativa. gode delle proprietà commutativa e associativa. non gode né della proprietà commutativa né della proprietà associativa. Si consideri l'operatore anti-join tra due istanze di relazione R1 e R2, esso: seleziona le tuple di R1 e di R2 che contengono valori NULL. gode delle proprietà commutativa e associativa. gode della proprietà commutativa. semplifica alcune operazioni, che richiederebbero altrimenti più operatori (es. differenza, proiezione, join naturale). Si supponga di voler trovare i giocatori presenti nella istanza di relazione R1 di Giocatori Presenti, che hanno giocato in tutte le gare del campionato, riportate nella istanza di relazione R2 delle Gare Giocate. Il problema si risolve facilmente ricorrendo a: l'operatore di divisione. l'operatore anti-join. l'operatore full outer-join. l'operatore proiezione. Si consideri l'operatore divisione tra due istanze di relazione R1 e R2, esso: gode della proprietà commutativa. gode della proprietà associativa. non gode delle proprietà commutativa e associativa. gode delle proprietà commutativa e associativa. Si consideri l'operatore divisione tra due istanze di relazione R1 e R2, esso è un operatore derivato cioè: si basa sul concetto di derivata di funzione. È esprimibile tramite gli altri operatori dell'algebra relazionale. È un operatore di base dell'algebra relazionale. È un operatore unario. Lo Structured Query Language (SQL) è un linguaggio strutturato di interrogazione: interamente orientato agli oggetti. interamente imperativo. completamente procedurale. dichiarativo. La modalità di invio dei dati al DBMS tramite SQL può essere: esclusivamente interattiva. esclusivamente compilata. sia interattiva che compilata. esclusivamente batch. Il linguaggio SQL viene addottato come standard per la prima volta: nel 1974 dai laboratori IBM Research. nel 1986 dall'ANSI. nel 1975 con il nome SEQUEL-XRM. nel 1977 con il nome SEQUEL/2. Il Data Definition Language (DDL) è una parte del linguaggio SQL che permette di: creare, modificare o eliminare gli oggetti in un database ovvero agire sullo schema del DB. leggere e modificare i valori delle tabelle di una base di dati. dare a un utente la possibilità o il privilegio di vedere alcune parti delle tabelle. definire le strutture dati accessorie per recuperare efficientemente i dati. Il Data Manipulation Language (DML) è il linguaggio di manipolazione dei dati, esso consente: di creare, modificare o eliminare gli oggetti in un database ovvero agire sullo schema del DB. di leggere e modificare i valori delle tabelle di una base di dati. di dare a un utente la possibilità o il privilegio di vedere alcune parti delle tabelle. di definire le strutture dati accessorie per recuperare efficientemente i dati. Il Data Control Language (DCL) consente: di creare, modificare o eliminare gli oggetti in un database ovvero agire sullo schema del DB. di leggere e modificare i valori delle tabelle di una base di dati. di dare a un utente la possibilità o il privilegio di vedere alcune parti delle tabelle. di definire le strutture dati accessorie per recuperare efficientemente i dati. Le viste sono tabelle derivate da altre tabelle della base di dati. La creazione di una vista avviene con l'istruzione: ALTER VIEW. DROP VIEW. CREATE VIEW. COMMIT. Si consideri la forma base di una interrogazione SQL. Essa deve contenere necessariamente: la clausola DISTINCT. la clausola WHERE. la clausola FROM, anche da sola. una istruzione SELECT e una clausola FROM. L'istruzione SELECT corrisponde all'operatore dell'algebra relazionale: join. selezione. proiezione, ma non elimina eventuali duplicati. divisione. L'istruzione SELECT DISTINCT corrisponde all'operatore dell'algebra relazionale: join. proiezione. selezione. divisione. Si consideri la tabella U(uid: integer, unome: string) che contiene id utente e nome utente. Se si volessero ottenere da U solo i valori dell'attributo uid, in SQL dovremmo scrivere: SELECT unome FROM U;. SELECT uid FROM U;. SELECT u, unome FROM U. SELECT U FROM uid, unome;. Nel linguaggio SQL per rimuovere i duplicati si utilizza la parola chiave: DISTINCT dopo la SELECT. DISTINCT dopo la clausola WHERE. SELECT che agisce come la proiezione e quindi elimina i duplicati. DELETE. La eliminazione dei duplicati in SQL: e' implicita nella SELECT. deve essere eseguita sulle chiavi primarie. si deve effettuare sempre. si deve eseguire solo se necessario perché ha un costo in termini di risorse. Nel linguaggio SQL la clausola WHERE specifica le condizioni di selezione. Queste si applicano: solo alla colonna indicata dalla SELECT. singolarmente ad ogni tupla della tabella presente nella clausola FROM. confrontando righe diverse della tabella. alle colonne della tabella presente nella clausola FROM. Nel linguaggio SQL la clausola WHERE specifica le condizioni di selezione. In particolare: non è possibile fare una ricerca testuale (stringhe). e' possibile anche fare una ricerca testuale (stringhe). non è possibile gestire valori NULL. non si possono usare operatori di confronto. La parola chiave SELECT del linguaggio SQL corrisponde, nell'algebra relazionale, a: una selezione. una proiezione, ma senza eliminazione dei duplicati. una proiezione. una intersezione. Si consideri la clausola FROM nel linguaggio SQL. Supponendo che contenga due tabelle A e B, allora: nella WHERE sarà presente almeno una condizione di join. nella WHERE è possibile ci siano zero condizioni di join. non ci possono essere nella WHERE tre condizioni di join. non ci possono essere nella WHERE quattro condizioni di join. Si consideri il linguaggio SQL. Se si hanno più condizioni di selezione nella clausola WHERE, allora: va indicato al sistema l'ordine di esecuzione delle condizioni da eseguire. va scritto in SQL l'ordine di esecuzione delle condizioni. il sistema esegue sempre le condizioni nell'ordine scritto. non bisogna indicare come eseguire le condizioni, il sistema eseguirà prima la condizione più "economica" in termini di risorse di calcolo. Si consideri la clausola WHERE del inguaggio SQL così definita: WHERE Utenti.uid = UC.uid AND UC.cid = Corsi.cid AND Corsi.cnome = 'nomecorso': nella clausola FROM ci devono essere tre tabelle: Utenti, Corsi, e UC. nella clausola FROM ci può essere una sola tabella. nella clausola SELECT ci saranno le tre tabelle Utenti, Corsi, e UC. nella clausola FROM ci possono essere due tabelle. Si consideri una interrogazione SQL base. Se si hanno N tabelle nella clausola FROM ed è presente la clausola WHERE: si puo avere una condizione anche su un'altra tabella, diversa dalle N tabelle della FROM, ma dichiarata nella SELECT. si possono avere N-2 condizioni nella clausola WHERE. ci possono essere 0 condizioni nella WHERE. avremo almeno N-1 condizioni nella clausola WHERE. Si consideri la tabella U(uid: integer, unome: string) che contiene id utente e nome utente all'interno di un database utenti. Per visualizzare lo schema della tabella U si utilizzza l'istruzione SQL: DESCRIBE U;. DELETE U;. UPDATE U;. SELECT U;. L'istruzione SQL create table si usa per: modificare una tabella di un DB. aggiornare una tabella di un DB. creare una tabella di un DB. creare una tupla di una tabella di un DB. Si consideri un campo di una tabella definito in SQL come PRIMARY KEY. Esso: può contenere valori NULL. non può contenere valori NULL. contiene valori NULL. può contenere due righe uguali. Se un attributo di una tabella è definito in SQL come tipo varchar(4) esso: contiene esattamente 4 caratteri, sempre. contiene un numero di caratteri variabile fino a 4. contiene un numero di caratteri variabile, ma comunque strettamente maggiore di 4. occuperà in memoria 4 MB. Per inserire dei valori in una tabella U si deve usare l'istruzione SQL: UPDATE VALUES;. INSERT VALUES;. CREATE VALUES;. INSERT INTO U VALUES;. Si consideri la tabella U di un database. In SQL, per selezionare tutte le tuple della tabella U si utilizza: SELECT * FROM U;. SELECT char FROM U;. SELECT varchar FROM U;. SELECT U FROM U;. In SQL, per visualizzare tutti i dati inseriti in una tabella U si utilizza: DESCRIBE U;. SELECT * FROM U;. ALTER U;. SELECT *;. (DOPPIONE)Si consideri una interrogazione SQL base. Se si hanno N tabelle nella clausola FROM ed è presente la clausola WHERE: si puo avere una condizione anche su un'altra tabella, diversa dalle N tabelle della FROM, ma dichiarata nella SELECT. si possono avere N-2 condizioni nella clausola WHERE. ci possono essere 0 condizioni nella WHERE. avremo almeno N-1 condizioni nella clausola WHERE. Se si volesse estrarre attributo1 e attributo2 da una tabella A, eliminando eventuali duplicati, in SQL si scriverebbe: SELECT *A;. SELECT attributo1, attributo 2 FROM A;. SELECT A FROM attributo1, attributo2, A;. SELECT DISTINCT attributo1, attributo 2 FROM A;. Si consideri la clausola WHERE del inguaggio SQL così definita: WHERE Utenti.uid = UC.uid AND UC.cid = Corsi.cid AND Corsi.cnome = 'nomecorso': nella clausola FROM ci può essere una sola tabella. nella clausola FROM ci devono essere tre tabelle: Utenti, Corsi, e UC. nella clausola SELECT ci saranno le tre tabelle Utenti, Corsi, e UC. nella clausola FROM ci possono essere due tabelle. Il committente è una delle diverse figure professionali coinvolte nella progettazione del software. Esso: dichiara cosa serve per risolvere il problema. manutiene e aggiorna il sistema. asserisce come risolvere il problema. e' colui che ha una necessità informatica da risolvere. L'analista è una delle diverse figure professionali coinvolte nella progettazione del software. Esso: dichiara cosa serve per risolvere il problema. utilizza il sistema. asserisce come risolvere il problema. e' colui che ha una necessità informatica da risolvere. La progettazione del software coinvolge diverse professionalità. La figura che asserisce come risolvere il problema è: l'analista. il progettista. il manutentore. il committente. Nell'ambito della progettazione del software, la classificazione delle applicazioni rispetto al flusso di controllo include i sistemi sequenziali. Un esempio di questo tipo di sistemi sono: i moderni sistemi operativi. il sistema di navigazione autonoma di un aereo. i video giochi. un risolutore di sistemi di equazioni. Nell'ambito della progettazione del software, la classificazione delle applicazioni rispetto al flusso di controllo include i sistemi concorrenti. Un esempio di questo tipo di sistemi sono: qualunque applicazione con un unico flusso di controllo. smartphone. sistema operativo anni 80. un risolutore di sistemi di equazioni. Nell'ambito della progettazione del software, la classificazione delle applicazioni rispetto agli elementi di interesse primario include le applicazioni orientate alla gestione dei dati. Esempi di tale tipo di applicazioni sono: i DBMS. i sistemi operativi per robot. i sistemi ABS. le applicazioni per il calcolo matematico come, ad esempio, Matlab. Nell'ambito della progettazione del software, la classificazione delle applicazioni rispetto agli elementi di interesse primario include le applicazioni orientate al controllo. Esempi di tale tipo di applicazioni sono: i DBMS. i risolutori di sistemi di equazioni. i sistemi ABS. le applicazioni per il calcolo matematico come, ad esempio, Matlab. Il ciclo di vita del software definisce come sviluppare il software. Il primo passo da eseguire è: il progetto e la realizzazione. la verifica. lo schema concettuale. lo studio di fattibilità. La fase di verifica nel ciclo di vita del software riguarda le attività per: stabilire come l'applicazione dovrà realizzare le sue funzioni. stabilire cosa l'applicazione dovrà fare. pianificare le attività e le risorse del progetto. controllare che il programma svolgacorrettamente, completamente edefficientemente il compito per cui è stato sviluppato. Il software può essere sviluppato seguendo differenti paradigmi. Tra essi, il modello a cascata o a spirale. Tra i due: il modello a cascata si è rivelato la strategia vincente. il modello a spirale si è rivelato la strategia vincente. il modello a cascata prevede diverse versioni del programma (alfa, beta etc.). il modello a spirale è stato abbandonato perché più costoso. La qualità del software è un importante aspetto in ambito di progettazione del software. Esse si dividono in: esterne ed interne. astratte e modulari. interne e non visibili. formali e non formali. Le qualità del software si dividono in esterne e interne. Le qualità esterne: includono il tempo di collaudo. includono la modularizzazione. riguardano gli sviluppatori del software. sono visibili agli utenti del sistema. Tra i diversi fattori che condizionano le qualità esterne del software si trova: la verificabilità. la correttezza. la leggibilità. la comprensibilità. Tra i diversi fattori che condizionano le qualità interne del software si trova: l'usabilità. l'estendibilità. la modularità. la robustezza. In ambito di progettazione del software, la modularità concerne: la facilità di operare su diverse piattaforme. la possibilità di verificare che il software funzioni e che gli obiettivi proposti siano stati conseguiti. l'organizzazione del software in parti specificate, unità o moduli, che interagiscono tra loro individualmente. la completezza della documentazione. Le qualità del software possono essere in contrasto l'una con l'altra. Per esempio sono in contrasto: usabilità e sicurezza. modularità e leggibilità. comprensibilità e leggibilità. completezza ed efficacia della documentazione. Al fine di bilanciare le qualità del software in contrasto tra loro si deve considerare: il ciclo di vita del software. il modello a spirale. il modello a cascata. la tendenza corrente nello sviluppo di applicazioni del software. Nello sviluppo del software il principio di rigore e formalità riguarda: l'identificare aspetti fondamentali ed ignorare i dettagli irrilevanti. la realizzazione della separazione degli interessi in due fasi. l'approccio rigoroso che individua una soluzione tecnica deterministicamente corretta. l'affrontare separatamente i diversi aspetti per dominare la complessità. Nello sviluppo del software il principio di modularità concerne: l'identificare aspetti fondamentali e ignorare i dettagli irrilevanti. la traduzione delle esigenze in una soluzione tecnica deterministicamente corretta. l'anticipazione del cambiamento. il costruire, nella pratica, unità software "piccole e ben fatte". Nella progettazione del software, considerare una soluzione che sia il più generale possibile si identifica nel principio di: generalità. modularità. astrazione. incrementalità. La modularizzazione e' un aspetto molto importante nella progettazione del software (SW); essa rappresenta il principio secondo cui il SW: e' efficiente. può essere strutturato in moduli. prevede che l'utente che usa i moduli debba conoscerne tutte le parti interne. deve essere progettato per step. La modularizzazione e' un aspetto molto importante nella progettazione del software. Una delle caratteristiche di un modulo e' che questi deve possedere: nessun interfacciamento verso l'esterno. relazioni strutturali con altri moduli definite tramite interfaccia. parti interne scorrelate tra loro. parti interne sempre visibili e note agli utenti. In un modulo, i meccanismi di accesso alle funzionalità del modulo stesso sono meccanismi che regolano: le interazioni tra le parti interne del modulo. le interazioni tra le parti nascoste del modulo. come accedere alle funzionalità del modulo e come questi accede agli altri moduli. gli accessi degli utenti alle informationi nascoste. Uno dei dogmi della modularità e' il principio di unitarietà, secondo cui un modulo deve: comunicare le informazioni nascoste. scambiare con altri moduli la maggiore quantità di informazione possibile. comunicare con il massimo numero di moduli possibile. avere una unità concettuale ben definita e incorporare tutti gli aspetti relativi a tale unità concettuale. L'interfaccia tra un modulo e l'altro deve essere chiara e ridotta. Questo significa che ci deve essere: basso accoppiamento. alto accoppiamento. bassa coesione. interfacciamento non esplicito. Nella progettazione del software quando si parla di "information hiding" si intende che: le informazioni inessenziali devono essere nascoste, cioe' non tutte le informazioni devono essere accessibili. anche le informazioni inessenziali devono essere visibili. anche le informazioni essenziali devono essere nascoste. ci deve essere sempre alto accoppiamento tra i moduli. Tra i principi per la modularità possiamo annoverare: l'alta coesione. la bassa coesione interna. l'alto accoppiamento. l'interfacciamento non esplicito. La modularizzazione prevede che un modulo presenti elementi fortemente coesi, cioe': con alto accoppiamento. che le varie funzionalità, messe a disposizione da un singolo modulo, siano strettamente correlate tra di loro. che ci sia un'alta variabilità delle funzionalità. che ci sia un'alta disomogeneità delle funzionalità. Una buona modularizzazione implica un basso accoppiamento tra i moduli; ciò e' correlato: all'efficienza. alla riusabilità. alla corretta implementazione dell'information hiding. al fatto che una modifica di un modulo non comporti gramdi modifiche ad un altro modulo. Una buona modularizzazione e' un aspetto molto importante nella progettazione del software (SW); una delle conseguenze e' che: progetto, competenze, e lavoro non possano essere distribuiti. si ottenga certamente un miglioramento dell'efficienza del programma. rilevare eventuali errori nel software sia più semplice. rilevare eventuali errori nel software sia più complesso. In un linguaggio di programmazione orientato agli oggetti (object oriented): le funzioni vengono messe al primo posto e gli oggetti sono secondari. il focus è sugli oggetti, in modo da creare più facilmente modelli basati sul mondo reale. il focus è sulle operazioni. e' sconsigliabile utilizzare le classi. In un linguaggio di programmazione orientato agli oggetti (object oriented), gli oggetti: permettono di modellare più facilmente il mondo reale. sono di secondaria importanza. rendono più complessa la progettazione del SW rispetto ad altri paradigmi di programmazione. non possono interagire tra loro. Il C è un linguaggio di programmazione imperativo di natura procedurale. Diversamente dai programmi OO (object oriented), i programmi scritti in C: hanno un forte focus sugli oggetti e quindi sulle classi. vengono sviluppati considerando gli oggetti e poi le classi. si basano sull'utilizzo di tabelle e operatori relazionali. sono composti da espressioni matematiche e da istruzioni. Si consideri la programmazione orientata agli oggetti (object oriented). Una "classe" è un concetto astratto per definire: attributi. paradigmi. oggetti. funzioni. Nella programmazione orientata agli oggetti (object oriented) le strutture dati di una classe sono dette: metodi. attributi. oggetti. istanze. Si consideri la programmazione orientata agli oggetti (object oriented). Una classe è: un concetto astratto. un attributo. una istanza. la rappresentazione di un singolo, specifico oggetto. I principi fondamentali della programmazione orientata agli oggetti (object oriented) sono l'incapsulamento, l'astrazione, l'ereditarietà e il polimorfismo. In particolare, l'incapsulamento ha lo scopo: di nascondere i dettagli di implementazione interna. di dare accesso allo stato e ai comportamenti di un oggetto solo attraverso un sottoinsieme di elementi pubblici. di definire un legame di dipendenza di tipo gerarchico tra classi diverse. di far sì che uno stesso oggetto assuma più forme. Tra i principi fondamentali della programmazione orientata agli oggetti (object oriented) vi è l'astrazione. Essa consiste nel: nascondere i dettagli di implementazione interna. dare accesso allo stato e ai comportamenti di un oggetto solo attraverso un sottoinsieme di elementi pubblici. definire un legame di dipendenza di tipo gerarchico tra classi diverse. far sì che uno stesso oggetto assuma più forme. Tra i principi fondamentali della programmazione orientata agli oggetti (object oriented) vi è l'ereditarietà. Essa consiste nel: far sì che uno stesso oggetto assuma più forme. dare accesso allo stato e ai comportamenti di un oggetto solo attraverso un sottoinsieme di elementi pubblici. definire un legame di dipendenza di tipo gerarchico tra classi diverse. nascondere i dettagli di implementazione interna. Tra i principi fondamentali della programmazione orientata agli oggetti (object oriented) vi è il polimorfismo. Esso consiste nel: nascondere i dettagli di implementazione interna. definire un legame di dipendenza di tipo gerarchico tra classi diverse. dare accesso allo stato e ai comportamenti di un oggetto attraverso un sottoinsieme di elementi pubblici. far sì che uno stesso oggetto assuma più forme. La relazione che intercorre tra intelligenza artificiale, il machine learning e il deep learning può essere espressa tramite la simbologia della teoria degli insiemi: all'interno dell'intelligenza artificiale si colloca il machine learning. all'interno del machine learning si colloca l'intelligenza artificiale. all'interno del deep learning si colloca l'intelligenza artificiale. all'interno del deep learning si colloca il machine learning. I primi lavori scientifici sull'intelligenza artificiale risalgono al 1950 circa. Essi hanno avuto risultati interessanti come la realizzazione di: sistemi in grado di tagliare l'erba autonomamente. sistemi in grado di afferrare tramite una mano di un robot una matita. sistemi di miglioramento per le immagini digitali. programmi in grado di giocare a scacchi. Lo studio dell'intelligenza artificiale ha portato alla seguente conclusione: non tutti i problemi che un essere umano si trova ad affrontare ogni giorno possono essere facilmente rappresentati tramite un insieme predefinito di regole. i problemi più semplici per un umano sono i più facili da risolvere per l'intelligenza artificiale. prendere una penna rossa da un astuccio con tante penne colorate è un problema molto semplice per un robot. e' possibile realizzare sistemi intelligenti e adattivi semplicemente tramite una lista di condizioni if-else. Il meccanismo di funzionamento del machine learning è basato sui dati. In particolare, il paradigma del machine learning prevede: come input i dati e le regole e come output le risposte. come input i dati e le risposte attese e come output le regole che consentono di connettere i dati alle risposte attese. come input le regole e le risposte e come output i dati. come input le formule matematiche e le risposte e come output i dati. Un meccanismo di funzionamento del machine learning è basato sull'apprendimento supervisionato. Esistono anche altre modalità di apprendimento, tra cui l'apprendimento: robotizzato e esponenziale. ultra-supervisionato e mega-supervisionato. semi-supervisionato e di rinforzo. intrarevisionato e con regole. Con le tecniche di apprendimento mediante machine learning: i sistemi imparano a ragionare come un essere umano. e' possibile costruire macchine in grado di compiere perfettamente qualunque operazione umana. vengono generate delle regole che, se applicate ad uno specifico insieme di dati, forniscono i risultati desiderati. viene ricreato fisicamente il cervello umano. Un algoritmo di machine learning riesce a creare un modello predittivo in grado di ottenere buoni risultati su nuovi dati (diversi dai dati di training). Questo è possibile se: i nuovi dati hanno proprietà statistiche molto diverse dai dati di training. i dati di training sono stati scelti in modo da rispecchiare la distribuzione statistica dei casi reali. i nuovi dati hanno proprietà statistiche completamente differenti dai dati di training. i nuovi dati e i dati di training non sono correlabili tra loro. Il deep learning è una particolare branca del machine learning in cui il modello statistico viene imparato gerarchicamente, cioè: si hanno più strati di apprendimento concatenati. si ha un solo strato centralizzato di apprendimento. si ha un solo layer di apprendimento. l'unico layer di apprendimento è nascosto. La parola deep (profondo) sta ad indicare la "lunga" catena di rappresentazioni che vengono create in un sistema di apprendimento automatico. Il numero di layer che contribuiscono alla creazione del modello indicano: il grado del modello. i byte usati nel modello. i bit usati nel modello. la profondità della rete. Nel deep learning, le rappresentazioni vengono apprese tramite l'uso di reti neurali, grazie al fatto che: il deep learning consente alla macchina di pensare come un cervello umano. deep learning e meccanismi cognitivi del cervello umano sono la stessa cosa. tecniche matematiche permettono di creare una rappresentazione accurata del problema derivata dai dati. il funzionamento delle reti neurali è in tutto e per tutto identico ai meccanismi cognitivi del cervello umano. |