(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"2w3n":function(l){l.exports={red:"red__2y1B_",orange:"orange__dD2kx",yellow:"yellow__OEpwl",lime:"lime__CVe41",cyan:"cyan__26ZAg",blue:"blue__LO7Xm",magenta:"magenta__1Akee",example:"example__2PzAa"}},"S+8T":function(l,n,e){"use strict";e.r(n),function(l){vari=e("mbOI"),o=e("ke5e");letu,t,a,c,r,d,s,p,m,_,g,f,b,h,z,N,v,w,F,y,C,q,k,E,x,O,P,$,A,B,S,T,D=l=>l;constI=String.raw;n.default=function(){returnl("div",null,l("h1",null,"Basi di dati"),l(i.p,{title:"Informazioni"},l(i.o,{title:"Contatti"},l("ul",null,l("li",null,l("a",{href:"mailto:riccardo.martoglia@unimo.it"},"Prof. Riccardo Martoglia")))),l(i.o,{title:"Archivio"},l("p",null,"Se sei uno ",l("b",null,"studente dell'Unimore"),", puoi accedere all'",l("b",null,l("a",{href:"https://drive.google.com/drive/folders/1q3bOf9czDXq7Bd5-kwdICuz-9Nx1zVp_"},"archivio del corso su Google Drive")),"."))),l(i.p,{title:"Esame"},l(i.o,{title:"Scritto"},l("p",null,"Uno scritto con tre domande:"),l("ul",null,l("li",null,"Progettazione concettuale e logica"),l("li",null,"Formulazione interrogazione"),l("li",null,"Una domanda tra:",l("ul",null,l("li",null,"Studio dato derivato"),l("li",null,"Progettazione fisica"),l("li",null,"Tecnologia database"))))),l(i.o,{title:"Appelli"},l("ol",null,l("li",null,l(i.r,{to:"2020-06-24"})),l("li",null,l(i.r,{to:"2020-07-09"})),l("li",null,l(i.r,{to:"2020-07-28"}))))),l(i.p,null,l(i.o,{title:"Progetto"},l("p",null,"In gruppo, progettare un database secondo ",l("a",{href:"https://t.me/unimorefiles/23"},"queste")," specifiche."),l("p",null,"Va consegnato via mail almeno 10 giorni prima dello scritto.")),l(i.o,{title:"Termini di consegna"},l("ol",null,l("li",null,l(i.r,{to:"2020-06-14"})),l("li",null,l(i.r,{to:"2020-06-30"})),l("li",null,l(i.r,{to:"2020-07-18"}))))),l(i.p,{title:"Visualizzazioni utili"},l(i.o,{title:"B+ Tree"},l("p",null,l("a",{href:"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html"},"Link")))),l(i.p,{title:"Calcolo dei costi delle query"},l(i.q,null,l("thead",null,l("tr",null,l("th",null,"Simbolo"),l("th",null,"Descrizione"))),l("tbody",null,l("tr",null,l("td",null,l(i.a,null,I(u||(u=D`N_{tuple}`)))),l("td",null,"Numero di tuple di una tabella")),l("tr",null,l("td",null,l(i.a,null,I(t||(t=D`N_{blocchi}`)))),l("td",null,"Numero di blocchi di una tabella")),l("tr",null,l("td",null,l(i.a,null,I(a||(a=D`N_{foglie}`)))),l("td",null,"Numero di foglie di un indice")),l("tr",null,l("td",null,l(i.a,null,I(c||(c=D`N_{indici}`)))),l("td",null,"Numero di indici presenti in una tabella")),l("tr",null,l("td",null,l(i.a,null,I(r||(r=D`N_{unici}`)))),l("td",null,"Numero di valori unici presenti in una colonna")),l("tr",null,l("td",null,l(i.a,null,I(d||(d=D`F`)))),l("td",null,"Fattore di selettività di una condizione")),l("tr",null,l("td",null,l(i.a,null,I(s||(s=D`C`)))),l("td",null,"Costo di accesso a una o più tuple")),l("tr",null,l("td",null,l(i.a,null,I(p||(p=D`N_{selezionati}`)))),l("td",null,"Numero di tuple del risultato"))))),l(i.p,null,l(i.o,{title:"Fattore booleano"},l("p",null,"Espressione formata da ",l("b",null,"una o più condizioni moltiplicate tra loro"),".")),l(i.o,{title:"Argomenti di ricerca attraverso indice"},l("p",null,"Condizioni che soddisfano i seguenti requisiti:"),l("ul",null,l("li",null,"Usa uno dei seguenti ",l("b",null,"operatori"),":",l("ul",null,l("li",null,l(i.g,null,I(m||(m=D`<`)))),l("li",null,l(i.g,null,I(_||(_=D`\leq`)))),l("li",null,l(i.g,null,I(g||(g=D`=`)))),l("li",null,l(i.g,null,I(f||(f=D`\geq`)))),l("li",null,l(i.g,null,I(b||(b=D`>`)))),l("li",null,l("b",null,l("code",null,I(h||(h=D`BETWEEN`))))),l("li",null,l("b",null,l("code",null,I(z||(z=D`OR`))))," (solo in alcuni DBMS)"))),l("li",null,"Uno dei due termini del confronto è ",l("b",null,"una colonna")," della tabella"),l("li",null,"L'altro termine del confronto è ",l("b",null,"una costante numerica")))),l(i.o,{title:"Indici"},l("p",null,"È possibile costruire indici sulle colonne di una tabella per velocizzare le query che riguardano quelle colonne."),l("p",null,"Inparticolare,ogn
`))),l("p",null,"Se le tuple a cui si vuole accedere sono più di una, allora, il costo dipenderà da se l'indice è clustered o non-clustered."),l(o.a,null,"Nel calcolo del costo di una query, si considerano tutti i cambi di pagina come ",l("b",null,"page fault"),"."),l("p",null,"Per gli indici ",l("b",null,"clustered"),", visto che basta caricare in memoria i blocchi in sequenza, il costo sarà:"),l(i.n,null,I(A||(A=D`
`))),l("p",null,"Per gli indici ",l("b",null,"unclustered"),", per i quali potremmo dover caricare e rimuovere lo stesso blocco dalla memoria più volte, il costo sarà:"),l(i.n,null,I(B||(B=D`
`)))),l(i.o,{title:"Costo di join"},l("p",null,"Quante ",l("i",null,"unità di lavoro")," costa effettuare un join tra due relazioni."),l("p",null,"Varia in base al metodo di join utilizzato."),l("p",null,"Utilizzando il metodo del ",l("b",null,"nested loop"),":"),l(i.n,null,I(T||(T=D`
`))),l("p",null,"La scelta della colonna su cui iterare è quindi importante!"))))}}.call(this,e("hosL").h)},ke5e:function(l,n,e){"use strict";(function(l){var i=e("2w3n"),o=e.n(i);n.a=function(n){return l("div",{class:o.a.example},n.children)}}).call(this,e("hosL").h)}}]);