{"version":3,"sources":["webpack:///./components/Example.less","webpack:///./routes/BasiDiDati.js","webpack:///./components/Example.js"],"names":["module","exports","r","String","raw","title","href","to","props","class","style","example","children"],"mappings":"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","file":"route-BasiDiDati.chunk.5c5d7.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.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\"};","import {Section, Panel, Timer, ILatex, TablePanel, BLatex, PLatex} from \"bluelib\";\nimport Example from \"../components/Example\";\n\nconst r = String.raw;\n\nexport default function (props) {\n return (\n
\n

Basi di dati

\n
\n \n \n \n \n

\n Se sei uno studente dell'Unimore, puoi accedere all'archivio del corso su Google Drive.\n

\n
\n
\n
\n \n

\n Uno scritto con tre domande:\n

\n
    \n
  • Progettazione concettuale e logica
  • \n
  • Formulazione interrogazione
  • \n
  • Una domanda tra:\n
      \n
    • Studio dato derivato
    • \n
    • Progettazione fisica
    • \n
    • Tecnologia database
    • \n
    \n
  • \n
\n
\n \n
    \n
  1. \n
  2. \n
  3. \n
\n
\n
\n
\n \n

\n In gruppo, progettare un database secondo queste specifiche.\n

\n

\n Va consegnato via mail almeno 10 giorni prima dello scritto.\n

\n
\n \n
    \n
  1. \n
  2. \n
  3. \n
\n
\n
\n
\n \n

\n Link\n

\n
\n
\n
\n \n \n \n Simbolo\n Descrizione\n \n \n \n \n {r`N_{tuple}`}\n Numero di tuple di una tabella\n \n \n {r`N_{blocchi}`}\n Numero di blocchi di una tabella\n \n \n {r`N_{foglie}`}\n Numero di foglie di un indice\n \n \n {r`N_{indici}`}\n Numero di indici presenti in una tabella\n \n \n {r`N_{unici}`}\n Numero di valori unici presenti in una colonna\n \n \n {r`F`}\n Fattore di selettività di una condizione\n \n \n {r`C`}\n Costo di accesso a una o più tuple\n \n \n {r`N_{selezionati}`}\n Numero di tuple del risultato\n \n \n \n
\n
\n \n

\n Espressione formata da una o più condizioni moltiplicate tra loro.\n

\n
\n \n

\n Condizioni che soddisfano i seguenti requisiti:\n

\n
    \n
  • \n Usa uno dei seguenti operatori:\n
      \n
    • {r`<`}
    • \n
    • {r`\\leq`}
    • \n
    • {r`=`}
    • \n
    • {r`\\geq`}
    • \n
    • {r`>`}
    • \n
    • {r`BETWEEN`}
    • \n
    • {r`OR`} (solo in alcuni DBMS)
    • \n
    \n
  • \n
  • Uno dei due termini del confronto è una colonna della tabella
  • \n
  • L'altro termine del confronto è una costante numerica
  • \n
\n
\n \n

\n È possibile costruire indici sulle colonne di una tabella per velocizzare le query che riguardano quelle colonne.\n

\n

\n In particolare, ogni tabella può avere un indice clustered e infiniti indici unclustered.\n

\n

\n Generalmente, l'indice clustered è costruito sulla colonna della primary key, ma non è sempre quello il caso.\n

\n

\n Gli indici vanno tenuti aggiornati, e ciò ha un costo di manutenzione:\n

\n
    \n
  • DELETE: {r`N_{indici} \\cdot 2 \\cdot N_{selezionati}`}
  • \n
  • UPDATE: {r`N_{indici} \\cdot 4 \\cdot N_{selezionati}`}
  • \n
\n

\n È possibile usare gli indici nelle query solo per gli argomenti di ricerca attraverso indice.\n

\n
\n
\n
\n \n

\n La percentuale di tuple di una tabella che soddisfano una condizione.\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CondizioneFattore di selettività
col = $costante{r`F = \\frac{1}{N_{unici}`}
col != $costante{r`F = 1 - \\frac{1}{N_{unici}`}
col1 != col2{r`F = \\frac{1}{max(N_{unici_A}, N_{unici_B})`}
IN{r`F = \\frac{n_{IN}}{N_{unici}}`}
col > $costante{r`F = \\frac{ max(col) - \\$costante }{ max(col) - min(col) }`}
{r`col < $costante`}{r`F = \\frac{ \\$costante - min(col) }{ max(col) - min(col) }`}
col BETWEEN $lower AND $upper{r`F = \\frac{ \\$upper - \\$lower }{ max(col) - min(col) }`}
cond1 OR cond2{r`F = F_{cond1} + F_{cond2} - ( F_{cond1} \\cdot F_{cond2} )`}
\n
\n \n

\n Quante unità di lavoro costa accedere a una specifica relazione:\n

\n {r`\n C = {\\color{yellow} {C_{indice}}} + {\\color{Orange} C_{relazione}}\n `}\n

\n Per accedere attraverso un indice a una specifica tupla della relazione, si spenderà:\n

\n {r`\n C = {\\color{yellow} 1} + {\\color{Orange} 1}\n `}\n

\n Se le tuple a cui si vuole accedere sono più di una, allora, il costo dipenderà da se l'indice è clustered o non-clustered.\n

\n \n Nel calcolo del costo di una query, si considerano tutti i cambi di pagina come page fault.\n \n

\n Per gli indici clustered, visto che basta caricare in memoria i blocchi in sequenza, il costo sarà:\n

\n {r`\n C = {\\color{yellow} ( F \\cdot N_{foglie} ) } + {\\color{Orange} ( F \\cdot N_{blocchi} ) }\n `}\n

\n Per gli indici unclustered, per i quali potremmo dover caricare e rimuovere lo stesso blocco dalla memoria più volte, il costo sarà:\n

\n {r`\n C = {\\color{yellow} ( F \\cdot N_{foglie} ) } + {\\color{Orange} ( F \\cdot N_{tuple} ) }\n `}\n

\n Se si stanno effettuando query su più indici unclustered, il costo sarà:\n

\n {r`\n C = {\\color{yellow}\\sum_k ( F_k \\cdot N_{foglie_k} )} + {\\color{Orange} \\left( \\prod_k F_k \\cdot N_{tuple} \\right)}\n `}\n
\n \n

\n Quante unità di lavoro costa effettuare un join tra due relazioni.\n

\n

\n Varia in base al metodo di join utilizzato.\n

\n

\n Utilizzando il metodo del nested loop:\n

\n {r`\n C_{1 \\times 2} = C_1 + ( N_{selezionati_1} \\cdot C_2 )\n `}\n

\n La scelta della colonna su cui iterare è quindi importante!\n

\n
\n
\n
\n )\n}\n","import style from \"./Example.less\";\n\nexport default function(props) {\n return (\n
\n {props.children}\n
\n );\n}\n"],"sourceRoot":""}