Hjem Personlig finansiering SQL Første, andre og tredje normale skjemaer - dummier

SQL Første, andre og tredje normale skjemaer - dummier

Innholdsfortegnelse:

Video: Ruby on Rails by Leila Hofer 2024

Video: Ruby on Rails by Leila Hofer 2024
Anonim

Det finnes tre kilder til endringsavvik i SQL Disse defineres som første, andre og tredje normale skjemaer (1NF, 2NF, 3NF). Disse vanlige skjemaene virker som rettsmidler for endringsforstyrrelser.

Første normal form

For å være i første normale form (1NF) må en tabell ha følgende egenskaper:

  • Tabellen er todimensjonal med rader og kolonner.

  • Hver rad inneholder data som gjelder noen ting eller deler av en ting.

  • Hver kolonne inneholder data for et enkelt attributt til det som beskrives.

  • Hver celle (skjæringspunktet i en rad og en kolonne) i tabellen må bare ha en enkelt verdi.

  • Oppføringer i en hvilken som helst kolonne må alle være av samme type. Hvis for eksempel oppføringen i en rad i en kolonne inneholder et ansattes navn, må alle de andre radene inneholde ansattes navn i den kolonnen.

  • Hver kolonne må ha et unikt navn.

  • Ingen to rader kan være identiske (det vil si hver rad må være unik).

  • Ordren til kolonnene og rekkefølgen av radene er ikke signifikante.

En tabell (relasjon) i første normale form er immun mot noen slags modifikasjonsanomalier, men er fortsatt gjenstand for andre. Salgstabellen er i første normale form, og tabellen er gjenstand for sletting og innføring av anomalier. Første normal form kan vise seg nyttig i enkelte applikasjoner, men upålitelig i andre.

Andre normale skjemaer

For å sette pris på andre normale skjemaer, må du forstå ideen om funksjonell avhengighet. En funksjonell avhengighet er et forhold mellom eller blant attributter. Et attributt er funksjonelt avhengig av en annen hvis verdien av den andre attributtet bestemmer verdien av det første attributtet. Hvis du vet verdien av det andre attributtet, kan du bestemme verdien av det første attributtet.

Anta at for eksempel et tabell har attributter (kolonner) StandardCharge, NumberOfTests og TotalCharge som relaterer seg gjennom følgende ligning:

TotalCharge = StandardCharge * NumberOfTests

TotalCharge er funksjonelt avhengig av både StandardCharge og NumberOfTests. Hvis du vet verdien av StandardCharge og NumberOfTests, kan du bestemme verdien av TotalCharge.

Hvert bord i første vanlig form må ha en unik primærnøkkel. Denne nøkkelen kan bestå av en eller flere kolonne. En nøkkel som består av mer enn en kolonne kalles en komposittnøkkel. For å være i andre normale form (2NF), må alle ikke-nøkkelattributter avhenge av hele nøkkelen. Dermed er hvert forhold som er i 1NF med en enkelt attributt nøkkel automatisk i andre normale form.

Hvis et forhold har en sammensatt nøkkel, må alle ikke-nøkkelattributter avhenge av alle komponentene i nøkkelen. Hvis du har et bord der noen ikke-nøkkelattributter ikke er avhengige av alle komponentene i nøkkelen, bryter du tabellen opp i to eller flere tabeller slik at i alle de nye tabellene er alle ikke-nøkkelattributter avhengig av alle komponenter av primærnøkkelen.

Lyd forvirrende? Se på et eksempel for å avklare saker. Tenk på SALES-tabellen. I stedet for å bare registrere et enkelt kjøp for hver kunde, legger du til en rad hver gang en kunde kjøper en vare for første gang. En annen forskjell er at charterkunder (de med Customer_ID-verdier på 1001 til 1007) får rabatt på vanlig pris.

Customer_ID identifiserer ikke en rad unikt. I to rader er Customer_ID 1001. I to andre rader er Customer_ID 1010. Kombinasjonen av Customer_ID-kolonnen og Produkt-kolonnen identifiserer en rad. Disse to kolonnene sammen er en komposittnøkkel.

Hvis ikke for det faktum at noen kunder kvalifiserer for rabatt og andre ikke, vil tabellen ikke være i andre normale form, fordi pris (en ikke-nøkkelattributt) bare vil avhenge av en del av nøkkelen (Produkt). Fordi noen kunder kvalifiserer for rabatt, er Pris avhengig av både CustomerID og Product, og tabellen er i andre normale form.

Tredje normal form

Tabeller i andre normale form er spesielt utsatt for noen typer modifikasjonsanomalier - spesielt de som kommer fra transitive avhengigheter.

A Transitiv avhengighet oppstår når en attributt avhenger av et andre attributt, som avhenger av et tredje attributt. Slettinger i et bord med en slik avhengighet kan forårsake uønsket informasjonstap. En relasjon i tredje normale form er en relasjon i andre normale form uten transitiv avhengighet.

Se igjen på SALES bordet, som du vet er i første normale form. Så lenge du begrenser oppføringer for å tillate bare én rad for hver Customer_ID, har du en primærnøkkel med en attributt, og tabellen er i andre normale form. Tabellen er imidlertid fortsatt underlagt uregelmessigheter. Hva om kunden 1010 ikke er fornøyd med klorblekemiddel, og returnerer varen for tilbakebetaling?

Du vil fjerne den tredje raden fra bordet, som registrerer at kunden 1010 kjøpte klorblekemiddel. Du har et problem: Hvis du fjerner den raden, mister du også det faktum at klorblekemiddel har en pris på $ 4. Denne situasjonen er et eksempel på en transitiv avhengighet. Prisen avhenger av Produkt, som igjen avhenger av primærnøkkel Customer_ID.

Å bryte SALES-tabellen i to tabeller løser problemet med transitiv avhengighet. De to tabellene utgjør en database som er i tredje normale form.

SQL Første, andre og tredje normale skjemaer - dummier

Redaktørens valg

Vanlige visuelle studio-tastaturgenveier - dummier

Vanlige visuelle studio-tastaturgenveier - dummier

Du kan få tilgang til mange av funksjonene du bruker i Visual Studio til Lag en Silverlight-applikasjon gjennom tastaturgenveier. Her er de vanlige snarveiene som hjelper deg med å utføre oppgaver raskt i Visual Studio. Tastatur snarvei Handling Ctrl + Alt + F1 Åpne Visual Studio Documentation Ctrl + Shift + B Bygg programmet Ctrl + F5 Kjør prosjektet Ctrl + Alt + X Åpne verktøykassen hvis ...

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Som Du komponerer markedsførings-e-postene dine, husk at formatet på e-posten din visuelt kommuniserer hovedideen til innholdet før publikum selv begynner å lese det. Forbrukerne forventer at formatet på e-posten din samsvarer med informasjonen den inneholder, slik at bruk av riktig format bidrar til å bygge publikums tillit. Velg ...

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Din e-postmarkedsføringslisten består sannsynligvis av prospekter og kunder i ulike stadier av kjøpesyklusen med litt forskjellige interesser, så en del av publikum vil aldri være klar til å reagere umiddelbart på hver handling. Selv om alle på din e-postliste er klare til handling, er dine anrop til handling ...

Redaktørens valg

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

En nyttig rapportvisning I et Excel-pivottabell er YTD-totalsvisningen. Noen ganger er det nyttig å fange et løp-total-visning for å analysere bevegelsen av tall på en årlig basis (YTD) basis. Denne figuren illustrerer et pivottabell som viser en løpende total omsetning per måned for hvert år. I denne visningen er du ...

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

I enkelte tilfeller vil du kanskje opprett et pivottabell fra grunnen ved hjelp av Excels eksisterende interne datamodell som kildedata. Her er trinnene for å gjøre det: Velg Sett inn → PivotTable fra båndet. Dialogboksen Create PivotTable åpnes. Velg alternativet Bruk en ekstern datakilde, som vist, og klikk deretter på ...

Hvordan lage en standard snikker i Power Pivot - dummies

Hvordan lage en standard snikker i Power Pivot - dummies

Slicers tilbyr et brukervennlig grensesnitt med som du kan filtrere en Power Pivot pivottabell. Det er på tide å lage din første slicer. Bare følg disse trinnene:

Redaktørens valg

Alarmhendelsen i GameMaker: Studio-dummies

Alarmhendelsen i GameMaker: Studio-dummies

Alarmer er utmerket for når du vil ha tid Handlinger i din spill i GameMaker: Studio. For eksempel, hvis du vil at spilleren bare skal skyte kuler en gang hvert annet sekund, kan du sette en alarm for det. Hvis du vil når nye fiendtlige fly vises, kan du sette en alarm for det ...

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

I GameMaker: Studio, Flytt-fanen er den første kategorien i vinduet Objektegenskaper. Her er en liste over hver av handlingene du kan tilordne objektene. I følgende definisjoner brukes begrepet Instance for å referere til hva handlingen påvirker. Men du konfigurerer handlingen i objektet ...

Andre hendelser i GameMaker: Studio - dummies

Andre hendelser i GameMaker: Studio - dummies

I GameMaker: Studio, Andre hendelser er de som ikke anses verdige av sitt eget sted på menyen Event. Disse andre hendelsene kan være ganske kjempebra. Menyelementene er ganske mye selvforklarende, så det er ikke nødvendig med detaljer her. For fullstendige beskrivelser av hver av disse elementene, kan du alltid trykke F1 i GameMaker og ...