Wat is normalisatie?
Normalisatie is een databaseontwerptechniek die gegevensredundantie vermindert en ongewenste kenmerken, zoals afwijkingen bij invoegen, bijwerken en verwijderen, elimineert. Normalisatieregels verdelen grotere tabellen in kleinere tabellen en koppelen deze met behulp van relaties. Het doel van normalisatie in SQL is om overtollige (repetitieve) gegevens te elimineren en ervoor te zorgen dat gegevens logisch worden opgeslagen.
De uitvinder van het relationele model Edgar Codd stelde de theorie van normalisatie van gegevens voor met de introductie van de eerste normaalvorm, en hij bleef de theorie uitbreiden met de tweede en derde normaalvorm. Later voegde hij zich bij Raymond F. Boyce om de theorie van Boyce-Codd Normal Form te ontwikkelen.
Database normale formulieren
Hier is een lijst met normale vormen
- 1NF (eerste normale vorm)
- 2NF (tweede normale vorm)
- 3NF (derde normale vorm)
- BCNF (Boyce-Codd normale vorm)
- 4NF (vierde normale vorm)
- 5NF (vijfde normale vorm)
- 6NF (zesde normale vorm)
De Theory of Data Normization in SQL Server wordt nog verder ontwikkeld. Er zijn bijvoorbeeld zelfs discussies over het 6e Normaalformulier . Maar in de meeste praktische toepassingen, normalisatie bereikt zijn best in 3 rd Normal Form . De evolutie van SQL-normalisatietheorieën wordt hieronder geïllustreerd:
Database normalisatie met voorbeelden
Database Normalisatie Voorbeeld kan gemakkelijk worden begrepen met behulp van een casestudy. Stel dat een videobibliotheek een database bijhoudt met verhuurde films. Zonder enige normalisatie in de database wordt alle informatie opgeslagen in één tabel, zoals hieronder wordt weergegeven. Laten we Normalisatie in de database begrijpen met een voorbeeld van tabellen:
Hier zie je de kolom Movies Rented heeft meerdere waarden. Laten we nu naar de 1e normale vormen gaan:
1NF-regels (First Normal Form)
- Elke tabelcel moet één waarde bevatten.
- Elk record moet uniek zijn.
De bovenstaande tabel in 1NF-
1NF Voorbeeld
Voordat we verder gaan, laten we een paar dingen begrijpen -
Wat is een SLEUTEL?
Een SLEUTEL is een waarde die wordt gebruikt om een record in een tabel uniek te identificeren. Een SLEUTEL kan een enkele kolom zijn of een combinatie van meerdere kolommen
Opmerking: Kolommen in een tabel die NIET worden gebruikt om een record uniek te identificeren, worden niet-sleutelkolommen genoemd.
Wat is een primaire sleutel?
Een primair is een enkele kolomwaarde die wordt gebruikt om een databaserecord uniek te identificeren.
Het heeft de volgende attributen
- Een primaire sleutel kan niet NULL zijn
- Een primaire sleutelwaarde moet uniek zijn
- De primaire sleutelwaarden mogen zelden worden gewijzigd
- De primaire sleutel moet een waarde krijgen wanneer een nieuw record wordt ingevoegd.
Wat is een samengestelde sleutel?
Een samengestelde sleutel is een primaire sleutel die is samengesteld uit meerdere kolommen die worden gebruikt om een record uniek te identificeren
In onze database hebben we twee mensen met dezelfde naam Robert Phil, maar ze wonen op verschillende plaatsen.
Daarom hebben we zowel de volledige naam als het adres nodig om een record uniek te identificeren. Dat is een samengestelde sleutel.
Laten we naar de tweede normale vorm 2NF gaan
2NF-regels (Second Normal Form)
- Regel 1- Wees in 1NF
- Regel 2 - Primaire sleutel met één kolom
Het is duidelijk dat we niet verder kunnen naar onze eenvoudige database maken in 2 e Normalisatie vorm tenzij we verdelen boven de tabel.
We hebben onze 1NF-tafel opgedeeld in twee tafels te weten. Tabel 1 en Table2. Tabel 1 bevat informatie over leden. Tabel 2 bevat informatie over gehuurde films.
We hebben een nieuwe kolom geïntroduceerd met de naam Membership_id, de primaire sleutel voor tabel 1. Records kunnen uniek worden geïdentificeerd in tabel 1 met behulp van lidmaatschaps-ID
Database - Vreemde sleutel
In Tabel 2 is Membership_ID de Foreign Key
Foreign Key verwijst naar de primaire sleutel van een andere tabel! Het helpt uw tafels met elkaar te verbinden
- Een externe sleutel kan een andere naam hebben dan de primaire sleutel
- Het zorgt ervoor dat rijen in de ene tabel corresponderende rijen hebben in een andere
- In tegenstelling tot de primaire sleutel hoeven ze niet uniek te zijn. Meestal zijn ze dat niet
- Vreemde sleutels kunnen null zijn, hoewel primaire sleutels dat niet kunnen
Waarom heb je een externe sleutel nodig?
Stel dat een beginner een record in tabel B invoegt, zoals
U kunt alleen waarden in uw externe sleutel invoegen die bestaan in de unieke sleutel in de bovenliggende tabel. Dit helpt bij referentiële integriteit.
Het bovenstaande probleem kan worden opgelost door lidmaatschaps-ID van Tabel2 te declareren als externe sleutel van lidmaatschaps-ID van Tabel1
Als iemand nu een waarde probeert in te voegen in het lidmaatschaps-ID-veld die niet bestaat in de bovenliggende tabel, wordt er een fout weergegeven!
Wat zijn transitieve functionele afhankelijkheden?
Een transitieve functionele afhankelijkheid is bij het wijzigen van een niet-sleutelkolom, kan ertoe leiden dat een van de andere niet-sleutelkolommen verandert
Beschouw de tabel 1. Het wijzigen van de niet-sleutelkolom Volledige naam kan de aanhef wijzigen.
Laten we naar 3NF gaan
3NF-regels (Third Normal Form)
- Regel 1- Wees in 2NF
- Regel 2 - Heeft geen transitieve functionele afhankelijkheden
Om onze 2NF-tafel naar 3NF te verplaatsen, moeten we onze tafel opnieuw verdelen.
3NF Voorbeeld
Hieronder ziet u een 3NF-voorbeeld in de SQL-database:
We hebben onze tafels weer opgedeeld en een nieuwe tafel gemaakt waarin Salutations zijn opgeslagen.
Er zijn geen transitieve functionele afhankelijkheden en daarom bevindt onze tabel zich in 3NF
In tabel 3 is aanhef-ID de primaire sleutel en in tabel 1 is aanhef-ID vreemd aan de primaire sleutel in tabel 3
Nu bevindt ons kleine voorbeeld zich op een niveau dat niet verder kan worden afgebroken om hogere normale vormen van normalisatie te bereiken. In feite is het al in hogere normalisatievormen. Afzonderlijke inspanningen om naar de volgende niveaus van het normaliseren van gegevens te gaan, zijn normaal gesproken nodig in complexe databases. In het volgende zullen we echter de volgende niveaus van normalisatie in het kort bespreken.
BCNF (Boyce-Codd normale vorm)
Zelfs wanneer een database is in 3 rd Normal Form, toch zou er afwijkingen geleid als er meer dan één kandidaat- Key.
Soms wordt BCNF ook wel 3.5 Normal Form genoemd.
4NF-regels (Fourth Normal Form)
Als geen enkele databasetabasexemplaar twee of meer, onafhankelijke en meerwaardige gegevens bevat die de relevante entiteit beschrijven, dan is het in 4 de normale vorm.
5NF-regels (Fifth Normal Form)
Een tabel is in 5 th Normal Form alleen als het in 4NF en het kan niet in een aantal kleinere tafels worden ontleed zonder verlies van gegevens.
6NF (Sixth Normal Form) voorgesteld
6 th Normal Form niet gestandaardiseerd, maar het echter wordt besproken door de database experts voor bepaalde tijd. Hopelijk zouden we een duidelijke en gestandaardiseerde definitie voor 6 e Normal Form in de nabije toekomst ...
Dat is alles voor SQL-normalisatie !!!
Overzicht
- Het ontwerpen van databases is van cruciaal belang voor de succesvolle implementatie van een databasebeheersysteem dat voldoet aan de gegevensvereisten van een bedrijfssysteem.
- Normalisatieproces in DBMS helpt databasesystemen te produceren die kosteneffectief zijn en betere beveiligingsmodellen hebben.
- Functionele afhankelijkheden zijn een zeer belangrijk onderdeel van het normaliseringsgegevensproces
- De meeste databasesystemen zijn genormaliseerde databases tot de derde normale vormen.
- Een primaire sleutel identificeert uniek zijn record in een tabel en kan niet null zijn
- Een externe sleutel helpt bij het verbinden van de tabel en verwijst naar een primaire sleutel