Hem Personliga finanser Hur man hanterar SQL modifieringsanomalier och normala formulär - dummies

Hur man hanterar SQL modifieringsanomalier och normala formulär - dummies

Video: Integritetsvillkor. Säkerhet. Del 1 av 2. 2024

Video: Integritetsvillkor. Säkerhet. Del 1 av 2. 2024
Anonim

En mängd problem - kallad modifieringsanomalier - kan plåga en databas om du inte strukturerar SQL-databasen korrekt. För att förhindra dessa problem kan du normalisera databasstrukturen. Normalisering innebär i allmänhet att man delar upp en databastabell i två enklare tabeller.

Modifieringsavvikelser är så kallade eftersom de genereras genom att lägga till, byta till eller radera data från en databas tabell.

Antag exempelvis att ditt företag säljer hushållsrengöringsprodukter, och du debiterar alla kunder samma pris för varje produkt. Försäljningsbordet håller reda på allt för dig. Antag att kund 1001 flyttar bort och inte längre är kund. Du bryr dig inte vad han köpt tidigare, för att han inte kommer att köpa någonting från dig igen. Du vill radera sin rad från bordet.

Om du gör det, förlorar du inte bara det faktum att kund 1001 har köpt tvättmedel. du förlorar också det faktum att tvättmedel kostar $ 12. Denna situation kallas en borttagningsanomali. Vid radering av ett faktum (den kunden 1001 köpte tvättmedel) raderar du ett annat faktum (det tvättmedel kostar $ 12).

Du kan använda samma tabell för att illustrera en infallande anomali. Antag att du vill lägga till stick deodorant till din produktlinje till ett pris av $ 2. Du kan inte lägga till dessa uppgifter i försäljningsbordet tills en kund köper stick deodorant.

Problemet med försäljningsbordet är att den här tabellen behandlar mer än en sak: Det täcker inte bara vilka produkter kunderna köper, utan också vad produkterna kostar. För att eliminera anomalierna måste du dela försäljningsbordet i två tabeller, var och en handlar bara om ett tema eller en idé.

  • CUST_PURCH, som handlar om den enda idén om kundköp.

  • PROD_PRICE, som handlar om den enda idén om produktprissättning.

Du kan nu radera raden för kund 1001 från CUST_PURCH utan att förlora det faktum att tvättmedel kostar $ 12. (Kostnaden för tvättmedel är nu lagrad i PROD_PRICE.) Du kan också lägga till stick deodorant till PROD_PRICE om någon har köpt produkten. Köpinformation lagras någon annanstans i CUST_PURCH-tabellen.

Processen att bryta upp ett bord i flera tabeller, som alla har ett enda tema, kallas normalisering. En normaliseringsoperation som löser ett problem kan inte påverka andra problem.Det kan hända att du måste utföra flera på varandra följande normaliseringsoperationer för att minska varje resulterande tabell till ett enda tema.

Varje databastabell ska behandla ett och ett huvudtema. Ibland (som du nog gissade) bestämmer att ett bord verkligen behandlar två eller flera teman kan vara svårt.

Du kan klassificera tabeller enligt de typer av modifieringsavvikelser som de är föremål för. I ett 1970-papper identifierade E. F. Codd tre källor till modifieringsanomalier och definierade första, andra och tredje normala former (1NF, 2NF, 3NF) som korrigerande medel för dessa typer av anomalier. Under de följande åren upptäckte Codd och andra ytterligare typer av anomalier och specificerade nya normala former för att hantera dem.

Den normala formen Boyce-Codd (BCNF), den fjärde normala formen (4NF) och den femte normala formen (5NF) gav vardera en högre grad av skydd mot modifieringsanomalier. Inte förrän 1981 beskriver emellertid ett papper, skrivet av Ronald Fagin, domännyckelform eller DK / NF. Med hjälp av denna senaste normala formulär kan du garantera att ett bord är fritt för modifieringsavvikelser.

De normala formulären är kapslade i den meningen att ett bord som är i 2NF automatiskt också i 1NF. På samma sätt är en tabell i 3NF automatiskt i 2NF, och så vidare. För de flesta praktiska tillämpningar är en databas i 3NF tillräcklig för att säkerställa en hög grad av integritet. För att vara helt säker på dess integritet måste du sätta databasen i DK / NF.

När du normaliserar en databas så mycket som möjligt kanske du vill göra valda denormaliseringar för att förbättra prestanda. Om du gör det, var medveten om de typer av avvikelser som kan bli möjliga.

Hur man hanterar SQL modifieringsanomalier och normala formulär - dummies

Redaktörens val

Justering och justering av text i Word 2016 - dummies

Justering och justering av text i Word 2016 - dummies

Styckejustering i Word 2016-dokument har ingenting att göra med politik, och motiveringen har lite att göra med anledningarna till att lägga text i en paragraf. Istället hänvisar båda termerna till hur styckets vänstra och högra kanter ser på en sida. De fyra alternativen är vänster, center, rätt och fullständigt motiverad, ...

Hur man gör två kolumntext i Word 2016 - dummies

Hur man gör två kolumntext i Word 2016 - dummies

När man vill imponera på någon Med din text i Word 2016 kan du försöka sätta två kolumner på din sida. Några fler kolumner, och textbredden är för mager och svår att läsa. Två kolumner är dock ett bra sätt att bli snyggare och förbli läsbara. Starta ett nytt dokument. Eller om du ...

Hur man gör mellanslag mellan stycken i Word 2010 - dummies

Hur man gör mellanslag mellan stycken i Word 2010 - dummies

När man skriver i Word 2010, du don Du måste inte trycka på Enter två gånger för att lägga till extra mellanrum mellan punkterna. Word kan lägga till det här rummet automatiskt:

Redaktörens val

Outlook 2013 Adressböcker - dummies

Outlook 2013 Adressböcker - dummies

Outlook 2013 använder fortfarande flera olika Adressböcker som verkligen ingår i Microsoft Exchange Server. Adressböckerna har flera separata, oberoende listor över namn och e-postadresser - det är ganska förvirrande. Microsoft förenklade problemet med att hantera adressböcker i Outlook 2002 och senare versioner, men det hjälper inte om du använder ...

Outlook 2016 s Kontakter Hem Tab - dummies

Outlook 2016 s Kontakter Hem Tab - dummies

Outlook 2016s Kontakter är mer än bara en lista med namn och e-postadresser. Du kan utnyttja fliken Kontakter hem i Outlook 2016-bandet för att skapa nya kontakter, för att ordna hur du visar kontakterna du har, eller för att skapa e-postmeddelanden eller sammanslagningsdokument. Följande bild visar ...

Outlook Web Access - dummies

Outlook Web Access - dummies

Outlook Web Access är en del av ett program som heter Microsoft Exchange, vilket många stora och icke- så stora organisationer kör till avancerade Outlook-funktioner som offentliga mappar, delade kalendrar och tilldelade uppgifter. Inte alla företag som använder Microsoft Exchange erbjuder Outlook Web Access, men om du gör det kan du logga in på Outlook från nästan ...

Redaktörens val

Polering Ditt utvecklingsverktyg för kakaoprogrammering - dummies

Polering Ditt utvecklingsverktyg för kakaoprogrammering - dummies

Kakao är en typ av programmering som du kan utföra med Apples Utvecklarverktyg. Kakao är en samling verktyg och bibliotek som låter dig få ut det mesta av Mac OS X-programmeringen. Många funktioner gör Cocoa bra, bland annat följande: Modulär objektorienterad design Användning av ramar Visual interface design Varför program med ...

Snabba typer - dummies

Snabba typer - dummies

Swifts hantering av typer liknar andra språk, men varje språk har olika inriktningar och regler. I allmänhet har dessa regler att göra med de sätt som skrivs måste genomföras i fall där det finns tvetydighet. Hur mycket kostar språket (eller dess kompilator eller runtime bibliotek) för att säkerställa typkompatibilitet? Swift's approach ...

Klasserna Anatomi av en Swift Class - dummies

Klasserna Anatomi av en Swift Class - dummies

ÄR hjärtat i något objektorienterat programmeringsspråk. Till skillnad från klasser i mål-C och några andra språk behöver Swifts klasser ingen rubrikdeklaration. I stället får du hela klassen (eller struktur eller uppräkning) definitionen i ett format som detta: klass MyClass {var storedNumber: Int = 0 init (myNumber storedNumber: Int) {self. storedNumber = storedNumber ...