Mi az atomkapcsolat az első normális formában

Elolvastam az 1NF definícióját, amely a következő: “Ha a reláció minden attribútuma atomikus”. Kérjük, mondja el, mi az Atomic.

Megjegyzések

Válasz

Az 1NF megköveteli, hogy minden relációban lévő minden egyes duplán minden attribútum pozíció tartalmazzon egyetlen megfelelő típusú értéket . A típusok tetszőlegesen összetettek lehetnek. Valójában a típusok lehetnek kapcsolatok. (CJ Date könyve Adatbázis mélyrehatóan: a relációelmélet a gyakorlók számára úgy kezeli ezt a kérdést, hogy “elég könnyen érthető legyen.”

Az “Atomic” még soha nem jelentette “oszthatatlan”, ezért ez a kifejezés végül kiesik a szívességből. Lazán szólva az “atom” azt jelenti, hogy ha egy értéknek vannak alkatrészei, akkor a dbms vagy figyelmen kívül hagyja ezeknek a részeknek a létezését, vagy funkciókat biztosít azok manipulálására. Például egy időbélyeg-értéknek vannak ezek a részei.

  • Év
  • Nap
  • Óra
  • Percek
  • Másodpercek
  • Milliszekundumok

Ez a fajta érték nyilvánvalóan osztható, és az összes adatbázis-kezelő rendszer funkciókat kínál az említett részek manipulálására. Ezenkívül lehetőséget kínálnak az időbélyeg kiválasztására egyetlen értékként. . A reláció minden egyes duplájának minden attribútumának egyetlen értékből kell állnia, és nem engedhetik meg az olyan adatbázisok által támogatott többértékű struktúrákat, mint a CODASYL modell.

A modern SQL DBMS-ekben az atomitás nem igazán kérdés. Az SQL táblák nem engedélyezik a többértékű oszlopokat, és az értékek mindig “atomikusak”.

Megjegyzések

  • Technikailag igaz, de az SQL táblák nagy karakterláncokat engednek meg értékként , ami a gyakorlatban kiskaput jelent. Az a karakterláncmező, amely több vesszővel elválasztott tizedes egész számot, ASCII dátumot stb. Tartalmaz, minden bizonnyal sértené az atomitás szándékát, függetlenül attól, hogy a betűt követi-e …

Válasz

Az atom olyan adatokat jelent, amelyek nem oszthatók tovább.

Az atomitás szabálya:

  • 1. szabály: az atomadatokat tartalmazó oszlop “nem tartalmazhat több azonos típusú adatot ugyanabban az oszlopban.
  • 2. szabály: egy atomadatokat tartalmazó táblázat” nem tartalmazhat több oszlopot ugyanazzal az adattípussal.

A teljes név oszlophoz hasonlóan nem lehet azt mondani, hogy atomi lehet, mert tovább osztható vezetéknévre, utónévre. Egy érdeklődésre számot tartó oszlopot tovább lehet osztani, tehát egy olyan oszlopot, amely képes ” A felosztani atom néven ismert.

Válasz

Ez azt jelenti, hogy a kulcs nem bontható le. Mondjuk, hogy van egy táblázata három oszloppal, utónévvel, vezetéknévvel és telefonszámmal. Az összetett elsődleges kulcsot itt deklarálja (utónév, vezetéknév). Ez az elsődleges kulcs nem atomi, mert valójában két oszlopból áll. Most mondjuk azt, hogy a táblázatot két oszlopra, teljes_név és telefonszámra módosítja, elsődleges kulccsal a teljes_nevet. A kulcs most atomi? Nem, mert az alkalmazásban az elő- és vezetéknévre oszthatja, még mindig a szóközön. Most állítsuk be a táblánk azonosítóját, a teljes_nevet és a telefonszámot, az elsődleges kulcsot az azonosítón (amely egész szám). Ez atomi, mert az egész számot nem lehet értelmesen lebontani.

Megjegyzések

  • példád azonban azzal a megfogalmazással kezdődik, hogy az atomicitás ” azt jelenti, hogy a kulcs nem bontható le “. Ez ‘ nem az, amit jelent. Ez azt jelenti, hogy az attribútumok egyetlen értékből állnak. Nincs semmi ” nem atomi ” több attribútumból álló kulcsról.

Válasz

Úgy tűnik, hogy a Codd eredetileg azt jelentette, hogy az érték önmagában nem halmaz. Ez hasznos kiindulópont, de az “atom” -nak nincs ontológiai jelentése, amikor adatbázisokról van szó (valami, ami a CJ dátumnak megfelelő) rámutatni) .Codd megpróbálta formalizálni a meghatározást olyasvalamiként, amelyet a specifikáción kívül nem lehet tovább lebontani iális adatbázis-műveletek (azaz az időbélyeg atomi, mert az év kivonása speciális adatbázis-művelet). Más szóval, ha az adatbázis képes kibontani részértékeket, akkor ez rendben van. De nem rendelkezhet olyan halmazokkal (rendezetlen listákkal) vagy objektumokkal, amelyek lebontásához alkalmazáslogika szükséges.

Idővel és ezzel a problémával küzdve működési környezetekben javaslom az atomitás közbenső meghatározását, amely szigorúbb, mint a Codd. és a nyúllyuk nélkül, amelyet a Dátum tárgyal:

Az érték akkor és csak akkor atom atom az első normál forma szempontjából, ha:

  1. Az érték nem halmaz (igen, Tudom, hogy a Date nem ért egyet) és
  2. Nincs idegen kulcs hivatkozás a mező egyetlen részére sem.

Különösen az érték ábrázolása nem tudja meghatározni annak atomosságát. Az IP-cím “10.0.0.1” vagy ARRAY [10,0,0,1] és 167772161 közötti ábrázolása nem számít az 1NF elemzés szempontjából, mivel mindhárom azonos atomértékre utal.

Különösen gyakori (és néha hasznos!) Az 1NF atomizmussal kapcsolatos megsértései a következők:

  1. Címkesorozat tárolása blogbejegyzéshez vagy megjegyzéshez.
  2. Táblázatok tárolása táblákon belül, ahol a belső táblázat referenciális integritási követelménye van egy másik relációval szemben.

Ezek a problémák többé-kevésbé ugyanazokat az anomáliákat generálják.

Válasz

Vegyünk egy helyet a Földön. Megtalálhatom (hosszúsági és szélességi) párokkal vagy a HTM (Hierarchical Triangular Mesh) kóddal. Mivel mindkettő ugyanazt az adatot méri. Ez egy fizikai tény, amelyet mobiltelefonnal mérhetünk; rácsszámot lefordít számodra [hosszúság, szélesség]), mindkettőjüknek atomnak vagy vegyesnek kell lennie a modelljében.

Ne tévessze össze a méréshez használt skálát és az adatok megjelenítéséhez használt skálát a az adatok jellege.

Megjegyzések

  • Pár elírási hiba miatt szerkesztettem ezt a bejegyzést. Nem hiszem, hogy ez a felhasználó az igazi Joe Celko, de a meta.stackexchange.com címen utána kerestem a megszemélyesítést, és megtaláltam ezt az szál . Nézze meg Atwood és Spolsky urak, a stackexchange alapítóinak válaszait. Úgy tűnik, hogy megengedett.

Válasz

Az atomkulcs az a fajta Elsődleges kulcs, amely nem bontható le. azt jelenti, hogy ez a kulcs nem oszlik tovább, például a Student_ID, Employee_ID.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük