(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2e/m":function(l,n,t){"use strict";(function(l){var e=t("UrZR"),i=t.n(e);n.a=function(n){return l("table",{class:i.a.tablepanel},n.children)}}).call(this,t("hosL").h)},"3duz":function(l){l.exports={example:"example__9acWs"}},"8uYk":function(l){l.exports={box:"box__3cKyY",default:"default__v-emJ",red:"red__339Cz",orange:"orange__24_8v",yellow:"yellow__1Jo9W",lime:"lime__34yV5",cyan:"cyan__3RqLr",blue:"blue__13Wnj",magenta:"magenta__2tkzq"}},JESo:function(l){l.exports={inline:"inline__1yl8V",block:"block__fPiiB"}},OPqz:function(l,n,t){"use strict";(function(l){var e=t("TWV3"),i=t("hosL");n.a=function(n){return l(i.Fragment,null,l("h2",null,n.title),l(e.a,null,n.children))}}).call(this,t("hosL").h)},OmdA:function(l){l.exports={title:"title__3ZVpg",contents:"contents__20_NI"}},PGF6:function(l,n,t){"use strict";var e=t("hosL");n.a=Object(e.createContext)(null)},Q7TX:function(l,n,t){"use strict";(function(l){t.d(n,"a",(function(){return r}));var e=t("JESo"),i=t.n(e),o=t("QRet"),u=t("8CDw"),a=t("wQ73"),c=t("PGF6");const r=Object.freeze({INLINE:i.a.inline,BLOCK:i.a.block});n.b=function(n){let t,e,s=Object(o.b)(u.a),d=Object(o.b)(a.a),_=Object(o.b)(c.a);return t=void 0===n.inline?d:n.inline,e=void 0===n.display?null===_?r.INLINE:_:n.display,l("img",t?{src:`https://latex.codecogs.com/svg.latex?\\inline {\\color{${s}} ${n.children} }`,alt:n.children,title:n.children,class:i.a.latex+" "+e}:{src:`https://latex.codecogs.com/svg.latex?{\\color{${s}} ${n.children} }`,alt:n.children,title:n.children,class:i.a.latex+" "+e})}}).call(this,t("hosL").h)},QNda:function(l,n,t){"use strict";(function(l){t.d(n,"a",(function(){return u}));var e=t("hosL"),i=t("e8JA"),o=t.n(i);class u extends e.Component{constructor(){super(),this.state={now:Date.now()},this.timer=null}componentDidMount(){this.timer=setInterval(()=>{this.setState({now:Date.now()})},1e3)}componentWillUnmount(){null!==this.timer&&clearInterval(this.timer)}render(){let n="Unknown date",t=o.a.timer,e={milliseconds:"?",seconds:"?",minutes:"?",hours:"?",days:"?"};if(this.props.to){n=new Date(this.props.to);let l=n-this.state.now;l>0?e={milliseconds:l%1e3,seconds:Math.floor(l/1e3)%60,minutes:Math.floor(l/6e4)%60,hours:Math.floor(l/36e5)%24,days:Math.floor(l/864e5)}:(e={milliseconds:0,seconds:0,minutes:0,hours:0,days:0},t+=" "+o.a.expired)}else t+=" "+o.a.unknown;return l("div",{class:t,title:n},l("div",{class:o.a.days+" "+o.a.count},e.days),l("div",{className:o.a.days+" "+o.a.text},"giorni"),l("div",{class:o.a.hours+" "+o.a.count},e.hours),l("div",{className:o.a.hours+" "+o.a.text},"ore"),l("div",{class:o.a.minutes+" "+o.a.count},e.minutes),l("div",{className:o.a.minutes+" "+o.a.text},"minuti"),l("div",{class:o.a.seconds+" "+o.a.count},e.seconds),l("div",{class:o.a.seconds+" "+o.a.text},"secondi"))}}}).call(this,t("hosL").h)},QRet:function(l,n,t){"use strict";function e(l,n){z.options.__h&&z.options.__h(N,l,x||n),x=0;var t=N.__H||(N.__H={__:[],__h:[]});return l>=t.__.length&&t.__.push({}),t.__[l]}function i(l){return x=1,o(b,l)}function o(l,n,t){var i=e(g++,2);return i.t=l,i.__c||(i.__c=N,i.__=[t?t(n):b(void 0,n),function(l){var n=i.t(i.__[0],l);i.__[0]!==n&&(i.__[0]=n,i.__c.setState({}))}]),i.__}function u(l,n){var t=e(g++,3);!z.options.__s&&v(t.__H,n)&&(t.__=l,t.__H=n,N.__H.__h.push(t))}function a(l,n){var t=e(g++,4);!z.options.__s&&v(t.__H,n)&&(t.__=l,t.__H=n,N.__h.push(t))}function c(l){return x=5,s((function(){return{current:l}}),[])}function r(l,n,t){x=6,a((function(){"function"==typeof l?l(n()):l&&(l.current=n())}),null==t?t:t.concat(l))}function s(l,n){var t=e(g++,7);return v(t.__H,n)?(t.__H=n,t.__h=l,t.__=l()):t.__}function d(l,n){return x=8,s((function(){return l}),n)}function _(l){var n=N.context[l.__c],t=e(g++,9);return t.__c=l,n?(null==t.__&&(t.__=!0,n.sub(N)),n.props.value):l.__}function f(l,n){z.options.useDebugValue&&z.options.useDebugValue(n?n(l):l)}function p(){w.some((function(l){if(l.__P)try{l.__H.__h.forEach(h),l.__H.__h.forEach(m),l.__H.__h=[]}catch(n){return l.__H.__h=[],z.options.__e(n,l.__v),!0}})),w=[]}function h(l){"function"==typeof l.u&&l.u()}function m(l){l.u=l.__()}function v(l,n){return!l||n.some((function(n,t){return n!==l[t]}))}function b(l,n){return"function"==typeof n?n(l):n}t.d(n,"j",(function(){return i})),t.d(n,"h",(function(){return o})),t.d(n,"d",(function(){return u})),t.d(n,"f",(function(){return a})),t.d(n,"i",(function(){return c})),t.d(n,"e",(function(){return r})),t.d(n,"g",(function(){return s})),t.d(n,"a",(function(){return d})),t.d(n,"b",(function(){return _})),t.d(n,"c",(function(){return f}));var g,N,y,z=t("hosL"),x=0,w=[],L=z.options.__r,E=z.options.diffed,F=z.options.__c,C=z.options.unmount;z.options.__r=function(l){L&&L(l),g=0;var n=(N=l.__c).__H;n&&(n.__h.forEach(h),n.__h.forEach(m),n.__h=[])},z.options.diffed=function(l){E&&E(l);var n=l.__c;n&&n.__H&&n.__H.__h.length&&(1!==w.push(n)&&y===z.options.requestAnimationFrame||((y=z.options.requestAnimationFrame)||function(l){var n,t=function(){clearTimeout(e),cancelAnimationFrame(n),setTimeout(l)},e=setTimeout(t,100);"undefined"!=typeof window&&(n=requestAnimationFrame(t))})(p))},z.options.__c=function(l,n){n.some((function(l){try{l.__h.forEach(h),l.__h=l.__h.filter((function(l){return!l.__||m(l)}))}catch(t){n.some((function(l){l.__h&&(l.__h=[])})),n=[],z.options.__e(t,l.__v)}})),F&&F(l,n)},z.options.unmount=function(l){C&&C(l);var n=l.__c;if(n&&n.__H)try{n.__H.__.forEach(h)}catch(l){z.options.__e(l,n.__v)}}},"S+8T":function(l,n,t){"use strict";t.r(n),function(l){t.d(n,"default",(function(){return Q}));var e=t("hosL"),i=t("OPqz"),o=t("imVn"),u=t("QNda"),a=t("yDBo"),c=t("2e/m"),r=t("zDbI"),s=t("UEzA"),d=t("Wxxq");let _,f,p,h,m,v,b,g,N,y,z,x,w,L,E,F,C,q,A,D,k,O,T,I,H,P,U,B,$,S,V,j,W=l=>l;const M=String.raw;class Q extends e.Component{render(){return l("div",null,l("h1",null,"Basi di dati"),l(i.a,{title:"Informazioni"},l(o.a,{title:"Contatti"},l("ul",null,l("li",null,l("a",{href:"mailto:riccardo.martoglia@unimo.it"},"Prof. Riccardo Martoglia")))),l(o.a,{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.a,{title:"Esame"},l(o.a,{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(o.a,{title:"Appelli"},l("ol",null,l("li",null,l(u.a,{to:"2020-06-24"})),l("li",null,l(u.a,{to:"2020-07-09"})),l("li",null,l(u.a,{to:"2020-07-28"}))))),l(i.a,null,l(o.a,{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(o.a,{title:"Termini di consegna"},l("ol",null,l("li",null,l(u.a,{to:"2020-06-14"})),l("li",null,l(u.a,{to:"2020-06-30"})),l("li",null,l(u.a,{to:"2020-07-18"}))))),l(i.a,{title:"Visualizzazioni utili"},l(o.a,{title:"B+ Tree"},l("p",null,l("a",{href:"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html"},"Link")))),l(i.a,{title:"Calcolo dei costi delle query"},l(c.a,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(r.a,null,M(_||(_=W`N_{tuple}`)))),l("td",null,"Numero di tuple di una tabella")),l("tr",null,l("td",null,l(r.a,null,M(f||(f=W`N_{blocchi}`)))),l("td",null,"Numero di blocchi di una tabella")),l("tr",null,l("td",null,l(r.a,null,M(p||(p=W`N_{foglie}`)))),l("td",null,"Numero di foglie di un indice")),l("tr",null,l("td",null,l(r.a,null,M(h||(h=W`N_{indici}`)))),l("td",null,"Numero di indici presenti in una tabella")),l("tr",null,l("td",null,l(r.a,null,M(m||(m=W`N_{unici}`)))),l("td",null,"Numero di valori unici presenti in una colonna")),l("tr",null,l("td",null,l(r.a,null,M(v||(v=W`F`)))),l("td",null,"Fattore di selettività di una condizione")),l("tr",null,l("td",null,l(r.a,null,M(b||(b=W`C`)))),l("td",null,"Costo di accesso a una o più tuple")),l("tr",null,l("td",null,l(r.a,null,M(g||(g=W`N_{selezionati}`)))),l("td",null,"Numero di tuple del risultato"))))),l(i.a,null,l(o.a,{title:"Fattore booleano"},l("p",null,"Espressione formata da ",l("b",null,"una o più condizioni moltiplicate tra loro"),".")),l(o.a,{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(a.a,null,M(N||(N=W`<`)))),l("li",null,l(a.a,null,M(y||(y=W`\leq`)))),l("li",null,l(a.a,null,M(z||(z=W`=`)))),l("li",null,l(a.a,null,M(x||(x=W`\geq`)))),l("li",null,l(a.a,null,M(w||(w=W`>`)))),l("li",null,l("b",null,l("code",null,M(L||(L=W`BETWEEN`))))),l("li",null,l("b",null,l("code",null,M(E||(E=W`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(o.a,{title:"Indici"},l("p",null,"È possibile costruire indici sulle colonne di una tabella per velocizzare le query che riguardano quelle colonne."),l("p",null,"In particolare, ogni tabella può avere ",l("b",null,"un")," ",l("i",null,"indice clustered")," e ",l("b",null,"infiniti")," ",l("i",null,"indici unclustered"),"."),l("p",null,"Generalmente, l'indice clustered è costruito sulla colonna della primary key, ma ",l("a",{href:"https://stackoverflow.com/questions/15051869/relationship-of-primary-key-and-clustered-index"},"non è sempre quello il caso"),"."),l("p",null,"Gli indici vanno tenuti aggiornati, e ciò ha un ",l("b",null,"costo di manutenzione"),":"),l("ul",null,l("li",null,l("code",null,"DELETE"),": ",l(a.a,null,M(F||(F=W`N_{indici} \cdot 2 \cdot N_{selezionati}`)))),l("li",null,l("code",null,"UPDATE"),": ",l(a.a,null,M(C||(C=W`N_{indici} \cdot 4 \cdot N_{selezionati}`))))),l("p",null,"È possibile usare gli indici nelle query solo per gli ",l("b",null,"argomenti di ricerca attraverso indice"),"."))),l(i.a,null,l(o.a,{title:"Fattore di selettività"},l("p",null,"La percentuale di tuple di una tabella che soddisfano una condizione."),l("table",null,l("thead",null,l("tr",null,l("th",null,"Condizione"),l("th",null,"Fattore di selettività"))),l("tbody",null,l("tr",null,l("td",null,l("code",null,"col = $costante")),l("td",null,l(r.a,null,M(q||(q=W`F = \frac{1}{N_{unici}`))))),l("tr",null,l("td",null,l("code",null,"col != $costante")),l("td",null,l(r.a,null,M(A||(A=W`F = 1 - \frac{1}{N_{unici}`))))),l("tr",null,l("td",null,l("code",null,"col1 != col2")),l("td",null,l(r.a,null,M(D||(D=W`F = \frac{1}{max(N_{unici_A}, N_{unici_B})`))))),l("tr",null,l("td",null,l("code",null,"IN")),l("td",null,l(r.a,null,M(k||(k=W`F = \frac{n_{IN}}{N_{unici}}`))))),l("tr",null,l("td",null,l("code",null,"col > $costante")),l("td",null,l(r.a,null,M(O||(O=W`F = \frac{ max(col) - \$costante }{ max(col) - min(col) }`))))),l("tr",null,l("td",null,l("code",null,M(T||(T=W`col < $costante`)))),l("td",null,l(r.a,null,M(I||(I=W`F = \frac{ \$costante - min(col) }{ max(col) - min(col) }`))))),l("tr",null,l("td",null,l("code",null,"col BETWEEN $lower AND $upper")),l("td",null,l(r.a,null,M(H||(H=W`F = \frac{ \$upper - \$lower }{ max(col) - min(col) }`))))),l("tr",null,l("td",null,l("code",null,"cond1 OR cond2")),l("td",null,l(r.a,null,M(P||(P=W`F = F_{cond1} + F_{cond2} - ( F_{cond1} \cdot F_{cond2} )`)))))))),l(o.a,{title:"Costo di accesso"},l("p",null,"Quante ",l("i",null,"unità di lavoro")," costa accedere a una specifica relazione:"),l(s.a,null,M(U||(U=W` C = {\color{yellow} {C_{indice}}} + {\color{Orange} C_{relazione}} `))),l("p",null,"Per accedere attraverso un indice a una specifica tupla della relazione, si spenderà:"),l(s.a,null,M(B||(B=W` C = {\color{yellow} 1} + {\color{Orange} 1} `))),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(d.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(s.a,null,M($||($=W` C = {\color{yellow} ( F \cdot N_{foglie} ) } + {\color{Orange} ( F \cdot N_{blocchi} ) } `))),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(s.a,null,M(S||(S=W` C = {\color{yellow} ( F \cdot N_{foglie} ) } + {\color{Orange} ( F \cdot N_{tuple} ) } `))),l("p",null,"Se si stanno effettuando query su più indici unclustered, il costo sarà:"),l(s.a,null,M(V||(V=W` C = {\color{yellow}\sum_k ( F_k \cdot N_{foglie_k} )} + {\color{Orange} \left( \prod_k F_k \cdot N_{tuple} \right)} `)))),l(o.a,{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(s.a,null,M(j||(j=W` C_{1 \times 2} = C_1 + ( N_{selezionati_1} \cdot C_2 ) `))),l("p",null,"La scelta della colonna su cui iterare è quindi importante!"))))}}}.call(this,t("hosL").h)},TWV3:function(l,n,t){"use strict";(function(l){var e=t("htlC"),i=t.n(e);n.a=function(n){let t;return t=Array.isArray(n.children)?n.children.map(n=>l("div",{class:i.a.splitchild},n)):l("div",{class:i.a.splitchild},n.children),l("div",{class:i.a.split},l("div",{class:i.a.splitparent},t))}}).call(this,t("hosL").h)},UEzA:function(l,n,t){"use strict";(function(l){var e=t("zDbI");n.a=function(n){return l("p",null,l(e.a,null,n.children))}}).call(this,t("hosL").h)},UrZR:function(l){l.exports={tablepanel:"tablepanel__1Wil3"}},Wxxq:function(l,n,t){"use strict";(function(l){var e=t("3duz"),i=t.n(e);t("hosL"),n.a=function(n){return l("div",{class:i.a.example},n.children)}}).call(this,t("hosL").h)},Y9Ml:function(l,n,t){"use strict";(function(l){var e=t("8uYk"),i=t.n(e);const o=Object.freeze({RED:i.a.red,ORANGE:i.a.orange,YELLOW:i.a.yellow,LIME:i.a.lime,CYAN:i.a.cyan,BLUE:i.a.blue,MAGENTA:i.a.magenta,DEFAULT:i.a.default});n.a=function(n){let t=o.DEFAULT;return n.color&&(t=n.color),l("div",{class:i.a.box+" "+t},n.children)}}).call(this,t("hosL").h)},e8JA:function(l){l.exports={timer:"timer__3Z2pL",days:"days__myhe2",hours:"hours__3JUDn",minutes:"minutes__24lD7",seconds:"seconds__2vZ4f",count:"count__chi9X",text:"text__34ldC",unknown:"unknown__3sT2P",expired:"expired__zNiuP"}},htlC:function(l){l.exports={splitparent:"splitparent__3-wBs",splitchild:"splitchild__begkX"}},imVn:function(l,n,t){"use strict";(function(l){var e=t("OmdA"),i=t.n(e),o=t("Y9Ml");n.a=function(n){return l(o.a,{color:n.color},l("h3",{class:i.a.title},n.title),l("div",{class:i.a.contents},n.children))}}).call(this,t("hosL").h)},wQ73:function(l,n,t){"use strict";var e=t("hosL");n.a=Object(e.createContext)(!0)},yDBo:function(l,n,t){"use strict";(function(l){var e=t("Q7TX");n.a=function(n){return l(e.b,{inline:!0,display:e.a.INLINE},n.children)}}).call(this,t("hosL").h)},zDbI:function(l,n,t){"use strict";(function(l){var e=t("Q7TX");n.a=function(n){return l(e.b,{inline:!1,display:e.a.BLOCK},n.children)}}).call(this,t("hosL").h)}}]); //# sourceMappingURL=route-BasiDiDati.chunk.834ae.esm.js.map