mirror of
https://github.com/Steffo99/unisteffo.git
synced 2024-11-23 08:24:20 +00:00
1 line
No EOL
46 KiB
Text
Generated
1 line
No EOL
46 KiB
Text
Generated
{"version":3,"sources":["webpack:///./components/Elements/TablePanel.js","webpack:///./components/Elements/Example.less","webpack:///./components/Elements/Box.less","webpack:///./components/Rendering/Latex.less","webpack:///./components/Elements/Section.js","webpack:///./components/Elements/Panel.less","webpack:///./contexts/LatexDefaultDisplay.js","webpack:///./components/Rendering/Latex.js","webpack:///./components/Elements/Timer.js","webpack:///../src/index.js","webpack:///./routes/BasiDiDati.js","webpack:///./components/Layout/Split.js","webpack:///./components/Rendering/PLatex.js","webpack:///./components/Elements/TablePanel.less","webpack:///./components/Elements/Example.js","webpack:///./components/Elements/Box.js","webpack:///./components/Elements/Timer.less","webpack:///./components/Layout/Split.less","webpack:///./components/Elements/Panel.js","webpack:///./contexts/LatexDefaultInline.js","webpack:///./components/Rendering/ILatex.js","webpack:///./components/Rendering/BLatex.js"],"names":["props","class","style","tablepanel","children","module","exports","title","createContext","LatexDisplay","Object","freeze","INLINE","inline","BLOCK","block","display","renderColor","useContext","LatexRenderColor","defaultInline","LatexDefaultInline","defaultDisplay","LatexDefaultDisplay","undefined","src","alt","latex","Timer","state","Date","now","timer","componentDidMount","this","setInterval","setState","componentWillUnmount","clearInterval","render","dateTo","className","parts","milliseconds","seconds","minutes","hours","days","to","timeLeft","Math","floor","expired","unknown","count","text","Component","getHookState","index","type","options","_hook","currentComponent","currentHook","hooks","__hooks","_list","_pendingEffects","length","push","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","_component","_value","nextValue","action","useEffect","callback","args","_skipEffects","argsChanged","_args","useLayoutEffect","_renderCallbacks","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","concat","factory","_factory","useCallback","context","provider","_id","_context","sub","value","_defaultValue","useDebugValue","formatter","flushAfterPaintEffects","afterPaintEffects","some","component","_parentDom","forEach","invokeCleanup","invokeEffect","e","_catchError","_vnode","hook","_cleanup","oldArgs","newArgs","arg","f","prevRaf","oldBeforeRender","_render","oldAfterDiff","diffed","oldCommit","_commit","oldBeforeUnmount","unmount","vnode","c","requestAnimationFrame","raf","done","clearTimeout","timeout","cancelAnimationFrame","setTimeout","window","commitQueue","filter","cb","r","String","raw","BasiDiDati","href","Array","isArray","map","element","splitchild","split","splitparent","example","BoxColors","RED","red","ORANGE","orange","YELLOW","yellow","LIME","lime","CYAN","cyan","BLUE","blue","MAGENTA","magenta","DEFAULT","default","color","box","contents"],"mappings":"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","file":"route-BasiDiDati.chunk.e38b0.js","sourcesContent":["import style from \"./TablePanel.less\";\n\nexport default function (props) {\n return (\n <table class={style.tablepanel}>\n {props.children}\n </table>\n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__z2C0u\",\"orange\":\"orange__3e-Zm\",\"yellow\":\"yellow__2CxNB\",\"lime\":\"lime__33JDs\",\"cyan\":\"cyan__1exnO\",\"blue\":\"blue__16AH0\",\"magenta\":\"magenta__3tO7w\",\"example\":\"example__9acWs\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__339Cz\",\"orange\":\"orange__24_8v\",\"yellow\":\"yellow__1Jo9W\",\"lime\":\"lime__34yV5\",\"cyan\":\"cyan__3RqLr\",\"blue\":\"blue__13Wnj\",\"magenta\":\"magenta__2tkzq\",\"box\":\"box__3cKyY\",\"default\":\"default__v-emJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__1s_qO\",\"orange\":\"orange__8yp3v\",\"yellow\":\"yellow__zZSeb\",\"lime\":\"lime__3c_Z7\",\"cyan\":\"cyan__EdN8X\",\"blue\":\"blue__3YDdr\",\"magenta\":\"magenta__D6iXm\",\"inline\":\"inline__1yl8V\",\"block\":\"block__fPiiB\"};","import Split from \"../Layout/Split\";\nimport {Fragment} from \"preact\";\n\nexport default function (props) {\n return (\n <Fragment>\n <h2>\n {props.title}\n </h2>\n <Split>\n {props.children}\n </Split>\n </Fragment>\n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__1-G1M\",\"orange\":\"orange__26Xfh\",\"yellow\":\"yellow__p5pgZ\",\"lime\":\"lime__2wXxY\",\"cyan\":\"cyan__289vE\",\"blue\":\"blue__Zipdn\",\"magenta\":\"magenta__39Nrz\",\"title\":\"title__3ZVpg\",\"contents\":\"contents__20_NI\"};","import {createContext} from \"preact\";\n\nexport default createContext(null);\n","import style from './Latex.less';\nimport {useContext} from \"preact/hooks\";\nimport LatexRenderColor from \"../../contexts/LatexRenderColor\";\nimport LatexDefaultInline from \"../../contexts/LatexDefaultInline\";\nimport LatexDefaultDisplay from \"../../contexts/LatexDefaultDisplay\";\n\nexport const LatexDisplay = Object.freeze({\n INLINE: style.inline,\n BLOCK: style.block,\n})\n\nexport default function(props) {\n // black, blue, brown, cyan, darkgray, gray, green, lightgray, lime, magenta, olive, orange, pink, purple, red, teal, violet, white, yellow\n let renderColor = useContext(LatexRenderColor);\n let defaultInline = useContext(LatexDefaultInline);\n let defaultDisplay = useContext(LatexDefaultDisplay);\n\n let inline;\n if(props.inline === undefined) {\n inline = defaultInline;\n }\n else {\n inline = props.inline;\n }\n\n let display;\n if(props.display === undefined) {\n if(defaultDisplay === null) {\n display = LatexDisplay.INLINE;\n }\n else {\n display = defaultDisplay;\n }\n }\n else {\n display = props.display;\n }\n\n if(inline) {\n let equation = `\\\\inline {\\\\color{${renderColor}} ${props.children} }`;\n return (\n <img src={`https://latex.codecogs.com/svg.latex?${equation}`}\n alt={props.children}\n title={props.children}\n class={style.latex + \" \" + display}\n />\n );\n }\n else {\n let equation = `{\\\\color{${renderColor}} ${props.children} }`;\n return (\n <img src={`https://latex.codecogs.com/svg.latex?${equation}`}\n alt={props.children}\n title={props.children}\n class={style.latex + \" \" + display}\n />\n );\n }\n}\n","import {Component} from 'preact'\nimport style from \"./Timer.less\"\n\n\nexport default class Timer extends Component {\n constructor() {\n super();\n this.state = {\n \"now\": Date.now()\n };\n this.timer = null;\n }\n\n componentDidMount() {\n this.timer = setInterval(() => {\n this.setState({\"now\": Date.now()})\n }, 1000)\n }\n\n componentWillUnmount() {\n if(this.timer !== null) {\n clearInterval(this.timer)\n }\n }\n\n render() {\n let dateTo = \"Unknown date\";\n let className = style.timer;\n\n let parts = {\n milliseconds: \"?\",\n seconds: \"?\",\n minutes: \"?\",\n hours: \"?\",\n days: \"?\",\n };\n\n if(this.props.to) {\n dateTo = new Date(this.props.to);\n let timeLeft = dateTo - this.state.now;\n\n if(timeLeft > 0) {\n parts = {\n milliseconds: timeLeft % 1000,\n seconds: Math.floor(timeLeft / 1000) % 60,\n minutes: Math.floor(timeLeft / 60000) % 60,\n hours: Math.floor(timeLeft / 3600000) % 24,\n days: Math.floor(timeLeft / 86400000),\n };\n }\n\n else {\n parts = {\n milliseconds: 0,\n seconds: 0,\n minutes: 0,\n hours: 0,\n days: 0,\n };\n\n className += \" \" + style.expired;\n }\n }\n else {\n className += \" \" + style.unknown;\n }\n\n return (\n <div class={className} title={dateTo}>\n <div class={style.days + \" \" + style.count}>\n {parts.days}\n </div>\n <div className={style.days + \" \" + style.text}>\n giorni\n </div>\n <div class={style.hours + \" \" + style.count}>\n {parts.hours}\n </div>\n <div className={style.hours + \" \" + style.text}>\n ore\n </div>\n <div class={style.minutes + \" \" + style.count}>\n {parts.minutes}\n </div>\n <div className={style.minutes + \" \" + style.text}>\n minuti\n </div>\n <div class={style.seconds + \" \" + style.count}>\n {parts.seconds}\n </div>\n <div class={style.seconds + \" \" + style.text}>\n secondi\n </div>\n </div>\n )\n }\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\thooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks && c.__hooks._pendingEffects.length) {\n\t\tafterPaint(afterPaintEffects.push(c));\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\ttry {\n\t\t\tc.__hooks._list.forEach(invokeCleanup);\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater<any>} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer<any, any>} reducer\n * @param {import('./index').StateUpdater<any>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = hookState._reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (typeof hook._cleanup == 'function') hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\thook._cleanup = hook._value();\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","import {Component} from 'preact'\nimport Section from \"../components/Elements/Section\";\nimport Panel from \"../components/Elements/Panel\";\nimport Timer from \"../components/Elements/Timer\";\nimport ILatex from \"../components/Rendering/ILatex\";\nimport TablePanel from \"../components/Elements/TablePanel\";\nimport BLatex from \"../components/Rendering/BLatex\";\nimport PLatex from \"../components/Rendering/PLatex\";\nimport Example from \"../components/Elements/Example\";\n\nconst r = String.raw;\n\nexport default class BasiDiDati extends Component {\n render() {\n return (\n <div>\n <h1>Basi di dati</h1>\n <Section title={\"Informazioni\"}>\n <Panel title={\"Contatti\"}>\n <ul>\n <li><a href={\"mailto:riccardo.martoglia@unimo.it\"}>Prof. Riccardo Martoglia</a></li>\n </ul>\n </Panel>\n <Panel title={\"Archivio\"}>\n <p>\n Se sei uno <b>studente dell'Unimore</b>, puoi accedere all'<b><a href={\"https://drive.google.com/drive/folders/1q3bOf9czDXq7Bd5-kwdICuz-9Nx1zVp_\"}>archivio del corso su Google Drive</a></b>.\n </p>\n </Panel>\n </Section>\n <Section title={\"Esame\"}>\n <Panel title={\"Scritto\"}>\n <p>\n Uno scritto con tre domande:\n </p>\n <ul>\n <li>Progettazione concettuale e logica</li>\n <li>Formulazione interrogazione</li>\n <li>Una domanda tra:\n <ul>\n <li>Studio dato derivato</li>\n <li>Progettazione fisica</li>\n <li>Tecnologia database</li>\n </ul>\n </li>\n </ul>\n </Panel>\n <Panel title={\"Appelli\"}>\n <ol>\n <li><Timer to={\"2020-06-24\"}/></li>\n <li><Timer to={\"2020-07-09\"}/></li>\n <li><Timer to={\"2020-07-28\"}/></li>\n </ol>\n </Panel>\n </Section>\n <Section>\n <Panel title={\"Progetto\"}>\n <p>\n In gruppo, progettare un database secondo <a href={\"https://t.me/unimorefiles/23\"}>queste</a> specifiche.\n </p>\n <p>\n Va consegnato via mail almeno 10 giorni prima dello scritto.\n </p>\n </Panel>\n <Panel title={\"Termini di consegna\"}>\n <ol>\n <li><Timer to={\"2020-06-14\"}/></li>\n <li><Timer to={\"2020-06-30\"}/></li>\n <li><Timer to={\"2020-07-18\"}/></li>\n </ol>\n </Panel>\n </Section>\n <Section title={\"Visualizzazioni utili\"}>\n <Panel title={\"B+ Tree\"}>\n <p>\n <a href={\"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html\"}>Link</a>\n </p>\n </Panel>\n </Section>\n <Section title={\"Calcolo dei costi delle query\"}>\n <TablePanel>\n <thead>\n <tr>\n <th>Simbolo</th>\n <th>Descrizione</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td><BLatex>{r`N_{tuple}`}</BLatex></td>\n <td>Numero di tuple di una tabella</td>\n </tr>\n <tr>\n <td><BLatex>{r`N_{blocchi}`}</BLatex></td>\n <td>Numero di blocchi di una tabella</td>\n </tr>\n <tr>\n <td><BLatex>{r`N_{foglie}`}</BLatex></td>\n <td>Numero di foglie di un indice</td>\n </tr>\n <tr>\n <td><BLatex>{r`N_{indici}`}</BLatex></td>\n <td>Numero di indici presenti in una tabella</td>\n </tr>\n <tr>\n <td><BLatex>{r`N_{unici}`}</BLatex></td>\n <td>Numero di valori unici presenti in una colonna</td>\n </tr>\n <tr>\n <td><BLatex>{r`F`}</BLatex></td>\n <td>Fattore di selettività di una condizione</td>\n </tr>\n <tr>\n <td><BLatex>{r`C`}</BLatex></td>\n <td>Costo di accesso a una o più tuple</td>\n </tr>\n <tr>\n <td><BLatex>{r`N_{selezionati}`}</BLatex></td>\n <td>Numero di tuple del risultato</td>\n </tr>\n </tbody>\n </TablePanel>\n </Section>\n <Section>\n <Panel title={\"Fattore booleano\"}>\n <p>\n Espressione formata da <b>una o più condizioni moltiplicate tra loro</b>.\n </p>\n </Panel>\n <Panel title={\"Argomenti di ricerca attraverso indice\"}>\n <p>\n Condizioni che soddisfano i seguenti requisiti:\n </p>\n <ul>\n <li>\n Usa uno dei seguenti <b>operatori</b>:\n <ul>\n <li><ILatex>{r`<`}</ILatex></li>\n <li><ILatex>{r`\\leq`}</ILatex></li>\n <li><ILatex>{r`=`}</ILatex></li>\n <li><ILatex>{r`\\geq`}</ILatex></li>\n <li><ILatex>{r`>`}</ILatex></li>\n <li><b><code>{r`BETWEEN`}</code></b></li>\n <li><b><code>{r`OR`}</code></b> (solo in alcuni DBMS)</li>\n </ul>\n </li>\n <li>Uno dei due termini del confronto è <b>una colonna</b> della tabella</li>\n <li>L'altro termine del confronto è <b>una costante numerica</b></li>\n </ul>\n </Panel>\n <Panel title={\"Indici\"}>\n <p>\n È possibile costruire indici sulle colonne di una tabella per velocizzare le query che riguardano quelle colonne.\n </p>\n <p>\n In particolare, ogni tabella può avere <b>un</b> <i>indice clustered</i> e <b>infiniti</b> <i>indici unclustered</i>.\n </p>\n <p>\n Generalmente, l'indice clustered è costruito sulla colonna della primary key, ma <a href={\"https://stackoverflow.com/questions/15051869/relationship-of-primary-key-and-clustered-index\"}>non è sempre quello il caso</a>.\n </p>\n <p>\n Gli indici vanno tenuti aggiornati, e ciò ha un <b>costo di manutenzione</b>:\n </p>\n <ul>\n <li><code>DELETE</code>: <ILatex>{r`N_{indici} \\cdot 2 \\cdot N_{selezionati}`}</ILatex></li>\n <li><code>UPDATE</code>: <ILatex>{r`N_{indici} \\cdot 4 \\cdot N_{selezionati}`}</ILatex></li>\n </ul>\n <p>\n È possibile usare gli indici nelle query solo per gli <b>argomenti di ricerca attraverso indice</b>.\n </p>\n </Panel>\n </Section>\n <Section>\n <Panel title={\"Fattore di selettività\"}>\n <p>\n La percentuale di tuple di una tabella che soddisfano una condizione.\n </p>\n <table>\n <thead>\n <tr>\n <th>Condizione</th>\n <th>Fattore di selettività</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td><code>col = $costante</code></td>\n <td><BLatex>{r`F = \\frac{1}{N_{unici}`}</BLatex></td>\n </tr>\n <tr>\n <td><code>col != $costante</code></td>\n <td><BLatex>{r`F = 1 - \\frac{1}{N_{unici}`}</BLatex></td>\n </tr>\n <tr>\n <td><code>col1 != col2</code></td>\n <td><BLatex>{r`F = \\frac{1}{max(N_{unici_A}, N_{unici_B})`}</BLatex></td>\n </tr>\n <tr>\n <td><code>IN</code></td>\n <td><BLatex>{r`F = \\frac{n_{IN}}{N_{unici}}`}</BLatex></td>\n </tr>\n <tr>\n <td><code>col > $costante</code></td>\n <td><BLatex>{r`F = \\frac{ max(col) - \\$costante }{ max(col) - min(col) }`}</BLatex></td>\n </tr>\n <tr>\n <td><code>{r`col < $costante`}</code></td>\n <td><BLatex>{r`F = \\frac{ \\$costante - min(col) }{ max(col) - min(col) }`}</BLatex></td>\n </tr>\n <tr>\n <td><code>col BETWEEN $lower AND $upper</code></td>\n <td><BLatex>{r`F = \\frac{ \\$upper - \\$lower }{ max(col) - min(col) }`}</BLatex></td>\n </tr>\n <tr>\n <td><code>cond1 OR cond2</code></td>\n <td><BLatex>{r`F = F_{cond1} + F_{cond2} - ( F_{cond1} \\cdot F_{cond2} )`}</BLatex></td>\n </tr>\n </tbody>\n </table>\n </Panel>\n <Panel title={\"Costo di accesso\"}>\n <p>\n Quante <i>unità di lavoro</i> costa accedere a una specifica relazione:\n </p>\n <PLatex>{r`\n C = {\\color{yellow} {C_{indice}}} + {\\color{Orange} C_{relazione}}\n `}</PLatex>\n <p>\n Per accedere attraverso un indice a una specifica tupla della relazione, si spenderà:\n </p>\n <PLatex>{r`\n C = {\\color{yellow} 1} + {\\color{Orange} 1}\n `}</PLatex>\n <p>\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 </p>\n <Example>\n Nel calcolo del costo di una query, si considerano tutti i cambi di pagina come <b>page fault</b>.\n </Example>\n <p>\n Per gli indici <b>clustered</b>, visto che basta caricare in memoria i blocchi in sequenza, il costo sarà:\n </p>\n <PLatex>{r`\n C = {\\color{yellow} ( F \\cdot N_{foglie} ) } + {\\color{Orange} ( F \\cdot N_{blocchi} ) }\n `}</PLatex>\n <p>\n Per gli indici <b>unclustered</b>, per i quali potremmo dover caricare e rimuovere lo stesso blocco dalla memoria più volte, il costo sarà:\n </p>\n <PLatex>{r`\n C = {\\color{yellow} ( F \\cdot N_{foglie} ) } + {\\color{Orange} ( F \\cdot N_{tuple} ) }\n `}</PLatex>\n <p>\n Se si stanno effettuando query su più indici unclustered, il costo sarà:\n </p>\n <PLatex>{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 `}</PLatex>\n </Panel>\n <Panel title={\"Costo di join\"}>\n <p>\n Quante <i>unità di lavoro</i> costa effettuare un join tra due relazioni.\n </p>\n <p>\n Varia in base al metodo di join utilizzato.\n </p>\n <p>\n Utilizzando il metodo del <b>nested loop</b>:\n </p>\n <PLatex>{r`\n C_{1 \\times 2} = C_1 + ( N_{selezionati_1} \\cdot C_2 )\n `}</PLatex>\n <p>\n La scelta della colonna su cui iterare è quindi importante!\n </p>\n </Panel>\n </Section>\n </div>\n )\n }\n}\n","import style from \"./Split.less\";\n\nexport default function (props) {\n let children;\n\n if(Array.isArray(props.children)) {\n children = props.children.map(element => {\n return (\n <div class={style.splitchild}>\n {element}\n </div>\n );\n });\n }\n\n else {\n children = (\n <div class={style.splitchild}>\n {props.children}\n </div>\n );\n }\n return (\n <div class={style.split}>\n <div class={style.splitparent}>{children}</div>\n </div>\n );\n}\n","import BLatex from \"./BLatex\";\n\nexport default function (props) {\n return (\n <p>\n <BLatex>{props.children}</BLatex>\n </p>\n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__2hgQp\",\"orange\":\"orange__tGLf9\",\"yellow\":\"yellow__15oHB\",\"lime\":\"lime__DGxfH\",\"cyan\":\"cyan__d6Sml\",\"blue\":\"blue__4v0nZ\",\"magenta\":\"magenta__3H2kV\",\"tablepanel\":\"tablepanel__1Wil3\"};","import style from \"./Example.less\";\nimport {Component} from \"preact\";\n\nexport default function(props) {\n return (\n <div class={style.example}>\n {props.children}\n </div>\n );\n}\n","import style from \"./Box.less\";\n\nexport const BoxColors = Object.freeze({\n RED: style.red,\n ORANGE: style.orange,\n YELLOW: style.yellow,\n LIME: style.lime,\n CYAN: style.cyan,\n BLUE: style.blue,\n MAGENTA: style.magenta,\n DEFAULT: style.default\n})\n\nexport default function (props) {\n let color = BoxColors.DEFAULT;\n if(props.color) {\n color = props.color;\n }\n\n return (\n <div class={style.box + \" \" + color}>\n {props.children}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__3683f\",\"orange\":\"orange___PVUv\",\"yellow\":\"yellow__CS7Ak\",\"lime\":\"lime__3bqTp\",\"cyan\":\"cyan__3UE2X\",\"blue\":\"blue__2n3Ng\",\"magenta\":\"magenta__1M1Vw\",\"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\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"red\":\"red__YF6Vb\",\"orange\":\"orange__2w5to\",\"yellow\":\"yellow__XvcrZ\",\"lime\":\"lime__2MtRd\",\"cyan\":\"cyan__36T9w\",\"blue\":\"blue__1l1tt\",\"magenta\":\"magenta__2SE7I\",\"splitparent\":\"splitparent__3-wBs\",\"splitchild\":\"splitchild__begkX\"};","import style from \"./Panel.less\";\nimport Box from \"./Box\";\n\nexport default function(props) {\n\treturn (\n\t\t<Box color={props.color}>\n\t\t\t<h3 class={style.title}>\n\t\t\t\t{props.title}\n\t\t\t</h3>\n\t\t\t<div class={style.contents}>\n\t\t\t\t{props.children}\n\t\t\t</div>\n\t\t</Box>\n\t);\n}\n","import {createContext} from \"preact\";\n\nexport default createContext(true);\n","import Latex, {LatexDisplay} from \"./Latex\";\n\nexport default function (props) {\n return (\n <Latex inline={true} display={LatexDisplay.INLINE}>{props.children}</Latex>\n );\n}\n","import Latex, {LatexDisplay} from \"./Latex\";\n\nexport default function (props) {\n return (\n <Latex inline={false} display={LatexDisplay.BLOCK}>{props.children}</Latex>\n );\n}\n"],"sourceRoot":""} |