Ik heb de definitie van 1NF gelezen die is: “Als elk attribuut van een relatie atomair is”. Vertel me alsjeblieft wat Atomic is.
Reacties
- Relevant .
Answer
1NF vereist dat elke attribuutpositie in elk tupel in elke relatie een enkele waarde van het juiste type bevat . De typen kunnen willekeurig complex zijn. In feite kunnen de typen relaties zijn. (CJ Date s boek Database in depth: relation theory for practitioners behandelt deze kwestie op een manier die “vrij gemakkelijk te begrijpen is.)
” Atomic “heeft nooit echt betekend “ondeelbaar”, waardoor die term eindelijk uit de gratie raakt. Losjes gezegd betekent “atomisch” dat als een waarde samenstellende delen heeft, de dbms ofwel het bestaan van die delen negeert, ofwel functies biedt om ze te manipuleren. Een tijdstempelwaarde heeft bijvoorbeeld deze delen.
- Jaar
- Maand
- Dag
- Uren
- Minuten
- Seconden
- Milliseconden
Dat soort waarde is duidelijk deelbaar, en alle databasebeheersystemen bieden functies om die onderdelen te manipuleren. Ze bieden ook een manier om een tijdstempel als een enkele waarde te selecteren. (Wat het natuurlijk ook is.)
Answer
“Atomic” verwijst naar Codds oorspronkelijke idee uit 1969 dat elk attribuut in elke tuple binnen een relatie zou uit een enkele waarde moeten bestaan en geen structuren met meerdere waarden toestaan die worden ondersteund in databases zoals het CODASYL-model.
In moderne SQL DBMS is atomiciteit niet echt een probleem. SQL-tabellen staan geen kolommen met meerdere waarden toe en waarden zijn altijd “atomisch”.
Opmerkingen
- Technisch waar, maar SQL-tabellen staan grote reeksen als waarden toe , wat in de praktijk een maas in de wet is. Een stringveld dat meerdere komma-gescheiden decimale gehele getallen, ASCII-datums, enz. Bevat, lijkt zeker in strijd met de bedoeling van atomiciteit, of het nu op de letter volgt of niet …
Antwoord
Atomic betekent data die niet verder kan worden verdeeld.
Regel van atomiciteit:
- regel 1: een kolom met atomaire gegevens kan “niet meerdere waarden van hetzelfde type gegevens in dezelfde kolom bevatten.
- regel 2: een tabel met atomaire gegevens kan” niet meerdere kolommen met hetzelfde gegevenstype hebben.
Net als de volledige naam kan de kolom “niet zeggen dat het atomisch zou kunnen zijn, omdat het verder kan worden onderverdeeld in achternaam, voornaam. Een kolom met interesse kan ook verder worden onderverdeeld, dus een kolom die kan” t worden verdeeld staat bekend als atomisch.
Answer
Dit betekent dat de sleutel niet kan worden ontleed. Stel dat u een tabel heeft met drie kolommen, voornaam, achternaam en telefoonnummer. U declareert een samengestelde primaire sleutel op (voornaam, achternaam). Die primaire sleutel is niet atomair omdat deze in feite samengesteld uit twee kolommen. Stel nu dat u uw tabel verandert in twee kolommen, volledige_naam en telefoonnummer, met een primaire sleutel op volledige_naam. Is de sleutel nu atomair? Nee, want in uw aanvraag zou u het op de spatie kunnen splitsen in voor- en achternaam. Laten we nu onze tabel id, volledige_naam en telefoonnummer, primaire sleutel op id (wat een geheel getal is) maken. Dat is atomair, omdat het gehele getal niet zinvol kan worden ontleed.
Opmerkingen
- je voorbeeld begint echter met het statament dat atomiciteit ” betekent dat de sleutel niet kan worden ontleed “. Dat ‘ is niet wat het betekent. Het betekent dat attribuites uit één enkele waarde bestaan. Er is niets ” niet-atomair ” over een sleutel die uit meerdere attributen bestaat.
Antwoord
Codd lijkt oorspronkelijk te hebben bedoeld dat geen enkele waarde zelf een set is. Dit is een handig startpunt, maar “atomic” heeft geen ontologische betekenis als het gaat om databases (iets wat CJ Date klopt Codd probeerde de definitie te formaliseren als iets dat niet verder kon worden afgebroken buiten de specificaties ial databasebewerkingen (d.w.z. een tijdstempel is atomair omdat het extraheren van het jaar een speciale databasebewerking is). Met andere woorden, als de database subwaarden kan opsplitsen, is dat oké. Maar je zou geen sets (ongeordende lijsten) of objecten moeten hebben waarvoor applicatielogica moet worden afgebroken.
Na verloop van tijd en worstelen met dit probleem in operationele omgevingen zou ik een tussenliggende definitie van atomiciteit voorstellen, een die strenger is dan Codd en zonder het konijnenhol dat Date bespreekt:
Een waarde is atomisch voor doeleinden van de eerste normaalvorm als en alleen als:
- De waarde is geen set (ja, Ik weet dat Date het er niet mee eens is) en
- Er zijn geen verwijzingen naar externe sleutels naar een subgedeelte van het veld.
In het bijzonder kan de representatie van een waarde de atomiciteit ervan niet bepalen. Een IP-adres weergeven als “10.0.0.1” versus ARRAY [10,0,0,1] versus 167772161 maakt niet uit voor 1NF-analyse, aangezien alle drie verwijzen naar dezelfde atoomwaarde.
In het bijzonder algemeen (en soms nuttig!) 1NF-schendingen met betrekking tot atomiciteit zijn onder meer:
- Het opslaan van een reeks tags in een blogpost of opmerking.
- Het opslaan van tabellen in tabellen, waarbij de binnenste tabel heeft een referentiële integriteitsvereiste ten opzichte van een andere relatie elders.
Deze problemen genereren min of meer dezelfde gegevensanomalieën.
Antwoord
Overweeg een locatie op aarde. Ik kan het vinden met (lengtegraad, breedtegraad) paren of met de HTM-code (Hierarchical Triangular Mesh). Omdat ze allebei dezelfde gegevens meten. Dit is een fysiek feit, dat we kunnen meten met een mobiele telefoon; het vertaalt een rastergetal in [lengtegraad, breedtegraad] voor jou), ze moeten beide atomair of samengesteld zijn in je model.
Verwar de schaal die wordt gebruikt voor meting en notatie die wordt gebruikt om de gegevens weer te geven niet met de aard van de gegevens.
Reacties
- Ik heb dit bericht bewerkt vanwege een paar typefouten. Ik geloof niet dat deze gebruiker de echte Joe Celko is ‘, maar ik heb gezocht naar nabootsing van identiteit op meta.stackexchange.com en vond dit draad . Bekijk de reacties van de heren Atwood en Spolsky, de oprichters van stackexchange. Het lijkt toelaatbaar te zijn.
Antwoord
Atoomsleutel is dat soort primaire sleutel die niet kan worden ontleed. Welke betekent dat deze sleutel niet verder is onderverdeeld, zoals Student_ID, Employee_ID.