Hvad er atomforhold i første normale form

Jeg har læst definitionen af 1NF, som er “Hvis hver attribut for relation er atomisk”. Fortæl mig, hvad der er Atomic.

Kommentarer

Svar

1NF kræver, at hver attributposition i hver tuple i hver relation indeholder en enkelt værdi af den passende type . Typerne kan være vilkårligt komplekse. Faktisk kan typerne være relationer. (CJ Dates bog Database i dybden: relationsteori for udøvere behandler dette emne på en måde, som “er ret let at forstå.)

” Atomic “har aldrig rigtig betydet “udelelig”, hvorfor dette udtryk endelig falder ud af favør. Løst sagt betyder “atom”, at hvis en værdi har komponentdele, ignorerer dbms enten eksistensen af disse dele, eller det giver funktioner til at manipulere dem. F.eks. Har en tidsstempelværdi disse dele.

  • År
  • Måned
  • Dag
  • Timer
  • Protokoller
  • Sekunder
  • Millisekunder

Den slags værdi er selvfølgelig delelig, og alle databasestyringssystemer har funktioner til at manipulere disse dele. De giver også en måde at vælge et tidsstempel som en enkelt værdi. (Hvilket det selvfølgelig er.)

Svar

“Atomic” refererer til Codds oprindelige forestilling fra 1969 om, at hver attribut i hver tuple inden for en relation skal bestå af en enkelt værdi og ikke tillade strukturer med flere værdier af den art, der understøttes i databaser som CODASYL-modellen.

I moderne SQL DBMSer er atomicitet ikke et problem. SQL-tabeller tillader ikke kolonner med flere værdier, og værdier er altid “atomare”.

Kommentarer

  • Teknisk sandt, men SQL-tabeller tillader store strenge som værdier , som er et smuthul i praksis. Et strengfelt, der indeholder flere komma-separate decimaltal, ASCII-datoer osv., Ser bestemt ud til at krænke hensigten med atomicitet, uanset om det følger bogstavet eller ej …

Svar

Atomisk betyder data, som ikke kan opdeles yderligere.

Atomicitetsregel:

  • regel 1: en kolonne med atomdata kan ikke have flere værdier af samme datatype i den samme kolonne.
  • regel2: en tabel med atomdata kan ikke have flere kolonner med samme datatype.

Ligesom kolonnen med fuldt navn kan ikke sige, at den kunne være atomisk, fordi den kan opdeles yderligere i efternavn, fornavn. En kolonne med interesse kunne også opdeles yderligere, så en kolonne, der kan ” t opdeles er kendt som atomisk.

Svar

Det betyder, at nøglen ikke kan nedbrydes. Lad os sige, at du har en tabel med tre kolonner, fornavn, efternavn og telefonnummer. Du erklærer en sammensat primær nøgle til (fornavn, efternavn). Den primære nøgle er ikke atomisk, fordi den faktisk er sammensat af to kolonner. Lad os nu sige, at du ændrer din tabel til to kolonner, fuldnavn og telefonnummer med en primær nøgle på fuldnavn. Er nøglen nu atomær? Nej, for i din ansøgning kan du opdele det i fornavn og efternavn stadig på pladsen. Lad os nu lave vores tabel-id, fuldnavn og telefonnummer, primær nøgle på id (som er et heltal). Det er atomisk, fordi heltalet ikke kan nedbrydes meningsfuldt.

Kommentarer

  • dit eksempel begynder dog med statamentet om, at atomicitet ” betyder, at nøglen ikke kan nedbrydes “. At ‘ ikke er hvad det betyder. Det betyder attribuites består af en enkelt værdi. Der er intet ” ikke-atomisk ” om en nøgle, der består af flere attributter.

Svar

Codd ser oprindeligt ud til at have betydet, at ingen værdi i sig selv er et sæt. Dette er et nyttigt udgangspunkt, men “atomisk” har ingen ontologisk betydning, når det kommer til databaser (noget CJ Date er rigtigt Codd forsøgte at formalisere definitionen som noget, der ikke kunne nedbrydes yderligere uden for specifikationen ial databasefunktioner (dvs. et tidsstempel er atomært, fordi udtrækning af året er en særlig databaseoperation). Med andre ord, hvis databasen kan bryde ud underværdier, er det ok. Men du skal ikke have sæt (uordnede lister) eller objekter, der kræver applikationslogik for at bryde sammen.

Over tid og kæmper med dette problem i operationelle miljøer vil jeg foreslå en mellemdefinition af atomicitet, en strengere end Codd og uden kaninhullet, som Date diskuterer:

En værdi er atomær med henblik på den første normale form, hvis og kun hvis:

  1. Værdien er ikke et sæt (ja, Jeg ved, at Dato er uenig) og
  2. Der er ingen referencer til udenlandske nøgler til nogen underdel af feltet.

Især kan repræsentationen af en værdi ikke bestemme dens atomicitet. Repræsentation af en IP-adresse som “10.0.0.1” vs ARRAY [10,0,0,1] vs 167772161 betyder ikke noget for 1NF-analyse, da alle tre henviser til den samme atomværdi.

Især fælles (og nogle gange nyttigt!) 1NF-overtrædelser vedrørende atomicitet inkluderer:

  1. Lagring af en række tags i et blogindlæg eller en kommentar.
  2. Lagring af tabeller i tabeller, hvor den indre tabel har et referencemæssigt integritetskrav til et andet forhold andetsteds.

Disse problemer genererer mere eller mindre de samme dataafvigelser.

Svar

Overvej et sted på Jorden. Jeg kan finde den med (længdegrad, breddegrad) par eller med HTM-koden (hierarkisk trekantnet). Da de begge måler de samme data. Dette er en fysisk kendsgerning, som vi kan måle med en mobiltelefon; det oversætter et gitternummer til [længdegrad, breddegrad] for dig), de skal begge være enten atomare eller sammensatte i din model.

Forveks ikke skalaen, der bruges til måling og notation, der bruges til at vise data med dataenes art.

Kommentarer

  • Jeg redigerede dette indlæg for et par stavefejl. Jeg tror ikke ‘ at denne bruger er den virkelige Joe Celko, men jeg søgte efterligning på meta.stackexchange.com og fandt denne tråd . Se svarene fra herrer Atwood og Spolsky, grundlæggerne af stackexchange. Det ser ud til at være tilladt.

Svar

Atomnøgle er den slags primærnøgle, som ikke kan nedbrydes. Som betyder, at denne nøgle ikke er delt yderligere, ligesom Student_ID, Employee_ID.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *