Huis Persoonlijke financiën SQL eerste, tweede en derde normale vormen - dummies

SQL eerste, tweede en derde normale vormen - dummies

Inhoudsopgave:

Video: Ruby on Rails by Leila Hofer 2024

Video: Ruby on Rails by Leila Hofer 2024
Anonim

Er zijn drie bronnen van wijzigingsanomalieën in SQL Deze worden gedefinieerd als eerste, tweede en derde normale vormen (1NF, 2NF, 3NF). Deze normale vormen fungeren als remedies voor het wijzigen van anomalieën.

Eerste normaalformulier

Om in de eerste normaalvorm (1NF) te zijn, moet een tabel de volgende eigenschappen hebben:

  • De tabel is tweedimensionaal met rijen en kolommen.

  • Elke rij bevat gegevens die betrekking hebben op iets of een deel van een ding.

  • Elke kolom bevat gegevens voor een enkel attribuut van het ding dat het beschrijft.

  • Elke cel (kruising van een rij en een kolom) van de tabel mag slechts één waarde hebben.

  • Inzendingen in elke kolom moeten allemaal van hetzelfde type zijn. Als de invoer in een rij van een kolom bijvoorbeeld een werknemersnaam bevat, moeten alle andere rijen ook werknemersnamen in die kolom bevatten.

  • Elke kolom moet een unieke naam hebben.

  • Geen twee rijen kunnen identiek zijn (dat wil zeggen, elke rij moet uniek zijn).

  • De volgorde van de kolommen en de volgorde van de rijen zijn niet significant.

Een tabel (relatie) in de eerste normale vorm is immuun voor sommige soorten aanpassingsanomalieën, maar is nog steeds onderhevig aan andere. De SALES-tabel heeft de eerste normale vorm en de tabel is onderhevig aan schrapping en invoegafwijkingen. De eerste normale vorm kan in sommige toepassingen nuttig zijn, maar onbetrouwbaar in andere.

Tweede normale vorm

Om de tweede normale vorm te waarderen, moet u het idee van functionele afhankelijkheid begrijpen. Een functionele afhankelijkheid is een relatie tussen of tussen attributen. Eén attribuut is functioneel afhankelijk van een ander, als de waarde van het tweede attribuut de waarde van het eerste attribuut bepaalt. Als u de waarde van het tweede attribuut kent, kunt u de waarde van het eerste attribuut bepalen.

Stel dat een tabel attributen (kolommen) StandardCharge, NumberOfTests en TotalCharge heeft die betrekking hebben op de volgende vergelijking:

TotalCharge = StandardCharge * NumberOfTests

TotalCharge is functioneel afhankelijk van zowel StandardCharge als NumberOfTests. Als u de waarden van StandardCharge en NumberOfTests kent, kunt u de waarde van TotalCharge bepalen.

Elke tabel in de eerste normale vorm moet een unieke primaire sleutel hebben. Die sleutel kan uit een of meer kolommen bestaan. Een sleutel die uit meer dan één kolom bestaat, wordt een samengestelde sleutel genoemd. Om in de tweede normale vorm (2NF) te zijn, moeten alle niet-sleutelkenmerken afhankelijk zijn van de volledige sleutel. Dus elke relatie die zich in 1NF bevindt met een enkele attribuutsleutel bevindt zich automatisch in de tweede normale vorm.

Als een relatie een samengestelde sleutel heeft, moeten alle niet-sleutelkenmerken afhankelijk zijn van alle componenten van de sleutel. Als u een tabel hebt waarin sommige niet-sleutelkenmerken niet afhankelijk zijn van alle componenten van de sleutel, breek de tabel dan op in twee of meer tabellen zodat - in elk van de nieuwe tabellen - alle niet-sleutelkenmerken afhankelijk zijn van alle componenten van de primaire sleutel.

Geluid verwarrend? Bekijk een voorbeeld om zaken te verduidelijken. Bekijk de SALES-tabel. In plaats van slechts één aankoop voor elke klant op te nemen, voegt u een rij toe telkens wanneer een klant een artikel voor de eerste keer koopt. Een bijkomend verschil is dat charterklanten (die met Klant-ID-waarden van 1001 tot 1007) korting krijgen op de normale prijs.

Customer_ID identificeert niet eenduidig ​​een rij. In twee rijen is Customer_ID 1001. In twee andere rijen is Customer_ID 1010. De combinatie van de kolom Customer_ID en de kolom Product duiden op unieke wijze een rij aan. Deze twee kolommen samen zijn een samengestelde sleutel.

Als niet voor het feit dat sommige klanten in aanmerking komen voor een korting en andere niet, de tabel niet in een tweede normale vorm zou zijn, omdat Price (een niet-sleutelkenmerk) alleen afhankelijk zou zijn van een deel van de sleutel (Artikel). Omdat sommige klanten in aanmerking komen voor een korting, is de prijs afhankelijk van zowel het klantnummer als het product en staat de tabel in de tweede normale vorm.

Derde normale vorm

Tabellen in de tweede normale vorm zijn bijzonder kwetsbaar voor sommige typen van anomalieën van wijzigingen - in het bijzonder die afwijkingen die voortkomen uit transitieve afhankelijkheden.

A transitieve afhankelijkheid treedt op wanneer een attribuut afhankelijk is van een tweede attribuut, dat afhankelijk is van een derde attribuut. Verwijderingen in een tabel met een dergelijke afhankelijkheid kunnen ongewenst informatieverlies veroorzaken. Een relatie in de derde normale vorm is een relatie in de tweede normale vorm zonder transitieve afhankelijkheden.

Kijk nog eens naar de SALES-tabel, waarvan je weet dat deze in de eerste normale vorm is. Zolang u ingangen beperkt om slechts één rij toe te staan ​​voor elke Customer_ID, hebt u een primaire sleutel met één kenmerk en bevindt de tabel zich in de tweede normale vorm. De tabel is echter nog steeds onderhevig aan anomalieën. Wat als klant 1010 bijvoorbeeld niet tevreden is met chloorbleekmiddel en het item retourneert voor terugbetaling?

U wilt de derde rij uit de tabel verwijderen, waarin staat dat klant 1010 chloor bleekmiddel heeft gekocht. U hebt een probleem: als u die rij verwijdert, verliest u ook het feit dat chloor met chloor een prijs van $ 4 heeft. Deze situatie is een voorbeeld van een transitieve afhankelijkheid. Prijs is afhankelijk van het Product, dat op zijn beurt afhankelijk is van de primaire sleutel Customer_ID.

Het doorbreken van de SALES-tabel in twee tabellen lost het probleem van de transitieve afhankelijkheid op. De twee tabellen vormen een database die zich in de derde normale vorm bevindt.

SQL eerste, tweede en derde normale vormen - dummies

Bewerkers keuze

Setup Menu 3 op de Rebel T6i / 750D - dummies

Setup Menu 3 op de Rebel T6i / 750D - dummies

Er wachten nogal wat aanpassingsmogelijkheden op de Setup-menu van de Rebel T6i / 750D 3. Setup-menu 3, weergegeven in de volgende afbeelding, bevat de volgende aanpassingsmogelijkheden: Schermkleur: standaard bevat het scherm Opname-instellingen opnamegegevens in het wit op een eenvoudige zwarte achtergrond. Er worden grijstinten in grijstinten gebruikt en accenten worden meestal oranje gemarkeerd. ...

Bewerkers keuze

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst aan een inhoud toevoegen tijdelijke aanduiding in Microsoft PowerPoint, klik op het gebied Klik om tekst toe te voegen en typ wat u wilt. Als u een ander type inhoud wilt toevoegen, klikt u op het pictogram in de tijdelijke aanduiding voor het gewenste type. Als u meer tekst typt dan in dat tekstvak past (vooral gebruikelijk voor ...

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

De Prullenbak op uw computer bevat onlangs verwijderde items. Uw oude bestanden bevinden zich in de Prullenbak en u kunt ze ophalen totdat u deze leegt of totdat deze de maximale maximale grootte heeft bereikt, en Windows automatisch enkele bestanden dumpt. Nadat u de Prullenbak hebt leeggemaakt, zijn alle bestanden daarin niet beschikbaar voor ...

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Nadat u een document hebt gemaakt, bent u klaar om te beginnen met typen. Tekst op de pagina plaatsen (of op het scherm) is een beetje anders in elk van de drie grote Microsoft Office-toepassingen: Word, Excel en PowerPoint. Woord: Het belangrijkste werkgebied van het programma is een lege lei waarop u rechtstreeks kunt typen. Klik gewoon in de ...

Bewerkers keuze

Animatie maken met de HTML5-canvastag - dummies

Animatie maken met de HTML5-canvastag - dummies

Hoewel de HTML5-canvastag misschien niet als vervanging voor Flash als mechanisme voor het implementeren van games en animaties in de browser, is het redelijk eenvoudig om animaties aan een canvasafbeelding toe te voegen. De sleutel is om de animatiefuncties te gebruiken die al in de browser zijn ingebouwd. Basisstructuur van de animatielus in HTML5-canvas Een animatie ...

Hoe externe stijlen maken in CSS3 - dummies

Hoe externe stijlen maken in CSS3 - dummies

De meeste ontwikkelaars gebruiken externe stijlen in CSS3 om te verkleinen de hoeveelheid werk die nodig is om een ​​site te onderhouden. Een. CSS-bestand bevat alle stijlen voor de site, wat betekent dat het veranderen van een stijl voor de hele site net zo eenvoudig is als het veranderen van dat ene bestand (in plaats van elke pagina). Omdat de wijziging plaatsvindt in slechts ...

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

De Yahoo! Gebruikersinterface (YUI) -bibliotheek (Yuilibrary) is een complete ontwikkeling - API verwant met jQuery en jQuery UI CSS3 gecombineerd in sommige opzichten en rijker dan deze bibliotheken in andere. Dit is een complexe API die is ontworpen om aan de behoeften van grotere applicaties te voldoen. Eigenlijk moet je echt de tutorials doorlopen, ...