Hjem Personlig finansiering Hvordan å håndtere SQL Modification Anomalies and Normal Forms - dummies

Hvordan å håndtere SQL Modification Anomalies and Normal Forms - dummies

Video: Web Programming - Computer Science for Business Leaders 2016 2025

Video: Web Programming - Computer Science for Business Leaders 2016 2025
Anonim

En rekke problemer - kalt modifikasjonsanomalier - kan plage en database hvis du ikke strukturerer SQL database riktig. For å forhindre disse problemene kan du normalisere databasestrukturen. Normalisering innebærer generelt å dele en databastabell i to enklere tabeller.

Modifikasjonsanomalier er oppkalt fordi de genereres ved å legge til, endre til eller slette data fra en databasetabell.

Anta at firmaet ditt selger rengjøringsprodukter til husholdningen, og du belaster alle kunder samme pris for hvert produkt. SALES-bordet holder styr på alt for deg. Anta at kunde 1001 beveger seg bort og ikke lenger er kunde. Du bryr deg ikke hva han har kjøpt tidligere, fordi han ikke kommer til å kjøpe noe fra deg igjen. Du vil slette sin rad fra bordet.

Hvis du gjør det, mister du ikke bare det faktum at kunden 1001 har kjøpt vaskemiddel; du mister også det faktum at vaskemiddel koster $ 12. Denne situasjonen kalles sletting avvik. Ved å slette et faktum (at kunden 1001 kjøpte vaskemiddel), sletter du et annet faktum (dette vaskemiddel koster $ 12).

Du kan bruke det samme tabellen for å illustrere en innføringsanomali. For eksempel, anta at du vil legge til deodorant til din produktlinje til en pris på $ 2. Du kan ikke legge til disse dataene i SALES-tabellen til en kunde kjøper stikk deodorant.

Problemet med SALES-tabellen er at denne tabellen omhandler mer enn én ting: Det dekker ikke bare hvilke produkter kundene kjøper, men også hva produktene koster. For å eliminere uregelmessighetene må du dele SALES-tabellen i to tabeller, som hver omhandler bare ett tema eller en ide.

  • CUST_PURCH, som omhandler den eneste ideen om kundekjøp.

  • PROD_PRICE, som omhandler den enkle ideen om produktprising.

Du kan nå slette raden for kunde 1001 fra CUST_PURCH uten å miste at vaskemiddel koster $ 12. (Kostnaden for vaskemiddel er nå lagret i PROD_PRICE.) Du kan også legge til deodorant til PROD_PRICE om noen har kjøpt produktet. Kjøpsinformasjon lagres andre steder, i CUST_PURCH-tabellen.

Prosessen med å bryte opp et bord i flere tabeller, som hver har et enkelt tema, kalles normalisering. En normaliseringsoperasjon som løser et problem, kan ikke påvirke andre problemer.Det kan hende du må utføre flere påfølgende normaliseringsoperasjoner for å redusere hver resulterende tabell til et enkelt tema.

Hver databasetabell skal omhandle ett - og bare ett - hovedtema. Noen ganger (som du sikkert gjettet) bestemmer deg for at et bord virkelig omhandler to eller flere temaer kan være vanskelig.

Du kan klassifisere tabeller i henhold til de typer modifikasjonsanomalier som de er underlagt. I et 1970-dokument identifiserte E. F. Codd tre kilder til modifikasjonsanomalier og definerte første, andre og tredje normale former (1NF, 2NF, 3NF) som rettsmidler for disse typer anomalier. I de påfølgende årene oppdaget Codd og andre flere typer anomalier og angav nye normale former for å håndtere dem.

Den normale form for Boyce-Codd (BCNF), den fjerde normale form (4NF) og den femte normalformen (5NF) gir hver en høyere grad av beskyttelse mot modifikasjonsanomalier. Først i 1981 skrev imidlertid et papir, skrevet av Ronald Fagin, domene-nøkkelform eller DK / NF. Ved å bruke denne siste vanlige skjemaet kan du garantere at et bord er fritt for endringsforstyrrelser.

De vanlige skjemaene er nestet i den forstand at en tabell som er i 2NF automatisk også i 1NF. Tilsvarende er et bord i 3NF automatisk i 2NF, og så videre. For de fleste praktiske applikasjoner er det å sette en database i 3NF tilstrekkelig for å sikre en høy grad av integritet. For å være helt sikker på integriteten, må du sette databasen til DK / NF.

Når du normaliserer en database så mye som mulig, vil du kanskje gjøre valgte denormaliseringer for å forbedre ytelsen. Hvis du gjør det, vær oppmerksom på hvilke typer anomalier som nå kan bli mulig.

Hvordan å håndtere SQL Modification Anomalies and Normal Forms - dummies

Redaktørens valg

SMTP Hacks and How to Guard Against Them - dummies

SMTP Hacks and How to Guard Against Them - dummies

Noen hacks utnytter svakheter i Simple Mail Transfer Protocol (SMTP). Denne e-postkommunikasjonsprotokollen ble designet for funksjonalitet, ikke sikkerhet. Så, for å sikre at du har et visst nivå på sikkerhet, vil det beskytte informasjonen din. Kontooppsummering En smart måte at angriperne kan kontrollere om e-postkontoer eksisterer på en server, er ganske enkelt å tele ...

Best April Fools RFCs - dummies

Best April Fools RFCs - dummies

En RFC, som står for Request for Comments, er et dokument som publiseres med hensikten med å bli en Internett-standard. Gjennom årene har internettstandardsamfunnet blitt vant til å publisere interessante og humoristiske RFC-dokumenter på April Fool's Day. Her er noen av de beste: "ARPAWOCKY" (1. april 1973): Den ...

Spamfiltre brukt av nettverk - dummier

Spamfiltre brukt av nettverk - dummier

Antispamprogrammer bruker en rekke forskjellige teknikker for å bestemme sannsynligheten for et gitt stykke av e-post er spam. Disse teknikkene brukes av filtre, som undersøker hvert stykke e-post; hvert filter bruker en bestemt teknikk. Her er noen av de mest brukte filtertyper: Søkeordskontroll: Den mest åpenbare måten å ...

Redaktørens valg

Hvordan å minimere spam på et nettverk - dummies

Hvordan å minimere spam på et nettverk - dummies

Ingen antispamprogram er perfekt, så du må forstå og Forvent at en viss mengde søppelpost kommer til din innboks. Her er noen tips som du (og brukerne) bør huske på for å minimere mengden søppelpost som kommer gjennom uoppdaget: Ikke stol på e-post som ber om passordet ditt eller ...

Hvordan å trekke sikkerhetstestresultater sammen for rapportering - dummies

Hvordan å trekke sikkerhetstestresultater sammen for rapportering - dummies

Når du har gobs av sikkerhetstestdata - Fra skjermbilder og manuelle observasjoner du dokumentert til detaljerte rapporter generert av de ulike sårbarhetsskannerne du brukte - hva gjør du med det hele? Du må gå gjennom dokumentasjonen din med en fintandet kam og markere alle områdene som skiller seg ut. Base ...

Slik minimerer du databasesviktigheter for å unngå å få hakkede dummier

Slik minimerer du databasesviktigheter for å unngå å få hakkede dummier

Databasesystemer, for eksempel Microsoft SQL Server , MySQL og Oracle har lurket bak kulissene, men deres verdi og deres sårbarheter har endelig kommet til forkant. Ja, selv den mektige Oracle som en gang hevdet å være unhackable, er mottakelig for lignende utnytter som sin konkurranse. Med de mange regelverkskravene som styrer databasen ...

Redaktørens valg

Din LinkedIn-profil: Hvordan velge kontaktinnstillinger - dummies

Din LinkedIn-profil: Hvordan velge kontaktinnstillinger - dummies

Før du dykker rett inn og starter oppdatering av LinkedIn-profilen, stopp og tenk på hva slags profil du vil konstruere og vise til verden. Tenk spesielt på hvordan du vil bruke LinkedIn. For eksempel vil noen bare legge til i nettverket, men andre søker aktivt etter en ...

Måle suksessen til dine sosiale medier Endeavors - dummies

Måle suksessen til dine sosiale medier Endeavors - dummies

Måling av sosiale medier engasjement går langt utover tallet av venner, fans og tilhengere du har. Hvor mange venner du har, er ikke like viktig som hvor ofte dine SMB-anstrengelser fører folk til konkrete handlinger. I stedet fokuserer du på innsatsene, samhandlingene og samtalene du har med fans og tilhenger. Noen sosiale nettverk ...

Grunnleggende HTML for MySpace - dummies

Grunnleggende HTML for MySpace - dummies

Bruk HTML (HyperText Markup Language) for å endre hvordan MySpace-profilen ser ut og hva som vises på MySpace-siden. Her er noen grunnleggende HTML som du kan bruke med profilen din. (Du fyller i teksten mellom anførselstegnene.) Handling HTML for bruk Fet tekst Skriv fet skrift her Kursiv tekst Skriv kursiv tekst her ...