Co je atomová relace v první normální formě

Přečetl jsem si definici 1NF, která zní: „Pokud je každý atribut relace atomový“. Prosím, řekněte mi, co je Atomic.

Komentáře

Odpověď

1NF vyžaduje, aby každá pozice atributu v každé n-tici v každé relaci obsahovala jednu hodnotu příslušného typu . Typy mohou být libovolně složité. Ve skutečnosti mohou být typy vztahy. (Kniha CJ Date Databáze do hloubky: relační teorie pro odborníky zachází s tímto problémem způsobem, který je docela snadno pochopitelný.)

„Atomic“ ve skutečnosti nikdy neměl na mysli „nedělitelný“, a proto tento termín konečně upadá v nemilost. Volně řečeno, „atomická“ znamená, že pokud má hodnota dílčí součásti, dbms buď ignoruje existenci těchto částí, nebo poskytuje funkce pro manipulaci s nimi. Například hodnota časového razítka má tyto části.

  • Rok
  • Měsíc
  • Den
  • Hodiny
  • Minuty
  • Sekundy
  • Milisekundy

Tento druh hodnoty je zjevně dělitelný a všechny systémy pro správu databází poskytují funkce pro manipulaci s těmito částmi. Poskytují také způsob, jak vybrat časové razítko jako jednu hodnotu. (Což samozřejmě je.)

Odpověď

„Atomic“ odkazuje na Coddovu původní představu z roku 1969, že každý atribut v každé n-tici v relaci by měl sestávat z jedné hodnoty a neměl by umožňovat vícehodnotové struktury podporované v databázích, jako je model CODASYL.

V moderních SQL DBMS není atomicita opravdu problém. Tabulky SQL neumožňují sloupce s více hodnotami a hodnoty jsou vždy „atomické“.

Komentáře

  • Technicky pravdivé, ale tabulky SQL umožňují velké řetězce jako hodnoty , což je v praxi mezera. Řetězcové pole, které obsahuje několik desetinných celých čísel oddělených čárkami, data ASCII atd., By jistě vypadalo, že porušuje záměr atomicity, ať už následuje za písmenem nebo ne ….

Odpověď

Atomová znamená data, která nelze dále dělit.

Pravidlo atomicity:

  • pravidlo 1: sloupec s atomovými daty nemůže mít ve stejném sloupci několik hodnot stejného typu dat.
  • pravidlo 2: tabulka s atomickými daty nemůže mít několik sloupců se stejným datovým typem.

Stejně jako sloupec pro celé jméno nelze říci, že by mohl být atomový, protože jej lze dále rozdělit na příjmení, jméno. Sloupec se zájmem lze také rozdělit dále, takže sloupec, který může „ Rozdělit se označuje jako atomové.

Odpověď

Znamená to, že klíč nelze rozložit. Řekněme, že máte tabulku se třemi sloupci, křestním jménem, příjmením a telefonním číslem. Deklarujete složený primární klíč na (křestní jméno, příjmení). Primární klíč není atomický, protože ve skutečnosti je složený ze dvou sloupců. Nyní řekněme, že změníte tabulku na dva sloupce, full_name a phone_number, s primárním klíčem na full_name. Je klíč nyní atomový? Ne, protože ve své přihlášce byste jej mohli rozdělit na jméno a příjmení stále, na mezeru. Nyní vytvořme ID naší tabulky, celé jméno a telefonní číslo, primární klíč na ID (což je celé číslo). To je atomové, protože celé číslo nelze smysluplně rozložit.

Komentáře

  • váš příklad však začíná prohlášením, že atomicita " znamená, že klíč nelze rozložit ". To ' to není to, co to znamená. Znamená to, že atribuce se skládají z jediné hodnoty. Neexistuje nic " neanomický " o klíči skládajícím se z více atributů.

Odpovědět

Zdá se, že Codd původně znamenal, že žádná hodnota není sama množina. Toto je užitečný výchozí bod, ale „atomic“ nemá ontologický význam, pokud jde o databáze (něco, co má CJ Date pravdu Codd se pokusil formalizovat definici jako něco, co by nebylo možné dále rozložit mimo spec ial databázové operace (tj. časové razítko je atomové, protože extrahování roku je speciální databázová operace). Jinými slovy, pokud databáze dokáže rozbít podhodnoty, je to v pořádku. Ale neměli byste mít sady (neuspořádané seznamy) nebo objekty, které vyžadují rozdělení logiky aplikace.

Postupem času a potýkáním se s tímto problémem v operačním prostředí bych navrhl přechodnou definici atomicity, která je přísnější než Codd a bez králičí nory, o které Date pojednává:

Hodnota je atomická pro účely první normální formy právě tehdy, když:

  1. Hodnota není množina (ano, Vím, že Date nesouhlasí) a
  2. Neexistují žádné odkazy na cizí klíče pro žádnou dílčí část pole.

Reprezentace hodnoty zejména nemůže určit její atomicitu. Zastoupení adresy IP jako „10.0.0.1“ vs ARRAY [10,0,0,1] vs 167772161 nezáleží na analýze 1NF, protože všechny tři odkazují na stejnou atomovou hodnotu.

Zejména běžné (A někdy užitečné!) Porušení 1NF týkající se atomicity zahrnuje:

  1. Ukládání řady značek do příspěvku nebo komentáře na blogu.
  2. Ukládání tabulek do tabulek, kde je vnitřní tabulka má požadavek referenční integrity proti jinému vztahu jinde.

Tyto problémy generují víceméně stejné anomálie dat.

Odpovědět

Zvažte polohu na Zemi. Najdu ji s páry (zeměpisná délka, šířka) nebo s kódem HTM (Hierarchical Triangular Mesh). Protože oba měří stejná data. Toto je fyzická skutečnost, kterou můžeme měřit pomocí mobilního telefonu; převádí číslo mřížky na [zeměpisná délka, zeměpisná šířka], musí být oba ve vašem modelu atomové nebo složené.

Nezaměňujte měřítko použité pro měření a notaci používanou k zobrazení dat s povaha dat.

Komentáře

  • Tento příspěvek jsem upravil pro několik překlepů. Nevěřím ', že tento uživatel je skutečný Joe Celko, ale hledal jsem zosobnění na meta.stackexchange.com a našel jsem vlákno . Podívejte se na odpovědi pánů Atwooda a Spolského, zakladatelů stackexchange. Zdá se, že je to přípustné.

Odpověď

Atomový klíč je ten druh primárního klíče, který nelze rozložit.který znamená, že tento klíč není dále rozdělen, jako Student_ID, Employee_ID.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *