it-swarm-eu.dev

Jaký je rozdíl mezi „záznamem“ a „řádkem“ na serveru SQL?

Došlo k poněkud neškodné otázce ohledně přidání dat a časů v SQL Server , která spustila poněkud fascinující taxonomickou debatu.

Jak tedy rozlišujeme mezi těmito souvisejícími pojmy a jak je správně používáme?

Řádek

Záznam

59
swasheck

Chcete-li citovat Joe Celko (nejen najdete tento odkaz na celém webu a v jeho vstup na Wikipedii , ale na některých trzích ho dokonce uvidíte na trička):

Řádky nejsou záznamy.

Spousta lidí ho upozorňuje na pedantského škubání, který ráda skromně a verbálně zneužívá nováčky, a já to přiznávám. Ale také jsem se s ním osobně setkal - dokonce jsem s ním sdílel jídlo - a nemohu vám říct, jak se jeho skutečná osobnost liší od jeho online fronty. Dokonce jsem ho jednou chytil, když volal záznamy z řad, a byl velmi rozpačitý ( celý příběh zde ).

I actually wore this shirt to the PASS conference in Grapevine, Texas, in 2006

V každém případě řekněte, co budete chtít o online charakteru toho chlapa, ale on napsal standard a skutečnost, že taková autorita diktuje, že existuje vyznamenání by vám mělo něco říct. A stejně jako se krčí, když někdo volá řádek, tak to dělá i řada mých kolegů - kteří jsou také experty na svět SQL Server. A ti z nás v tom táboře věří, že má pravdu.

Například Itzik Ben-Gan, zřejmý guru serveru SQL. Zde je citace z první lekce v jeho Training Kit (zkouška 70-461): Dotaz Microsoft SQL Server 2012 :

Jako příklad nesprávných výrazů v T-SQL lidé často používají pojmy „pole“ a „záznam“, aby odkazovali na to, co T-SQL nazývá „sloupec“ a „řádek“. Pole a záznamy jsou fyzické. Pole jsou v uživatelských rozhraních v klientských aplikacích a záznamy jsou v souborech a kurzorech. Tabulky jsou logické a mají logické řádky a sloupce.

A s vědomím Itzika, pokud mu pošlete e-mail nebo ho zašlete na konferenci, s radostí vám to samé řekne. Pokud označíte řádek záznamem, podle jeho názoru terminologii nepoužíváte správně.

Nyní, když jste průmysl plný lidí všeho druhu, pravděpodobně najdete materiál (jako jsou články o cílových technologiích zveřejněné v jiné odpovědi), které se zdají velmi jemně rozlišovat mezi těmito dvěma, a najdete mnoho lidí v tomto odvětví Považujte je za stejné (vím několik lidí z Microsoftu a dalších lidí, jako je Brent Ozar, kteří to vždycky nazývají nahrávkou). To je nečiní správně, je to jen jejich způsob, jak se na to dívat - považují logické a fyzické za stejné (přinejmenším v této souvislosti) a mnoho z nich si pravděpodobně myslí, že my ostatní jsme jen anální retentivy, kteří tráví příliš mnoho času na sémantiku.

Vzhledem k tomu, že žádný prodejce neřekne „bude jim říkat {záznamy | řádky}", budeme s tímto argumentem navždy jednat navždy, protože vždy bude někdo, kdo nedostane logický vs. fyzický nebo byl učen jinak, nebo pochází z prostředí Access nebo programování atd. Stejně jako někteří lidé říkají zítra a jiní říkají tomah-to, vždy bude řada lidí, kteří sahají od „jsou stejní“ po „jsou úplně odlišní“ "- a mnoho odstínů mezi nimi." To opět neopravňuje nikoho z nich, protože nikdo nemůže být konečnou autoritou v tomto. Ale v prostoru SQL Server je určitě většina.


To znamená, IMHO, když mluvíš o datech, která jsou v tabulce, nazýváš to řádek. Když provádíte vkládání, vkládáte řádek do tabulky. Při spuštění aktualizace aktualizujete řádek, který je v tabulce. A když provedete SELECT, načítáte řádky z tabulky.

Jakmile vaše aplikace drží záznam, můžete jej nazvat nahrávkou. Ale nezlobte se, když řeknete: „Vložil jsem záznam,“ a někdo vás opraví.

71
Aaron Bertrand

Microsoft má ve své organizaci na několika místech za předpokladu, že oficiální název pro tabulkové ukládání dat na tabulkový záznam (pro vymezení taxonomické definice, která slouží mému vlastnímu účelu) se nazývá „ROW“. Jako důkaz uvádím ROW_NUMBER, ROWCOUNT, ROWVERSION a vlastnost DataTable.Rows, Kde DataTable je C # reprezentace TSQL " tabulka "objekt. V tomto případě vlastnosti MSDN jako celek podporují použití row pro odkaz na kolekci dat, která je jednou položkou v tabulce. (Poznámka: Snažím se vyhnout použití "záznamu" nebo "řádku" k definování tohoto, to je otázka)

Vyjádřeno však je, že aplikace se zabývá uživatelskými „záznamy“. Něco výjimečného na záznamu, který nemusí být přímo reprezentován jedním řádkem úložiště, je skutečnost, že záznam může mít podzáznamy. Pravda, tabulka může mít související mnoho-to-one tabulky, ale ty nejsou uloženy souvisle, ale jsou uloženy logicky.

Řádek je tedy věc v tabulce a záznam je věc, se kterou vývojář pracuje při praktickém použití.

34
jcolebrand

Právě jsem prohledal dokument „Informační technologie - Databázové jazyky - SQL Část 2: Nadace (SQL/Foundation)“, který definuje standard ANSI pro SQL implementovaný všemi hlavními RDBMS.

Slovo row se používá primárně v celém dokumentu několik setkrát, jak se očekávalo.

Slovo record bylo použito pouze k popisu záznamu, který je podobný záznamu používanému v Oracle PL/SQL (konkrétně popisující datové typy záznamů ADA). 6 zmínek v dokumentu.

Myslím, že to objasňuje tuto otázku a odpovídá na různé argumenty na obou stranách.


Další informace

Z kopie (návrh verze nejnovějšího volně dostupného) standardu SQL, který najdete na wiscorp.com (stránka SQL Standards má několik dalších starších verzí a revizí).

Hledání 7IWD2-02-Foundation-2011-12.pdf, s datem 2011-12-21 odhalí, že se objeví slovo řádek 2277krát v dokumentu, zatímco slovo záznam se objeví pouze 21krát, buď jako sloveso „záznam“, nebo v některých dodatcích na konci, ve specifikacích korešpondování datových typů pro datové typy SQL a hostitelský jazyk typy (Ada, Pascal).

Stejný dokument má navíc na stránce 57 (důrazový důl):

4.15.1 Úvod do tabulek

Tento článek je upraven v článku 4.10.1 „Úvod do tabulek“ v ISO/IEC 9075-9.

Tabulka je kolekce nula nebo více řádků, kde každý řádek je posloupnost jedné nebo více hodnot sloupců. Nejkonkrétnějším typem řádek je typ řádku. Každý řádek dané tabulky má stejný typ řádku, který se nazývá typ řádku této tabulky. Hodnota i-tého pole každého řádek v tabulce je hodnota i-tého sloupce tohoto řádek v tabulce. Řádek je nejmenší jednotka dat, která lze vložit do tabulky a smazat z tabulky.

Stupeň tabulky a stupeň každého z jejích řádků je počet sloupců této tabulky. Počet řádků v tabulce je její mohutnost. Tabulka, jejíž mohutnost je 0 (nula), je označena jako prázdná.

tabulka je buď základní tabulka, odvozená tabulka, nebo přechodná tabulka.


Pokud jde o DBMS, které používají SQL, postupujte takto:

Řádky nejsou záznamy, pole nejsou sloupce, tabulky nejsou soubory!

31
Philᵀᴹ

Protože relační databáze se zřídka používají izolovaně, aby nedošlo k záměně mezi jinými částmi systémů, vždy odkazuji na tabulky, řádky a sloupce. V klientských aplikacích máme obvykle jiné konstrukty, včetně datareaderů, datasetů, datarowů, datových souborů atd. - například "field" se často používá pro zadávání dat na obrazovce a Pascal má datový typ Record, který je podobný struktuře v C .

Někdy při návrhu systému může být myšlenka „záznamu“ použita jako něco širšího než jeden řádek. Může to být řádek a jeho historie. Stejně jako když hovoříme o odstraněném řádku, můžeme znamenat řádek, který je jednoduše označen jako odstraněný sloupcem nebo „přesunut“ do odstraněné tabulky (a ne jednoduše absence řádku, který by neexistoval) je poměrně obtížný připevnit). Tam více rozmanité použití termínu záznam.

Tabulky, řádky a sloupce jsou obecně přijímanou terminologií pro odkazování na tyto entity v relačních databázích, včetně článků a prací podle Codd a Date, a většina odborníků na databáze preferuje tuto terminologii, protože je jednoznačnější.

Obvykle neexistuje dvojznačnost, když člověk mluví o řádcích a sloupcích - ostatní lidé chápou, že mluvíte o fyzickém návrhu základní databáze a ne o jakémkoli jiném druhu artefaktů z logického návrhu před fyzickým návrhem nebo později vznikajícími entitami systému, jako jsou pole na obrazovka.

14
Cade Roux

Jazyk se neustále vyvíjí. Před několika desítkami let gramotní lidé používali „indexy“ namísto jednodušších „indexů“. Když jsme přešli na „indexy“, eliminovali jsme zbytečné komplikace a učinili jazyk užitečnějším. Potřeba zapamatovat si množné číslo pro „index“ byla čistě režijní - nijak nám to nepomohlo komunikovat. Nedělejte chybu, bývaly gramatiky nacisté, kteří rádi opravovali ty, kteří přešli na „indexy“. Gramatika nacistů samozřejmě ztratila. Tímto způsobem břitva Occam eliminuje zbytečné detaily, pokud je celá věc dostatečně relevantní.

Vezměme si to tedy snadno - poznání rozdílu mezi řádky a záznamy nepřispívá k naší schopnosti vyvíjet a udržovat databáze absolutně nic. Mnoho vynikajících profesionálů používá řádky a záznamy zaměnitelně, ale vyvíjí úžasné systémy. Jako takový by měl britský strojek Occam nakonec tento rozdíl eliminovat a další generace se bude muset naučit o jednu méně zbytečnou skutečnost. Pokud je samozřejmě SQL v té době stále relevantní.

9
A-K

Přestože je vaše otázka již zodpovězena velmi dobře. Chtěl bych také přidat své body. Možná bude pro vás užitečné až do určité míry. Také moje odpověď není specifická pro SQL Server

Tato slova se používají zaměnitelně.

 1          2         3              4 
--------------------------------------------------------------------
Row    =  Record  =  Tuple        =  Entity 

Column =  Field   =  Attribute    =  Attribute

table  =  File    =  Relation     =  Entity Types(or Entity Set)
  • 4 terminologie je dobré použít, když se učíme ER-moduly
  • 3 použít při relačním modelu
  • 2 obecná scéna, DataBase books start with these terminology protože jsou běžně používány lidmi v reálném životě, také v souborovém systému.

Record je základní jednotka v úložném systému, která má implicitní význam. V DBMS slovo record v kapitole popisuje, jak databázové tabulky ukládají na diskové bloky. V DBMS a record-oriented file-system je systém souborů, ve kterém jsou soubory ukládány jako kolekce záznamů.

9
Grijesh Chauhan

Citace knihy C.J. Date "Úvod do databázových systémů" "Řádky takové tabulky lze považovat za záznamy souboru ..."

Takže pro databáze je to Row.

5
Andrew Peterson

Krátká odpověď :

  • Záznam je část uložených (nebo shromážděných) dat.
  • Řádek je záznam uložený lineárně.
  • Pokud je to možné, použijte konkrétnější termín.

Poznámka: tabulky ukládají záznamy lineárně a dotazy vracejí výsledky lineárně

Podpora :

Další definice z celého webu:

  • SQL "řádek" ( 1 , 2 )
  • SQL "záznam" ( 1 , 2 )
  • "záznam" ( 1 , 2 , , 4 )
  • "řádek" ( 1 , viz také 2 , , 4 )
  • Řádek vs záznam na StackOverflow ( 1 , 2 )

Je pozoruhodné, že definice SQL se obecně řídí anglickou definicí.

Pokud máte definici, o které si myslíte, že by zde měla být, přidejte ji do komentářů.
Zajímají mě zejména definice z SQL standardu nebo dokumentace implementace.

Citace byla vyvolána "Řádky nejsou záznamy." Vypadá to z kontextu, zdá se, že by to odporovalo mým předchozím tvrzením (a tvrzením mnoha profesionálů z databází). Ale pokud si přečtete celý příspěvek ( 1 Vyhledat citát) od Joe Celko (aka - CELKO--), je jasné, že Joe Celko se pokouší napravit mylnou představu jednotlivce, který Joe Celko věří, že vycházejí z "... pozadí osoby ve zpracování dat s tradičními systémy souborů ...". Stručně řečeno, Joe Celko říká, že řádky SQL nefungují stejně jako záznamy v jiných systémech. Joe Celko netvrdí právo/oprávnění definovat pojem, snaží se objasnit zmeškané porozumění způsobené nesprávným uplatňováním principů jednoho modelu úložiště na jiný.

4
Trisped