T-SQL, Denormalisering og Redundans Flashcards

1
Q

Hvad sker der her?

A
  • @i og @svar erklæres som variabler med datatyperne int og varchar(50)
  • count()-funktionen anvendes til at tælle antallet af rækker i tabellen Pers, og resultatet gemmes i variablen @i ved hjælp af select @i=count() from Pers
  • Der bruges en IF…ELSE-struktur til at evaluere værdien af variablen @i.
    Hvis antallet af rækker (@i) er større end 0, indstilles @svar til en string, der angiver antallet af poster i tabellen.
    Hvis antallet af rækker er 0, indstilles @svar til en anden besked, der angiver, at tabellen er tom.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Hvad sker der her?

A

-Løkken udføres, så længe værdien af @i er mindre eller lig med 5.
Inden for løkken multipliceres @produkt med værdien af @i, og derefter øges værdien af @i med 1.
- Så scriptet beregner produktet af de første fem naturlige tal (1 * 2 * 3 * 4 * 5) ved hjælp af en WHILE-løkke. I dette tilfælde vil @produkt indeholde resultatet, som vil være 120.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hvad sker der her?

A
  • Dette SQL SELECT-udtryk bruger CASE-udtrykket til at transformere data fra kolonnen “stilling” i “pers”-tabellen.
  • Så dette SQL-udtryk oversætter stillingsbetegnelser i tabellen “pers” og returnerer en ny værdi baseret på de specificerede betingelser. Resultatsættet vil indeholde to kolonner: “navn” og en ny kolonne baseret på CASE-udtrykket, der indeholder de oversatte stillingsbetegnelser
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Hvad sker der her?

A

Her bruges case til at beregne skatten for en person.

  • Hvis man tjener under 48K, så betaler man 0kr i skat.
  • Hvis man tjener mellem 48K og 500K, så betaler man 37% af ens løn minus 48K.
  • Hvis man tjener mere end 500K, så betaler man 37% af de første 452K og så 52% af resten man tjener.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hvad sker der her?

A
  • Der bliver brugt en cursor til at gennemløber ‘person’ tabellen, og gemmer hvert navn og løn.
  • Derefter laves en midlertidig tabel, hvor alt fra person bliver hentet over i. Læg mærke til at det skal køres i samme batch, ellers virker det ikke; fordi det er en midlertidig tabel.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Hvad sker der her?

A

Her bruges der try/catch. Der bliver kastet en fejl hvis transaktionen fejler og begge inserts bliver rullet tilbage.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Hvad sker der her?

A
  • Den første linje sletter alt fra ‘ansati’ (bare så man ikke får en fejl i den næste). Den næste sletter alt fra ‘person’ hvor løn < 500K og samtidig udskriver alle de rækker som er blevet rørt ved. Det er det som OUTPUT gør.
  • Resten af batchen gør præcis det samme bare med en anden betingelse, for at vise hvor smart OUTPUT er.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Hvad sker der her?

A

Dette er et eksempel på Common Table Expressions (CTE).
Hvor man bruger en midlertid resultatmængde til at løse mere komplekse forespørgsler.

  • Først laves en CTE som hedder ‘de rige’. Det er de 50% procent rigeste.
  • Herefter laves en SELECT AVG(p.loen) på alle dem i ‘person’-tabellen som har det samme cpr, på dem i CTE-tabellen.

Den sidste batch viser bare hvordan man gør det i et huk ved at lave en sub-select. Den gør altså præcis det samme.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hvad sker der her? Good luck

A

Det er rekursion og CTE.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Superliga - opgave 1

Hvad sker der her?

A

Dette er en (after insert) trigger som ligger på matches -tabellen.

Først afgøres hvor mange point hvert hold skal have; 0,1 eller 3 point.
Så når det bliver indsat et nyt kampresultat, så laver den en update på teams-tabellen. Her lægger den 1 til antal kampe og lægger antal mål til som de har scoret og giver antal point. Dette gøres for begge hold.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Superliga - opgave 1

Hvad sker der her?

A

Her vises alle hold sorteret efter pointsystemet, som er:
Først; flest point.
; Forskellen på mål man har scoret og mål man har lukket ind.
Til sidst; Mål man har scoret.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Superliga - opgave 4

Hvad sker der her?

A

Målet er at finde det løbende resultat ud fra en bestemt dato.

Først laves en midlertidig tabel @t, hvor er indsættes startværdier name, 0,0,0,0.
Her bliver der nu itereret igennem matches, som er før eller på den pågældende dato og der bliver indsat en kamp af gangen og opdateret teams-tabellen på samme vis som i triggerne fra opg 1 og 2.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Superliga - opgave 5

Hvad sker der her?

A

Der sker meget af det samme som i opgave 4.

Alle matches bliver sorteret efter dato. Derefter løbes de igennem og bliver indsat en efter en, hvor point, antalmålscoret, antalmålscoretpå osv. bliver opdateret korrekt.

Den væsentligste forskel er at der bliver udskrevet vinder for hver dag, hvor der har været spiller en eller flere kampe. Denne sætning ‘if @oldmatchdate<@matchdate’, sørger for at der kun bliver printet 1 linje, selvom der har været spillet flere kampe på en dag.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Er dette en normaliseret eller denormaliseret struktur?

Her er et eksempel, på en database med en tabel med forfattere og bøger. Vil dette være en normaliseret eller denormaliseret struktur?

A

Eksemplet viser en normaliseret struktur, hvor at man inddeler i flere tabeller som refererer til hinanden vha. foreign keys.

Her er eksemplet på en denormaliseret struktur. Her placeres alle attributter (authorname) fra forfatter-tabellen i bog-tabellen .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvad er fordelene og ulemperne ved denormalisering?

A

Fordele ved denormalisering

  1. Forbedret ydeevne: Læsning af data kan blive hurtigere, da det kræver færre samlinger og færre komplekse forespørgsler.
  2. Forenklet forespørgselslogik: Forespørgsler kan være enklere og mere intuitive, da relaterede data er tilgængelige i samme tabel.
  3. Reduceret behov for sammenføjning (joins): Da data er mere centraliseret, kan det reducere antallet af sammenføjninger, der er nødvendige for at hente information.

Ulemper ved denormalisering

  1. Dataredundans: Ved gentagelse af data kan det medføre redundans, hvilket kan føre til problemer med konsistens og vedligeholdelse.
  2. Opdateringsanomalier: Når data gentages, er der risiko for inkonsistens, især når data opdateres, og det er nødvendigt at opdatere flere kopier af den samme information.
  3. Øget lagerplads: Ved at gentage data øges lagerbehovet, hvilket kan være en bekymring, især hvis databasen er stor.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly