De eenvoudigste functionele afhankelijkheden. Het concept van functionele afhankelijkheid

Wat is een functie? Een functionele afhankelijkheid, of functie, is een afhankelijkheid tussen twee variabelen waarbij elke waarde van de onafhankelijke variabele overeenkomt met een enkele waarde van de afhankelijke variabele. De onafhankelijke variabele wordt ook wel een argument genoemd, en de afhankelijke variabele zou een functie van dit argument zijn. Alle waarden die de onafhankelijke variabele aanneemt, vormen het domein van de functie.


Er zijn verschillende manieren om een ​​functie te specificeren: 1. Met behulp van een tabel. 2.Grafisch. 3.Een formule gebruiken. De grafiek van een functie is de verzameling van alle punten van het coördinatenvlak, waarvan de abscis gelijk is aan de waarden van het argument, en de ordinaat gelijk is aan de overeenkomstige waarden van de functie.



Een lineaire functie is een functie die kan worden gespecificeerd door een formule in de vorm y=kx+b, waarbij x de onafhankelijke variabele is en k en b getallen zijn. Om een ​​grafiek van een lineaire functie te tekenen, volstaat het om de coördinaten van twee punten in de grafiek te vinden, deze punten in het coördinatenvlak te markeren en er een rechte lijn doorheen te trekken. Directe evenredigheid is een functie van de vorm y=kx, waarbij x een onafhankelijke variabele is en k een getal dat niet nul is. De grafiek van directe evenredigheid is een rechte lijn die door de oorsprong gaat.


Een grafiek van een lineaire functie plotten Om een ​​grafiek van een lineaire functie te plotten, moet u: - twee willekeurige waarden van de variabele x (argument) selecteren, bijvoorbeeld 0 en 1; - bereken de overeenkomstige waarden van de variabele y (functie). Het is handig om de verkregen resultaten in de x01 y-tabel te schrijven - de verkregen punten A en B worden weergegeven in het coördinatensysteem; - verbind de punten A en B met behulp van een liniaal. Laten we de lineaire functie y = -3 x+6 plotten. x01 y63


Inverse evenredigheid is een functie die kan worden gespecificeerd door een formule in de vorm y=k/x, waarbij x de onafhankelijke variabele is en k een getal dat niet nul is. Het definitiedomein van een dergelijke functie is de verzameling van alle getallen behalve nul. Als de waarden x en y omgekeerd evenredig zijn, wordt de functionele relatie daartussen uitgedrukt door de vergelijking y = k / x, waarbij k een constante waarde is. Een inverse evenredigheidsgrafiek is een gebogen lijn die uit twee takken bestaat. Deze grafiek wordt een hyperbool genoemd. Afhankelijk van het teken van k bevinden de takken van de hyperbool zich ofwel in het 1e en 3e coördinaatkwartier (k positief), of in het 2e en 4e coördinaatkwartier (k negatief). De figuur toont een grafiek van de functie y = k/x, waarbij k een negatief getal is.



SPECIALE GEVALLEN VAN LINEAIRE FUNCTIE. y=kx, k0, b=0 - directe evenredigheid. De grafiek is een rechte lijn die door de oorsprong gaat; y=b, k=0, b0. (b>0, boven de OX-as; b 0, boven de OX-as; b"> 0, boven de OX-as; b"> 0, boven de OX-as; b" title=" SPECIALE GEVALLEN VAN LINEAIRE FUNCTIE. y=kx, k0, b=0 - directe evenredigheid,. Grafiek - rechte lijn die door de oorsprong van coördinaten gaat; y=b, k=0, b0. (b> 0, boven de OX-as;"> title="SPECIALE GEVALLEN VAN LINEAIRE FUNCTIE. y=kx, k0, b=0 - directe evenredigheid. De grafiek is een rechte lijn die door de oorsprong gaat; y=b, k=0, b0. (b>0, boven de OX-as; b"> !}

De uniciteitsbeperkingen die worden opgelegd door de primaire en kandidaat-sleuteldeclaraties van een relatie zijn een speciaal geval van de beperkingen die verband houden met het concept functionele afhankelijkheden.

Beschouw het volgende voorbeeld om het concept van functionele afhankelijkheid uit te leggen.

Laten we een relatie krijgen met gegevens over de resultaten van één specifieke sessie. Het diagram van deze relatie ziet er als volgt uit:

Sessie ( Cijferboek nr. , Achternaam, voornaam, patroniem, Item , Cijfer);

De attributen “Gradebook No.” vormen een samengestelde primaire sleutel (aangezien twee attributen als sleutel worden gedeclareerd). Uit deze twee attributen kan men immers ondubbelzinnig de waarden van alle andere attributen bepalen.

Naast de uniciteitsbeperking die aan deze sleutel is gekoppeld, moet echter noodzakelijkerwijs aan de relatie de voorwaarde worden gesteld dat één cijferlijst noodzakelijkerwijs aan één specifieke persoon wordt uitgegeven en daarom moeten tupels met hetzelfde cijferlijstnummer in dit opzicht dezelfde waarden van de attributen “Achternaam”, “Naam” en “Patroniem”.


Als we na een bepaalde sessie het volgende fragment hebben van een bepaalde database van studenten van een onderwijsinstelling, dan vallen in de tupels met het recordboeknummer 100 de attributen "Achternaam", "Voornaam" en "Patroniem" samen, en de attributen "Onderwerp" en "Beoordeling" - komen niet overeen (wat begrijpelijk is, omdat ze het hebben over verschillende onderwerpen en prestaties daarin). Dit betekent dat de attributen “Achternaam”, “Voornaam” en “Patroniem” functioneel afhankelijk van het attribuut “Cijferlijstnummer”, en de attributen “Onderwerp” en “Cijfer” zijn functioneel onafhankelijk.

Dus, functionele afhankelijkheid is een ondubbelzinnige afhankelijkheid die is weergegeven in databasebeheersystemen.

Laten we nu een strikte definitie geven van functionele afhankelijkheid.

Definitie: laat X, Y subschema's zijn van de schemarelaties S die het schema S definiëren functioneel afhankelijkheidsdiagram X > Y(lees “X pijl Y”). Laten we definiëren inv functionele afhankelijkheidsbeperkingen > J> als een verklaring dat, met betrekking tot schema S, elke twee tupels die samenvallen in de projectie naar subschema X ook moeten samenvallen in de projectie naar subschema Y.

Laten we dezelfde definitie in formele vorm schrijven:

Inv > J> R(S) = T 1 , T 2 ? R(T 1 [X] = T 2 [X] ? T 1 [Y] = T 2 [Y]), X, Y? S;

Interessant genoeg gebruikt deze definitie het concept van een unaire projectieoperatie, dat we eerder tegenkwamen. Hoe kun je anders, als je deze bewerking niet gebruikt, aantonen dat twee kolommen van een relatietabel, in plaats van rijen, gelijk aan elkaar zijn? Daarom schreven we in termen van deze operatie dat het samenvallen van tupels in de projectie op een bepaald attribuut of meerdere attributen (subschema X) zeker het samenvallen van dezelfde tupelkolommen op subschema Y met zich meebrengt in het geval dat Y functioneel afhankelijk is van X .

Het is interessant om op te merken dat in het geval van een functionele afhankelijkheid van Y van X, ze ook zeggen dat X functioneel definieert Y of wat Y functioneel afhankelijk uit X. In een functioneel afhankelijkheidsdiagram X > Y wordt subcircuit X het linkerdeel genoemd, en subcircuit Y het rechterdeel.

In de databaseontwerppraktijk wordt een functioneel afhankelijkheidsdiagram kortheidshalve gewoonlijk een functioneel afhankelijkheidsdiagram genoemd.

Einde definitie.


In het specifieke geval waarin de rechterkant van de functionele afhankelijkheid, dat wil zeggen het subschema Y, samenvalt met het gehele relatieschema, wordt de functionele afhankelijkheidsbeperking een uniciteitsbeperking voor de primaire sleutel of de kandidaatsleutel. Echt:

Inv<K > S> R(S) = ? T 1 , T 2 ? R(T 1 [K] = T 2 [K] > T 1 (S) = T 2 (S)), K ? S;

Het is alleen zo dat je bij het definiëren van een functionele afhankelijkheid, in plaats van het subcircuit X, de sleutelaanduiding K moet nemen, en in plaats van de rechterkant van de functionele afhankelijkheid, subcircuit Y, je het hele relatiediagram S moet nemen, dat wil zeggen: de uniciteitsbeperking van relatiesleutels is inderdaad een speciaal geval van de functionele afhankelijkheidsbeperking wanneer de rechterkant gelijk is aan functionele afhankelijkheidsschema's voor het gehele relationele schema.

Hier zijn voorbeelden van afbeeldingen van functionele afhankelijkheid:

(cijferlijstnummer) > (achternaam, voornaam, patroniem);

(cijferboeknummer, onderwerp) > (cijfer);

2. Armstrongs gevolgtrekkingsregels

Als een basisrelatie voldoet aan vectorgedefinieerde functionele afhankelijkheden, dan is het, met behulp van verschillende speciale gevolgtrekkingsregels, mogelijk om andere functionele afhankelijkheden te verkrijgen waaraan deze basisrelatie uiteraard zal voldoen.

Een goed voorbeeld van zulke speciale regels zijn de inferentieregels van Armstrong.

Maar voordat we Armstrongs gevolgtrekkingsregels zelf gaan analyseren, moeten we een nieuw metalinguïstisch symbool “+” in overweging nemen, dat wordt genoemd symbool van een meta-statement over deduceerbaarheid. Bij het formuleren van regels wordt dit symbool tussen twee syntactische uitdrukkingen geschreven en geeft aan dat de formule rechts ervan is afgeleid van de formule links ervan.

Laten we nu de inferentieregels van Armstrong zelf formuleren in de vorm van de volgende stelling.

Stelling. De volgende regels, de zogenaamde Armstrong-regels voor gevolgtrekking, zijn geldig.

Inferentieregel 1.+ X > X;

Inferentieregel 2. X > Y+ X ? Z > Y;

Inferentieregel 3. X > Y, Y? W > Z + X ? W > Z;

Hier zijn X, Y, Z, W willekeurige subschema's van het relatieschema S. Het symbool van een meta-uitspraak over afleidbaarheid scheidt lijsten met premissen en lijsten met uitspraken (conclusies).

1. De eerste gevolgtrekkingsregel heet “ reflexiviteit” en luidt als volgt: “de regel is afgeleid: “X impliceert functioneel X.” Dit is de eenvoudigste van Armstrongs gevolgtrekkingsregels. Het komt letterlijk uit de lucht vallen.

Het is interessant om op te merken dat er een functionele afhankelijkheid wordt genoemd die zowel links als rechts heeft reflecterend. Volgens de reflexiviteitsregel wordt automatisch voldaan aan de beperking van reflexieve afhankelijkheid.

2. De tweede gevolgtrekkingsregel heet “ aanvulling' en luidt als volgt: 'als X functioneel Y bepaalt, dan wordt de regel afgeleid:' de vereniging van deelcircuits X en Z brengt functioneel Y met zich mee. Met de aanvullingsregel kunt u de linkerkant van de functionele afhankelijkheidsbeperking uitbreiden.

3. De derde gevolgtrekkingsregel heet “ pseudotransitiviteit en luidt als volgt: “als deelcircuit X functioneel deelcircuit Y met zich meebrengt en de vereniging van deelcircuits Y en W functioneel Z met zich meebrengt, dan wordt de regel afgeleid: “de vereniging van deelcircuits X en W bepaalt functioneel deelcircuit Z.”

De pseudotransitiviteitsregel generaliseert de transitiviteitsregel die overeenkomt met het speciale geval W: = 0. Laten we een formele weergave van deze regel geven:

Opgemerkt moet worden dat de eerder gegeven premissen en conclusies in verkorte vorm werden gepresenteerd met behulp van de aanduidingen van functionele afhankelijkheidsschema's. In uitgebreide vorm komen ze overeen met de volgende functionele afhankelijkheidsbeperkingen.

Inferentieregel 1. inv X>r(S);

Inferentieregel 2. inv Y> r(S) ? inv Y>r(S);

Inferentieregel 3. inv Y> r(S) & inv Z> r(S) ? inv Z>r(S);

Laten we uitvoeren bewijs deze gevolgtrekkingsregels.

1. Bewijs van de regel reflexiviteit volgt rechtstreeks uit de definitie van de beperking van functionele afhankelijkheid bij het vervangen van subcircuit X in plaats van subcircuit Y.

Laten we inderdaad de functionele afhankelijkheidsbeperking nemen:

Inv Y> r(S) en X erin vervangen in plaats van Y, we krijgen:

Inv X> r(S), en dit is de regel van reflexiviteit.

De regel van reflexiviteit is bewezen.

2. Bewijs van de regel aanvulling Laten we dit illustreren met functionele afhankelijkheidsdiagrammen.

Het eerste diagram is het uitgangspuntdiagram:

Pakket: X>Y


Tweede diagram:

conclusie: X? Z>Y


Laat de tupels gelijk zijn op X? Z. Dan zijn ze gelijk op X. Volgens de premisse zijn ze gelijk op Y.

De aanvullingsregel is bewezen.

3. Bewijs van de regel pseudotransitiviteit We zullen dit ook illustreren met diagrammen, waarvan er in dit specifieke geval drie zullen zijn.

Het eerste diagram is het eerste uitgangspunt:

uitgangspunt 1: X > Y


uitgangspunt 2: Ja? W>Z


En tenslotte is het derde diagram het conclusiediagram:

conclusie: X? W>Z


Laat de tupels gelijk zijn op X? W. Dan zijn ze gelijk op zowel X als W. Volgens premisse 1 zijn ze gelijk op Y. Dus volgens premisse 2 zijn ze gelijk op Z.

De pseudotransitiviteitsregel is bewezen.

Alle regels zijn bewezen.

3. Afgeleide gevolgtrekkingsregels

Een ander voorbeeld van regels met behulp waarvan, indien nodig, nieuwe regels van functionele afhankelijkheid kunnen worden afgeleid, zijn de zogenaamde afgeleide gevolgtrekkingsregels.

Wat zijn deze regels, hoe worden ze verkregen?

Het is bekend dat als uit sommige regels die al bestaan, andere worden afgeleid door juridisch-logische methoden, deze nieuwe regels worden genoemd derivaten, kan naast de originele regels worden gebruikt.

Er moet speciaal worden opgemerkt dat deze zeer willekeurige regels precies zijn “afgeleid” van de Armstrong-inferentieregels die we eerder hebben doorgenomen.

Laten we de afgeleide regels voor het afleiden van functionele afhankelijkheden formuleren in de vorm van de volgende stelling.

Stelling.

De volgende regels zijn afgeleid van de inferentieregels van Armstrong.

Inferentieregel 1.+X? Z > X;

Inferentieregel 2. X > Y, X > Z + X? Y > Z;

Inferentieregel 3. X > Y? Z + X > Y, X > Z;

Hier zijn X, Y, Z, W, net als in het vorige geval, willekeurige deelschema’s van het relatieschema S.

1. De eerste afgeleide regel wordt aangeroepen de regel van trivialiteit en luidt als volgt:

“De regel is afgeleid: “de vereniging van deelcircuits X en Z impliceert functioneel X.”

Er wordt een functionele afhankelijkheid genoemd, waarbij de linkerkant een subset van de rechterkant is triviaal. Volgens de trivialiteitsregel wordt automatisch aan triviale afhankelijkheidsbeperkingen voldaan.

Interessant is dat de trivialiteitsregel een generalisatie is van de reflexiviteitsregel en, net als deze laatste, rechtstreeks kan worden afgeleid uit de definitie van de functionele afhankelijkheidsbeperking. Het feit dat deze regel afgeleid is, is niet toevallig en houdt verband met de volledigheid van Armstrongs systeem van regels. We zullen later meer praten over de volledigheid van Armstrongs systeem van regels.

2. De tweede afgeleide regel wordt aangeroepen additiviteitsregel en luidt als volgt: “Als subcircuit X functioneel subcircuit Y definieert, en X tegelijkertijd functioneel Z definieert, dan wordt uit deze regels de volgende regel afgeleid: “X definieert functioneel de vereniging van subcircuits Y en Z.”

3. De derde afgeleide regel wordt aangeroepen regel van projectiviteit of de regel " omkering van de additiviteit" Het luidt als volgt: “Als subcircuit X functioneel de vereniging van subcircuits Y en Z definieert, dan wordt uit deze regel de regel afgeleid: “X definieert functioneel subcircuit Y en tegelijkertijd definieert X functioneel subcircuit Z””, d.w.z. inderdaad , dit is een afgeleide regel die het omgekeerde is van de optelregel.

Het is interessant dat de regels van additiviteit en projectiviteit, zoals toegepast op functionele afhankelijkheden met identieke linkerzijden, ons in staat stellen de rechterzijden van de afhankelijkheid te combineren of, omgekeerd, te splitsen.

Bij het construeren van gevolgtrekkingsketens, nadat alle premissen zijn geformuleerd, wordt de regel van transitiviteit toegepast om een ​​functionele afhankelijkheid op te nemen met de rechterkant in de conclusie.

Laten we uitvoeren bewijs de vermelde regels voor willekeurige gevolgtrekking.

1. Bewijs van de regel trivialiteit.

Laten we het, net als alle volgende bewijzen, stap voor stap uitvoeren:

1) we hebben: X > X (uit Armstrongs regel van reflexiviteit van gevolgtrekking);

De trivialiteitsregel is bewezen.

2. Laten we een stapsgewijs bewijs van de regel uitvoeren additiviteit:

1) we hebben: X > Y (dit is uitgangspunt 1);

2) we hebben: X > Z (dit is uitgangspunt 2);

3) we hebben: Y ? Z > Y? Z (uit Armstrongs regel van reflexiviteit van gevolgtrekking);

4) wij hebben: X? Z > Y? Z (verkregen door toepassing van de regel van pseudotransitiviteit van Armstrongs afleiding, en vervolgens als gevolg van de eerste en derde stap van het bewijs);

5) wij hebben: X? X > Y? Z (verkregen door de pseudotransitiviteitsregel van Armstrong toe te passen, en volgt dan uit de tweede en vierde stap);

6) we hebben X > Y? Z (volgt vanaf stap vijf).

De optellingsregel is bewezen.

3. En ten slotte zullen we een bewijs van de regel construeren projectiviteit:

1) we hebben: X > Y? Z, X > Y? Z (dit is een pakket);

2) we hebben: Y > Y, Z > Z (afgeleid met behulp van Armstrongs reflexiviteits- en gevolgtrekkingsregel);

3) we hebben: Y ? z > y, Y ? z > Z (verkregen uit de voltooiingsregel van Armstrong en een uitvloeisel uit de tweede stap van het bewijs);

4) we hebben: X > Y, X > Z (dit wordt verkregen door de regel van pseudotransitiviteit van Armstrongs afleiding toe te passen, en vervolgens als gevolg van de eerste en derde stap van het bewijs).

De regel van projectiviteit is bewezen.

Alle afgeleide gevolgtrekkingsregels zijn bewezen.

4. Volledigheid van Armstrongs systeem van regels

Laten F(S) - een gegeven reeks functionele afhankelijkheden gedefinieerd via een relatiediagram S.

Laten we aanduiden met inv <F(S)> de beperking die wordt opgelegd door deze reeks functionele afhankelijkheden. Laten we het opschrijven:

Inv <F(S)> R(S) = ?X > Y ? F(S) [inv J> R(S)].

Deze reeks beperkingen opgelegd door functionele afhankelijkheden wordt dus als volgt ontcijferd: voor elke regel uit het systeem van functionele afhankelijkheden X > Y, behorend tot de reeks functionele afhankelijkheden F(S), functionele afhankelijkheidsbeperking inv is van kracht J> R(S), gedefinieerd via een reeks relaties R(S).

Laat wat houding R(S) voldoet aan deze beperking.

Het toepassen van Armstrongs gevolgtrekkingsregels op functionele afhankelijkheden die voor een set zijn gedefinieerd F(S), je kunt nieuwe functionele afhankelijkheden verkrijgen, zoals al eerder door ons is gezegd en bewezen. En wat veelbetekenend is, de beperkingen van deze functionele afhankelijkheden houden verband met elkaar F(S) zal automatisch voldoen, zoals blijkt uit de uitgebreide vorm van het schrijven van Armstrongs gevolgtrekkingsregels. Laten we ons de algemene vorm van deze uitgebreide gevolgtrekkingsregels herinneren:

Inferentieregel 1. inv < X >X> R(S);

Inferentieregel 2. inv J> R(S) ? inv ? Z>Y> R(S);

Inferentieregel 3. inv J> R(S) & inv ? W>Z> R(S) ? inv ? W>Z>;

Terugkerend naar onze redenering, laten we de set compleet maken F(S) nieuwe afhankelijkheden die daaruit zijn afgeleid met behulp van de regels van Armstrong. We zullen deze aanvullingsprocedure toepassen totdat we geen nieuwe functionele afhankelijkheden meer verkrijgen. Als resultaat van deze constructie verkrijgen we een nieuwe reeks functionele afhankelijkheden, genaamd kortsluiting sets F(S) en aangegeven F+(S).

Deze naam is inderdaad heel logisch, omdat we zelf, door langdurige constructie, veel bestaande functionele afhankelijkheden van onszelf hebben ‘gesloten’, en alle nieuwe functionele afhankelijkheden hebben toegevoegd (vandaar de ‘+’) die voortkomen uit de bestaande.

Opgemerkt moet worden dat dit proces van het construeren van een afsluiting eindig is, omdat het relationele schema zelf, waarop al deze constructies worden uitgevoerd, eindig is.

Het spreekt voor zich dat de sluiting een superset is van de gesloten set (inderdaad groter!) en helemaal niet verandert als deze weer gesloten wordt.

Als we opschrijven wat we zojuist in formele vorm hebben gezegd, krijgen we:

F(S) ? F + (S), [F + (S)] + =F + (S);

Verder volgt uit de bewezen waarheid (dat wil zeggen wettigheid, wettigheid) van Armstrongs gevolgtrekkingsregels en de definitie van sluiting dat elke relatie die voldoet aan de beperkingen van een gegeven reeks functionele afhankelijkheden, zal voldoen aan de beperking van de afhankelijkheid die bij de sluiting hoort. .

X > Y? F + (S) ? ?R(S) [inv <F(S)> R(S) ? inv J> R(S)];

Armstrongs volledigheidsstelling voor het systeem van gevolgtrekkingsregels stelt dus dat externe implicatie volledig legitiem en gerechtvaardigd kan worden vervangen door gelijkwaardigheid.

(We zullen het bewijs van deze stelling niet overwegen, aangezien het bewijsproces zelf niet zo belangrijk is in onze specifieke hoorcolleges.)

Databasenormalisatie of functionele afhankelijkheid is een situatie waarin een waarde een soepele overgang naar de volgende waarde in een reeks mogelijk maakt, zonder enige onderbreking. Voor dit soort situaties is er sprake van een informatiestroom in de database die plaatsvindt zonder enige vertraging of problemen, en blijft de integriteit van de gegevens zelf behouden. Functionele afhankelijkheid is van cruciaal belang voor het maken en functioneren van relationele databases, omdat het proces lichte associaties met een enkele waarde of een gegevenstype met overeenkomstige waarden met zich meebrengt.

Een van de gemakkelijkste manieren om te begrijpen hoe functionele afhankelijkheid de klus klaren, is door te overwegen een overheidsidentificatienummer te gebruiken, zoals een burgerservicenummer, dat regelmatig aan elke Russische burger wordt verstrekt. Door dit nummer als identificatiemiddel te gebruiken, is het voor werkgevers mogelijk toegang te krijgen tot informatie over de houder van dit nummer; Potentiële kredietverstrekkers en andere crediteuren kunnen het toegangsnummer gebruiken om toegang te krijgen tot relevante financiële informatie over de aanvrager, en het nummer geeft toegang tot informatie zoals belastingen, overlopende posten en betaalde belastingen, inkomsten van het ene jaar op het andere, en voor pensioenberekeningen wanneer de persoon na zijn pensionering uiteindelijk zal genieten van wat hij verdient. In veel gevallen kunnen werkgevers feitelijk hetzelfde nummer gebruiken als het primaire identificatienummer van de werknemer of een deel van het aantal relationele hulpmiddelen om toegang te krijgen tot de rest van het elektronische dossier van de werknemer.

Als onderdeel van het ontwerp en de werking van de database dient een functionele afhankelijkheid ervoor dat gebruikers bepaalde waarden kunnen invoeren die vervolgens kunnen worden gebruikt om de gewenste informatie te verkrijgen. Een verkoper kan bijvoorbeeld een bedrijfsnaam invoeren om alle contactrecords op te halen die aan een zakelijke klant zijn gekoppeld. Op dezelfde manier kan een verkoper die van plan is te verkopen een stadsnaam invoeren als waarde en als middel om toegang te krijgen tot de naam en contactgegevens van alle klanten die zich in de buurt van zijn of haar bestemming bevinden, waardoor het voor hem of haar gemakkelijker wordt om ontmoetingen met die klanten te regelen. .

Hoewel de exacte structuur, zoals het systeem dat de functionele afhankelijkheid biedt, afhankelijk van de toepassing kan variëren, zal het eindresultaat nog steeds hetzelfde zijn. De ene betekenis is aan de andere gekoppeld, waardoor je relatief gemakkelijk toegang hebt tot de informatie die je nodig hebt. Omdat zoveel records in databases worden opgeslagen in plaats van te vertrouwen op de oude methode van het op papier kopiëren van bestanden, is dit soort relationele afhankelijkheid erg belangrijk voor het vinden en gebruiken van relevante gegevens.

Afhankelijkheden tussen attributen

    Attribuut B is functioneel afhankelijk van attribuut A als er voor elke waarde van A slechts één waarde van B is.

Benaming: A B

2. Als er een functionele afhankelijkheid is van de vorm A B en BA, dan is er tussen A en B een onderling verbonden correspondentie of functionele onderlinge afhankelijkheid

Benaming: A B

Gedeeltelijke functionele afhankelijkheid is de afhankelijkheid van een niet-sleutelattribuut van een deel van een samengestelde sleutel.

Volledige functionele afhankelijkheid

Wanneer een niet-sleutelattribuut volledig afhankelijk is van een samengestelde sleutel.

Pr: Afdeling (volledige naam, verplicht, salaris, anciënniteit, ervaringsduur, afdeling, onderwerp, groep, soort beroep)

Volledige naam afdeling

Volledige naam positie

Attribuut C is transitief afhankelijk van A als voor de attributen A, B, C aan de voorwaarde A B en B C is voldaan, maar er is geen omgekeerde afhankelijkheid A C

Voorbeeld. Salaris volledige naam

In relatie r hangt attribuut B meerwaardig af van attribuut A als elke waarde van A overeenkomt met een reeks waarden van B die niet geassocieerd zijn met andere attributen van r.

Aanduiding A B, A B, A B Volledige naam onderwerp

Opmerking: Over het algemeen kunnen functionele en meerwaardige afhankelijkheden (1:1, 1:M,M:M) bestaan ​​tussen twee attributen van één relatie, omdat Als de afhankelijkheid tussen attributen afwijkingen veroorzaakt, is het noodzakelijk om de relatie met attribuutafhankelijkheden op te splitsen in verschillende relaties. Het resultaat is een verzameling gerelateerde relaties, waarvan de verbindingen de afhankelijkheden tussen de attributen van de verschillende relaties weerspiegelen.

Er wordt gezegd dat twee of meer attributen onderling onafhankelijk zijn als niet één van deze attributen niet functioneel afhankelijk is van de andere attributen (Aanduiding A¬
IN).

Afhankelijkheden tussen attributen identificeren

Het identificeren van afhankelijkheden tussen attributen is noodzakelijk om databaseontwerp uit te voeren met behulp van de normale formulierenmethode.

De belangrijkste manier om functionele afhankelijkheid te bepalen is een zorgvuldige analyse attribuut semantiek.

A1 A3

Daarnaast A2 ¬ A1, A3 ¬ A1

Door alle bestaande functionele afhankelijkheden in relatie r op te sommen, verkrijgen we een complete set functionele afhankelijkheden, die worden aangegeven met F + .

Als je enkele functionele afhankelijkheden kent, kun je met behulp van de gevolgtrekkingsaxioma's de volledige verzameling F + voor elke relatie verkrijgen.

Voor de relatie “afdeling”:

Volledige naam salaris

Volledige naam positie

Ervaring met volledige naam

Volledige naam afdeling

Volledige naam d_ervaring

Ervaring d_ervaring

Positie salaris

Salaris positie

Volledige naam.Leraar.Groep Type lessen

Normalisatie van relaties

In een relationele database moet elke relatie worden genormaliseerd. De normale vorm is een beperking op het databaseschema waarmee u afwijkingen kunt voorkomen bij het toevoegen, verwijderen en wijzigen van gegevens.

Een relatie wordt als genormaliseerd (1NF) beschouwd als elke waarde van een attribuut in elke kaart een ondeelbaar (atomair) element is. Dergelijke atomaire waarden zijn eenvoudige gegevenstypen.

2NF Er worden hoofdzakelijk drie normale vormen gebruikt.

Voor alle normaalvormen wordt de nestregel in acht genomen

Voordelen van normalisatie:

    Betere database-organisatie, wat het werk eenvoudiger maakt voor gebruikers en databasebeheerders.

    De redundantie van informatie wordt verminderd, wat leidt tot vereenvoudiging van de structuur en rationeel gebruik van schijfruimte.

    Dubbele informatie wordt geminimaliseerd.

    Normalisatie door de database in kleinere tabellen op te delen, geeft meer flexibiliteit bij het wijzigen van datastructuren.

    Grotere databasebeveiliging.

Na het normaliseren van de database wordt het organiseren van de bescherming van de informatie daarin aanzienlijk vereenvoudigd.

Gebreken :

Verminderde prestaties bij het uitvoeren van query's in de database.

Definities:

    Een relatie is in 1NF als alle elementen van de corresponderende domeinen atomair zijn voor elk attribuut in de oorspronkelijke relatie. De oorspronkelijke relatie is zo opgebouwd dat deze in 1NF staat.

    Een waarde is niet-atomair als deze stukje bij beetje door de toepassing wordt gebruikt.

De transformatie van een relatie naar de volgende normaalvorm wordt uitgevoerd met behulp van de verliesvrije decompositiemethode.

Een dergelijke ontleding moet ervoor zorgen dat zoekopdrachten naar de oorspronkelijke relatie en naar de als resultaat van de ontleding verkregen relaties hetzelfde resultaat zullen opleveren.

De belangrijkste bewerking in de werkwijze is de projectiebewerking.

r (A,B,C,D,E) C D

r1(A,B,C,E) r2(C,D) πCD(r)

Gedeeltelijke sleutelafhankelijkheid van niet-sleutelattributen resulteert in het volgende:

    1. Er is sprake van duidelijke en niet voor de hand liggende redundante duplicatie van gegevens, bijvoorbeeld herhaling van de ervaring, positie en salaris van een leraar die lessen geeft in verschillende groepen en/of in verschillende vakken. Herhaling van salarisgegevens voor dezelfde functie of gegevens over de bonus voor anciënniteit.

    Het gevolg van overmatig dupliceren is het probleem van het bewerken van gegevens. Een deel van de redundantie wordt geëlimineerd bij de overstap naar 2NF.

Een relatie is in 2NF als:

    De relatie bevindt zich in 1NF.

    Elk niet-sleutelattribuut is functioneel volledig afhankelijk van de primaire sleutel.

Om de gedeeltelijke afhankelijkheid op te heffen en de relatie over te dragen aan 2NF, moet u:

    Construeer een projectie zonder attributen die gedeeltelijk functioneel afhankelijk zijn van de primaire sleutel.

    Construeer een projectie op de delen van een samengestelde primaire sleutel en attribuut die van deze delen afhankelijk zijn.

Als resultaat krijgen we twee relaties r1,r2, gelegen in 2NF:

Soort bezetting

Ivanov I.M.

Oefening

Ivanov I.M.

Oefening

Petrov M.I.

Petrov M.I.

Oefening

Sidorov N.G.

Sidorov N.G.

Egorov V.V.

De overgang naar 2NF elimineert de voor de hand liggende redundantie van gegevens met betrekking tot r2, maar duplicatie van gegevens blijft bestaan ​​en daarom is het noodzakelijk om r2 naar 3NF te converteren.

Def.1: Er is sprake van een relatie in 3NF als:

    Er wordt voldaan aan alle 2NF-vereisten.

    Als elk niet-sleutelattribuut niet transitief afhankelijk is van de primaire sleutel.

Def.2: Er is sprake van een relatie in 3NF als alle niet-sleutelattributen onderling onafhankelijk zijn en volledig afhankelijk zijn van de primaire sleutel.

Volledige naam salarispositie

Volledige naam ervaring D_ervaring

Salaris volledige naam

Transitieve afhankelijkheden veroorzaken ook redundante gegevensgeneratie.

Om transitieve afhankelijkheden te elimineren, moet u een projectie gebruiken op de attributen die deze transitieve afhankelijkheden veroorzaken.

Als resultaat krijgen we:

D_ervaring

In de praktijk is in de meeste gevallen de reductie naar 3NF voldoende en vindt er geen verdere normalisatie plaats.

Als er in een relatie een afhankelijkheid is van de attributen van een samengestelde sleutel van niet-sleutelattributen, dan is het noodzakelijk om over te stappen naar versterkte 3NF, dit wordt BCNF genoemd.

zeker. Een relatie bevindt zich in BNFB als deze zich in 3NF bevindt en er geen sleutelafhankelijkheden (samengestelde sleutelattributen) zijn op niet-sleutelattributen.

Functionele afhankelijkheden

Functionele afhankelijkheid beschrijft de relatie tussen attributen en is een van de basisconcepten van normalisatie. Laten we aannemen dat het relationele schema attributen heeft (A, B, C,..., Z) en dat de hele basis kan worden weergegeven als één universele relatie R=(A, B, C,..., Z). Daarom heeft elk attribuut in de database een unieke naam.

Als A en B attributen zijn van een bepaalde relatie R, en elke waarde van A geassocieerd is met één en slechts één waarde van B (en elk van de attributen kan uit een of meer attributen bestaan), dan is attribuut B functioneel afhankelijk van attribuut A (ВАА).

Een functionele afhankelijkheid die onder alle omstandigheden geldig is, wordt genoemd triviaal. Niet-triviale afhankelijkheden definiëren integriteitsbeperkingen op relaties.

Transitieve afhankelijkheid voor attributen A, B en C van een bepaalde relatie betekent het volgende: als AàB en BàC, dan hangt C transitief af van attribuut A via attribuut B (op voorwaarde dat A functioneel onafhankelijk is van B of C).

Om gegevensredundantie te voorkomen, wat kan leiden tot verlies van integriteit, is het noodzakelijk om een ​​minimaal voldoende aantal afhankelijkheden te gebruiken.

Databaseontwerp met behulp van normalisatie begint met het definiëren van functionele afhankelijkheden die semantisch voor de hand liggend zijn, d.w.z. reductie tot de eerste normaalvorm.

Een tabel in eerste normaalvorm moet aan de volgende eisen voldoen:

1) de tabel mag geen dubbele records bevatten;

2) de tabel mag geen dubbele groepen velden bevatten;

3) elk veld moet semantisch ondeelbaar zijn.

Een tabel in de tweede normale vorm moet voldoen aan alle vereisten van 1NF; elk niet-sleutelveld wordt uniek geïdentificeerd door een volledige set sleutelvelden, dat wil zeggen dat elk attribuut van de relatie volledig of gedeeltelijk functioneel afhankelijk is van een ander attribuut.

De functionele afhankelijkheid van AàB is vol functionele afhankelijkheid als het verwijderen van een attribuut van A leidt tot het verlies van deze afhankelijkheid. De functionele afhankelijkheid van AàB wordt genoemd gedeeltelijk Als er in A een bepaald attribuut aanwezig is, blijft deze afhankelijkheid bestaan ​​als deze wordt verwijderd.

Een tabel in de derde normaalvorm moet aan alle vereisten van 2NF voldoen; geen enkel niet-sleutelveld wordt geïdentificeerd door een ander niet-sleutelveld, dat wil zeggen een relatie die zich in de eerste en tweede normaalvorm bevindt en geen attributen heeft die dat niet zijn; in de primaire sleutel van de attributen , die in een transitieve functionele afhankelijkheid van deze primaire sleutel zouden zijn.

Boyce Code Normal Form (BCNF) is gebaseerd op functionele afhankelijkheden die rekening houden met alle potentiële sleutels van een relatie, maar met strengere beperkingen.

Determinant van functionele afhankelijkheid is een attribuut (of een groep attributen) waarvan een ander attribuut volledig functioneel afhankelijk is.

Om te controleren of een relatie tot de BCNF behoort, is het noodzakelijk om al zijn determinanten te vinden en er zeker van te zijn dat dit potentiële sleutels zijn.

Het verschil tussen 3NF en BCNF is dat de functionele afhankelijkheid AàB is toegestaan ​​in een 3NF-relatie als attribuut B een primaire sleutel is en attribuut A niet noodzakelijkerwijs een kandidaatsleutel is. Voor BCNF is deze afhankelijkheid alleen toegestaan ​​als attribuut A een kandidaatsleutel is. Daarom is BCNF een striktere versie van 3NF, aangezien elke BCNF-relatie 3NF is, maar niet elke 3NF-relatie BCNF.

Er is alleen sprake van een relatie in BCNF als elk van de determinanten ervan een potentiële sleutel is.

De vierde normaalvorm (4NF) is een relatie in BCNF die geen niet-triviale meerwaardige afhankelijkheden bevat.

Meerwaardige afhankelijkheid vertegenwoordigt een relatie tussen attributen van een relatie (bijvoorbeeld A, B en C), zodat elke waarde van A een reeks waarden voor B en een reeks waarden voor C vertegenwoordigt. De sets waarden vertegenwoordigen echter want B en C zijn onafhankelijk van elkaar.

Een meerwaardige afhankelijkheid kan verder worden gedefinieerd als triviaal of niet-triviaal. Een meerwaardige afhankelijkheid AàB van een relatie R wordt als triviaal gedefinieerd als attribuut B een subset is van attribuut A of . Omgekeerd wordt een meerwaardige afhankelijkheid als niet-triviaal gedefinieerd als aan geen van beide voorwaarden is voldaan. Een triviale meerwaardige afhankelijkheid legt geen beperkingen op aan deze relatie, maar een niet-triviale afhankelijkheid wel.

Bij het verdelen van een relatie met behulp van de projectiebewerking wordt de gebruikte ontledingsmethode nauwkeurig bepaald. Het is noodzakelijk dat wanneer de resulterende relaties opnieuw worden verbonden, de oorspronkelijke relatie kan worden hersteld. Deze ontbinding wordt genoemd verliesloze verbindingsontbinding(of een win-win of niet-additieve join) omdat alle gegevens in de oorspronkelijke relatie behouden blijven en het maken van extra dummy-rijen wordt geëlimineerd.

Vijfde normaalvorm (5NF), ook wel projectieve connectieve normaalvorm genoemd, betekent dat een relatie in deze vorm geen join-afhankelijkheden heeft. Een relatie R met een deelverzameling van attributen A,B,...,Z voldoet aan een samenvoegingsafhankelijkheid als elke toelaatbare waarde van R gelijk is aan de samenvoeging van zijn projecties op de deelverzamelingen A,B,...,Z.