CodeGym /Java kursus /All lectures for DA purposes /Database normale formularer

Database normale formularer

All lectures for DA purposes
Niveau , Lektie
Ledig

3.1 Databasenormalisering

Normalform er en egenskab ved en relation i en relationel datamodel, der karakteriserer den med hensyn til redundans, hvilket potentielt kan føre til logisk fejlagtige resultater af stikprøveudtagning eller ændring af data. Normalform er defineret som det sæt af krav, som en relation (tabeller i en database) skal opfylde.

Processen med at konvertere databaserelationer til en form, der er i overensstemmelse med normale former, kaldes normalisering. Normalisering er beregnet til at bringe strukturen af ​​databasen til en form, der giver minimal logisk redundans , og er ikke beregnet til at reducere eller øge ydeevnen eller reducere eller øge den fysiske volumen af ​​databasen .

Det ultimative mål med normalisering er at reducere den potentielle inkonsistens af de oplysninger, der er lagret i databasen. Det generelle formål med normaliseringsprocessen er som følger:

  • udelukkelse af visse former for redundans;
  • rette nogle opdateringsfejl;
  • udvikling af et databaseprojekt, der er en tilstrækkelig "højkvalitets" repræsentation af den virkelige verden, er intuitiv og kan tjene som et godt grundlag for efterfølgende udvidelse;
  • forenkling af proceduren for anvendelse af de nødvendige integritetsbegrænsninger.

Redundans elimineres normalt ved at dekomponere relationer på en sådan måde, at kun primære fakta er lagret i hver relation (det vil sige fakta, der ikke er afledt af andre lagrede fakta).

Mens normaliseringsideer er meget nyttige til databasedesign, er de på ingen måde et universelt eller udtømmende middel til at forbedre kvaliteten af ​​et databasedesign. Dette skyldes det faktum, at der er for mange forskellige mulige fejl og mangler i databasestrukturen, som ikke kan elimineres ved normalisering.

På trods af disse overvejelser er normaliseringsteorien en meget værdifuld præstation af relationel teori og praksis, da den giver videnskabeligt stringente og rimelige kriterier for kvaliteten af ​​et databaseprojekt og formelle metoder til at forbedre denne kvalitet. Dette får normaliseringsteorien til at skille sig ud fra de rent empiriske designtilgange, der tilbydes i andre datamodeller. Desuden kan det hævdes, at der inden for hele informationsteknologiområdet praktisk talt ikke findes metoder til at evaluere og forbedre designløsninger, der er sammenlignelige med teorien om normalisering af relationelle databaser med hensyn til niveauet af formel rigor.

Normalisering bliver nogle gange kritiseret med den begrundelse, at "det er bare sund fornuft", og enhver kompetent professionel vil "naturligvis" designe en fuldt normaliseret database uden at skulle anvende afhængighedsteori.

Men som professor Christopher Date bemærkede, er normalisering netop principperne for sund fornuft, der styrer en moden designer i hans sind, det vil sige, at normaliseringsprincipperne er formaliseret sund fornuft . I mellemtiden er det en meget vanskelig opgave at identificere og formalisere principperne for sund fornuft, og succes med at løse den er en betydelig præstation.

3.2 Første normalform

Første normalform (1NF) er den grundlæggende normalform for en relation i den relationelle datamodel.

En relationsvariabel er i første normalform, hvis og kun hvis, i en hvilken som helst gyldig værdi af denne variabel, hver relations-tupel indeholder nøjagtig én værdi for hver af attributterne.

I en relationel model er en relation altid i første normal form, per definition af relationsbegrebet.

Hvad angår de forskellige tabeller, er de muligvis ikke korrekte repræsentationer af relationer og er derfor muligvis ikke i 1NF. Ifølge Christopher Dates definition for et sådant tilfælde normaliseres en tabel (tilsvarende er den i første normalform), hvis og kun hvis den er en direkte og sand repræsentation af en eller anden relation. Mere specifikt skal den pågældende tabel opfylde følgende fem betingelser:

  • Der er ingen rækkefølge af rækker fra top til bund (med andre ord, rækkefølgen af ​​rækker formidler ingen information).
  • Der er ingen venstre-til-højre rækkefølge af kolonnerne (med andre ord, rækkefølgen af ​​kolonnerne indeholder ingen information).
  • Ingen duplikerede linjer.
  • Hvert skæringspunkt mellem en række og en kolonne indeholder præcis én værdi fra det tilsvarende domæne (og intet andet).
  • Alle kolonner er "almindelige".

"Regulariteten" af alle kolonner i en tabel betyder, at der ikke er nogen "skjulte" komponenter i tabellen, som kun kan tilgås ved påkaldelse af en speciel operator i stedet for at henvise til almindelige kolonnenavne, eller som fører til bivirkninger for rækker eller tabeller, når du kalder standardoperatører.

Den oprindelige ikke-normaliserede (det vil sige ikke en korrekt repræsentation af en eller anden relation) tabel:

Medarbejder Telefonnummer
Ivanov I.I.

283-56-82

390-57-34

Petrov P.P. 708-62-34
Sidorov S.S.

En tabel reduceret til 1NF, hvilket er den korrekte repræsentation af en eller anden relation:

Medarbejder Telefonnummer
Ivanov I.I. 283-56-82
Ivanov I.I. 390-57-34
Petrov P.P. 708-62-34

3.3 Anden normalform

En relationsvariabel er i anden normalform, hvis og kun hvis den er i første normalform, og hver ikke-nøgleattribut er irreducerbart afhængig af (hver) dens kandidatnøgle .

Irreducibility betyder, at den potentielle nøgle ikke indeholder en mindre delmængde af attributter, hvorfra denne funktionelle afhængighed også kan udledes. For en irreducerbar funktionel afhængighed bruges ofte det tilsvarende begreb "fuld funktionel afhængighed".

Hvis kandidatnøglen er enkel, dvs. den består af en enkelt attribut, så er enhver funktionel afhængighed af den irreducerbar (komplet). Hvis kandidatnøglen er en sammensat nøgle, så må der ifølge definitionen af ​​den anden normalform ikke være nogen ikke-nøgleattributter i relationen, der afhænger af en del af den sammensatte kandidatnøgle.

Et eksempel på konvertering af en relation til anden normalform

Lad attributparret {Company branch, Position} danne den primære nøgle i følgende relation:

R
Firma filial Jobtitel Løn Tilgængelighed af en computer
Afdeling i Tomsk Renere 20.000 Ingen
Afdeling i Moskva Programmer 40.000 Spise
Afdeling i Tomsk Programmer 25.000 Spise

Lad os sige, at lønnen afhænger af filial og stilling, og tilgængeligheden af ​​en computer afhænger kun af stillingen.

Der er en funktionel afhængighed Position -> At have en computer, hvor venstre side (determinant) kun er en del af den primære nøgle, hvilket overtræder betingelsen for den anden normalform.

For at reducere til 2NF bør den oprindelige relation opdeles i to relationer:

R1
Firma filial Jobtitel Løn
Afdeling i Tomsk Renere 20.000
Afdeling i Moskva Programmer 40.000
Afdeling i Tomsk Programmer 25.000
R2
Jobtitel Tilgængelighed af en computer
Renere Ingen
Programmer Spise
Programmer Spise

3.4 Tredje normalform (3NF)

En relationsvariabel R er i 3NF, hvis og kun hvis følgende betingelser er sande:

  • Rer i anden normal form.
  • ingen ikke-nøgleattributRer ikke i transitiv funktionel afhængighed af kandidatnøglenR.

Forklaringer til definitionen:

En ikke-nøgleattribut af en relation R er en egenskab, der ikke hører til nogen af ​​kandidatnøglerne til R.

Den funktionelle afhængighed af sættet af attributter Z af sættet af attributter X (skrevet X → Z, udtales "x bestemmer z") er transitiv, hvis der er et sådant sæt af attributter Y, at X → Y og Y → Z. I denne tilfælde er ingen af ​​mængderne X, Y og Z ikke en delmængde af den anden, dvs. de funktionelle afhængigheder X → Z, X → Y og Y → Z er ikke trivielle, og der er heller ingen funktionel afhængighed Y → X.

En definition af 3NF, svarende til Codds, men formuleret anderledes, blev givet af Carlo Zaniolo i 1982. Ifølge den er en relationsvariabel i 3NF, hvis og kun hvis hver af dens funktionelle afhængigheder X → A opfylder mindst én af følgende betingelser:

  • X indeholder A (det vil sige X → A er en triviel funktionel afhængighed)
  • X - super nøgle
  • A er en nøgleattribut (det vil sige, A er en del af en kandidatnøgle).

Zaniolos definition definerer klart forskellen mellem 3NF og den mere stringente Boyce-Codd Normal Form (BCNF): BCNF udelukker den tredje betingelse ("A er en nøgleegenskab").

Et mindeværdigt og traditionelt beskrivende resumé af Codds 3NF-definition blev givet af Bill Kent: hver ikke-nøgleattribut "bør give information om nøglen, den fulde nøgle og intet andet end nøglen ".

Betingelsen for at være afhængig af "fuld nøgle" af ikke-nøgle attributter sikrer, at relationen er i anden normal form; og betingelsen for, at de er afhængige af "intet andet end nøglen", er, at de er i tredje normalform.

Chris Date taler om Kents resumé som et "intuitivt attraktivt træk" af 3NF og bemærker, at det med en lille modifikation også kan tjene som en definition af den strengere Boyce-Codd normalform: "hver egenskab skal give information om en nøgle , en fuld nøgle, og hverken andet end nøglen.

Kents version af 3NF-definitionen er mindre streng end Boyce-Codds normalformversion af Datas formulering, da førstnævnte kun siger, at ikke-nøgleattributter afhænger af nøgler.

Primære attributter (som er nøgler eller dele af dem) behøver slet ikke at være funktionelt afhængige; hver af dem giver information om nøglen ved at give selve nøglen eller en del af den. Det skal bemærkes her, at denne regel kun er gyldig for ikke-nøgleattributter, da anvendelsen af ​​den på alle attributter fuldstændigt vil deaktivere alle komplekse alternative nøgler, da hvert element i en sådan nøgle vil overtræde betingelsen "fuld nøgle".

Betragt relationsvariablen R1 som et eksempel:

R1
Medarbejder Afdeling Telefon
Grishin Regnskab 11-22-33
Vasiliev Regnskab 11-22-33
Petrov Levere 44-55-66

Hver medarbejder tilhører udelukkende én afdeling; hver afdeling har en enkelt telefon. Employee-attributten er den primære nøgle. Medarbejderne har ikke personlige telefoner, og medarbejderens telefonnummer afhænger udelukkende af afdelingen.

I eksemplet findes følgende funktionelle afhængigheder: Medarbejder → Afdeling, Afdeling → Telefon, Medarbejder → Telefon.

Relationsvariablen R1 er i anden normal form, fordi hver attribut har en irreducerbar funktionel afhængighed af den potentielle nøglemedarbejder.

Relationen Medarbejder → Telefon er transitiv, så relationen er ikke i tredje normalform.

Opdeling af R1 resulterer i to relationsvariable, der er i 3NF:

R2
Afdeling Telefon
Regnskab 11-22-33
Levere 44-55-66

R3
Medarbejder Afdeling
Grishin Regnskab
Vasiliev Regnskab
Petrov Levere

Den indledende relation R1, om nødvendigt, opnås let som et resultat af operationen med at forbinde relationerne R2 og R3.

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION