Hva er atomrelasjon i første normale form

Jeg har lest definisjonen av 1NF som er «Hvis hvert attributt for forhold er atomisk». Fortell meg hva som er Atomic.

Kommentarer

Svar

1NF krever at hver attributtposisjon i hver tuple i hver relasjon inneholder en enkelt verdi av riktig type . Typene kan være vilkårlig komplekse. Faktisk kan typene være relasjoner. (CJ Dates bok Database i dybden: relasjonsteori for utøvere behandler dette problemet på en måte som «er ganske lett å forstå.)

» Atomic «har egentlig aldri betydd «udelelig», og det er derfor dette begrepet endelig faller ut av favør. Løst sagt betyr «atom» at hvis en verdi har komponentdeler, ignorerer dbms enten eksistensen av disse delene, eller det gir funksjoner for å manipulere dem. For eksempel har en tidsstempelverdi disse delene.

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

Den typen verdi er åpenbart delelig, og alle databasestyringssystemer har funksjoner for å manipulere disse delene. De gir også en måte å velge et tidsstempel som en enkelt verdi. (Som det selvfølgelig er.)

Svar

«Atomic» refererer til Codd sin opprinnelige forestilling fra 1969 om at hvert attributt i hver tuple i en relasjon skal bestå av en enkelt verdi og ikke tillate strukturer med flere verdier av den typen som støttes i databaser som CODASYL-modellen.

I moderne SQL DBMS er atomicitet ikke et problem. SQL-tabeller tillater ikke kolonner med flere verdier, og verdiene er alltid «atomare».

Kommentarer

  • Teknisk sant, men SQL-tabeller tillater store strenger som verdier , som er et smutthull i praksis. Et strengfelt som inneholder flere komma-separate desimaltall, ASCII-datoer osv., Ser absolutt ut til å bryte intensjonen med atomicitet, enten det følger bokstaven eller ikke …

Svar

Atomisk betyr data som ikke kan deles videre.

Atomitetsregel:

  • regel 1: en kolonne med atomdata kan ikke ha flere verdier av samme type data i samme kolonne.
  • regel2: en tabell med atomdata kan ikke ha flere kolonner med samme datatype.

Som kolonnen med fullnavn kan ikke si at den kan være atomisk fordi den kan deles inn i etternavn, fornavn. En kolonne med interesse kan også deles videre, så en kolonne som kan » t deles er kjent som atom.

Svar

Det betyr at nøkkelen ikke kan spaltes. La oss si at du har en tabell med tre kolonner, fornavn, etternavn og telefonnummer. Du erklærer en sammensatt primærnøkkel på (fornavn, etternavn). Den primære nøkkelen er ikke atomisk fordi den faktisk er sammensatt av to kolonner. La oss si at du endrer tabellen til to kolonner, fullnavn og telefonnummer, med en primærnøkkel på fullnavn. Er nøkkelen nå atomisk? Nei, for i søknaden din kan du dele den i fornavn og etternavn fortsatt, på plassen. La oss nå lage vårt bord-ID, fullnavn og telefonnummer, primærnøkkel på id (som er et heltall). Det er atomisk, fordi heltallet ikke kan dekomponeres meningsfullt.

Kommentarer

  • eksemplet ditt begynner imidlertid med statamentet om at atomicitet » betyr at nøkkelen ikke kan spaltes «. At ‘ ikke er hva det betyr. Det betyr at attribuites består av en enkelt verdi. Det er ingenting » ikke-atomisk » om en nøkkel som består av flere attributter.

Svar

Codd ser ut til å ha betydd at ingen verdi i seg selv er et sett. Dette er et nyttig utgangspunkt, men «atom» har ingen ontologisk betydning når det gjelder databaser (noe CJ Date er riktig å påpeke). Codd prøvde å formalisere definisjonen som noe som ikke kunne nedbrytes ytterligere utenfor spesifikasjonen ial databaseoperasjoner (dvs. et tidsstempel er atomisk fordi å trekke ut året er en spesiell databaseoperasjon). Med andre ord, hvis databasen kan bryte ut underverdier, er det ok. Men du bør ikke ha sett (uordnede lister) eller objekter som krever applikasjonslogikk for å brytes ned.

Over tid og sliter med dette problemet i operasjonsmiljøer, vil jeg foreslå en mellomdefinisjon av atomicitet, en strengere enn Codd og uten kaninhullet som Date diskuterer:

En verdi er atomisk for den første normale formen hvis og bare hvis:

  1. Verdien er ikke et sett (ja, Jeg vet at Date er uenig) og
  2. Det er ingen utenlandske nøkkelhenvisninger til noen underdel av feltet.

Spesielt kan ikke representasjonen av en verdi bestemme dens atomisitet. Å representere en IP-adresse som «10.0.0.1» vs ARRAY [10,0,0,1] mot 167772161, betyr ikke noe for 1NF-analyse siden alle tre refererer til den samme atomverdien.

Spesielt vanlig (og noen ganger nyttig!) 1NF-brudd angående atomicitet inkluderer:

  1. Lagring av en rekke koder i et blogginnlegg eller en kommentar.
  2. Lagring av tabeller i tabeller, der den indre tabellen har et referansemessig integritetskrav mot et annet forhold andre steder.

Disse problemene genererer mer eller mindre de samme dataavvikene.

Svar

Vurder et sted på jorden. Jeg finner den med (lengdegrad, breddegrad) par eller med HTM-koden (Hierarchical Triangular Mesh). Siden de begge måler de samme dataene. Dette er et fysisk faktum, som vi kan måle med en mobiltelefon; det oversetter et rutenummer til [lengdegrad, breddegrad] for deg), de må begge være enten atomare eller sammensatte i din modell.

Ikke forveksle skalaen som brukes til måling og notasjon som brukes til å vise data med dataenes art.

Kommentarer

  • Jeg redigerte dette innlegget for et par skrivefeil. Jeg tror ikke ‘ at denne brukeren er den virkelige Joe Celko, men jeg søkte etterligning på meta.stackexchange.com og fant denne tråd . Sjekk svarene fra herrene Atwood og Spolsky, grunnleggerne av stackexchange. Det ser ut til å være tillatt.

Svar

Atomnøkkel er den typen primærnøkkel som ikke kan spaltes. Som betyr at denne nøkkelen ikke er delt videre, som Student_ID, Employee_ID.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *