Tijdens het interview vragen sommige interviewers naar het databaseparadigma; ik heb databases eerder op de universiteit bestudeerd, maar ik heb er nog nooit van gehoord, of de docent heeft het genoemd, en ik heb er niet op gelet?
Er zijn momenteel zes paradigma's in relationele databases: het eerste paradigma (1NF), het tweede paradigma (2NF), het derde paradigma (3NF), het Bass-Cod-paradigma (BCNF), het vierde paradigma (4NF) en het vijfde paradigma (5NF, ook bekend als het perfecte paradigma).
Gewoonlijk gebruiken we het eerste paradigma (1NF), het tweede paradigma (2NF) en het derde paradigma (3NF), wat de "drie paradigma's" zijn die in dit artikel worden besproken.
Eerste Paradigma (1NF): Vereist dat elke kolom van de databasetabel een ondeelbaar atomair data-item is.
Illustreren:
In de bovenstaande tabel voldoen noch de kolommen "Familie Informatie" noch "Schoolinformatie" aan de atomiciteitsvereisten, dus ze voldoen niet aan het eerste paradigma en worden als volgt aangepast:
Het is duidelijk dat elke aangepaste kolom ondeelbaar is, dus het voldoet aan het eerste paradigma (1NF);
Paradigma 2 (2NF): Op basis van 1NF moeten niet-code attributen volledig afhankelijk zijn van kandidaatcodes (gedeeltelijke functieafhankelijkheid van niet-primaire attributen op mastercode op 1NF-basis elimineren)
Het tweede paradigma moet ervoor zorgen dat elke kolom in de databasetabel gerelateerd is aan de primaire sleutel, en niet slechts een deel van de primaire sleutel (voornamelijk voor gefedereerde primaire sleutels).
Illustreren:
In het geval dat in het bovenstaande diagram wordt getoond, kan dezelfde volgorde verschillende producten bevatten, dus de primaire sleutel moet een combinatie zijn van "ordernummer" en "productnummer".
Echter, het kan worden vastgesteld dat de producthoeveelheid, productkorting en productprijs allemaal gerelateerd zijn aan het "ordernummer" en "productnummer", maar dat het bestelbedrag en de ordertijd alleen gerelateerd zijn aan het "ordernummer" en niets te maken hebben met het "productnummer".
Dit voldoet niet aan de eisen van het tweede paradigma en wordt als volgt aangepast, dat in twee tabellen moet worden verdeeld:
Derde paradigma (3NF): Op basis van 2NF hangt geen enkel niet-hoofdattribuut af van andere niet-hoofdattributen (waarbij transmissieafhankelijkheden op basis van 2NF worden geëlimineerd)
Het derde paradigma moet ervoor zorgen dat elke kolom met gegevens in de datatabel direct gerelateerd is aan de primaire sleutel, en niet indirect.
Illustreren:
In de bovenstaande tabel zijn alle attributen volledig afhankelijk van het leerlingnummer, dus wordt aan het tweede paradigma voldaan, maar het "geslacht van de klasleraar" en de leeftijd van de klasleraar" zijn direct afhankelijk van de naam van de "klasleraarnaam".
In plaats van de hoofdsleutel "studentennummer" moeten de volgende aanpassingen worden gedaan:
Op deze manier worden aan de eisen van het derde paradigma voldaan.
ps:如果把上表中的班主任姓名改成班主任教工号可能更确切,更符合实际情况,不过只要能理解就行。
BCNF (Bovce Codd Normaalvorm Bacchus Paradigma)
Het derde correctieparadigma is om te voorkomen dat één kolom van de primaire sleutel afhankelijk is van andere kolommen van de primaire sleutel. Wanneer 3NF bepaalde functieafhankelijkheden elimineert en functieafhankelijkheden op de hoofdattribuutcode overdraagt, wordt dit BCNF genoemd.
Karakteristiek:
1. Alle hoofdattributen zijn volledig functionele afhankelijkheden van elke code
2. Alle hoofdattributen zijn volledig functieafhankelijk van elke code die het niet bevat
3. Er zijn geen attributen die volledig functioneel zijn en afhankelijk zijn van een set niet-code-eigenschappen
Bijvoorbeeld, in de voorraadtabel (magazijnnaam, administratornaam, productnaam, hoeveelheid) is de primaire sleutel (magazijnnaam, administratornaam, productnaam), wat voldoet aan de vorige drie paradigma's, maar er is een afhankelijkheid tussen de warehousenaam en de administratornaam, dus het verwijderen van een warehouse zal ertoe leiden dat de administrator wordt verwijderd, waardoor BCNF niet wordt bevredigd.
4NF Vierde Paradigma
Niet-primaire attributen mogen niet meerdere waarden hebben. Als er een multiwaarde is, schendt deze het vierde paradigma. 4NF is een restrictie-relationeel patroon dat geen niet-triviale en niet-functie-afhankelijke meerwaardige afhankelijkheden tussen eigenschappen toestaat.
Bijvoorbeeld, de contactinformatietabel van gebruikers (gebruikers-ID, vaste lijn, mobiele telefoon), waarbij de gebruikers-ID de primaire sleutel is die voldoet aan de BCNF, maar een gebruiker kan meerdere vaste telefoons of meerdere mobiele telefoons hebben, dan is dit ontwerp onredelijk en moet worden gewijzigd naar (gebruikers-ID, contacttype, telefoonnummer).
Opmerking: Als alleen functieafhankelijkheden worden meegenomen, is het paradigma met de hoogste mate van normalisatie van relationele patronen BCNF. Als je multi-waarde afhankelijkheden beschouwt, is het 4NF.
5NF Vijfde Paradigma
Het vijfde paradigma is het laatste paradigma, waardoor de verbindingsafhankelijkheid in 4NF wordt geëlimineerd, en het vijfde paradigma moet aan de volgende eisen voldoen:
1. Het vierde paradigma moet worden nagekomen
2. Tabellen moeten ontbindbaar zijn in kleinere tabellen, tenzij die tabellen logisch dezelfde primaire sleutel hebben als de oorspronkelijke tabel.
In algemene praktische toepassingen hoeft het vijfde paradigma niet te worden meegenomen.
Overgedragen van:De hyperlink-login is zichtbaar. Referentie:De hyperlink-login is zichtbaar.
|