Pytanie o dodanie dat i godzin w SQL Server było dość nieszkodliwe, co zapoczątkowało dość fascynującą debatę taksonomiczną.
Jak zatem rozróżnić te powiązane terminy i jak je właściwie wykorzystywać?
Rząd
Rekord
sql-server
terminology
row
record
swasheck
źródło
źródło
Odpowiedzi:
Cytując Joe Celko (nie tylko można znaleźć ten odnośnik w Internecie i we wpisie w Wikipedii , ale można go nawet zobaczyć na koszulkach na niektórych konferencjach):
Wiele osób wskazuje go jako pedantycznego palanta, który lubi pokorę i słowne znęcanie się nad nowicjuszami, i przyznam, że tak właśnie się spotyka. Ale spotkałem go również osobiście - nawet z nim zjadłem - i nie mogę powiedzieć, jak różni się jego prawdziwa osobowość od jego frontu online. Raz nawet przyłapałem go na wzywaniu rekordów wierszy, a on był bardzo zawstydzony ( tutaj pełna historia ).
W każdym razie powiedz co zrobisz o postaci online faceta, ale on napisał standard , a fakt, że taki autorytet dyktuje, że istnieje rozróżnienie, powinien ci coś powiedzieć. I o ile kuli się, gdy ktoś nazywa wiersz rekordem, podobnie jak wielu moich kolegów - którzy są również ekspertami w świecie SQL Server. A ci z nas w tym obozie wierzą, że ma rację.
Na przykład Itzik Ben-Gan, oczywisty guru SQL Server. Oto cytat z pierwszej lekcji w jego zestawie szkoleniowym (egzamin 70-461): Sprawdzanie Microsoft SQL Server 2012 :
A znając Itzika, jeśli wyślesz mu wiadomość e-mail lub wyślesz go na konferencję, z przyjemnością Ci to powie. Jeśli nazywasz wiersz rekordem, jego zdaniem nie używasz terminologii poprawnie.
Teraz, będąc branżą pełną wszelkiego rodzaju ludzi, prawdopodobnie znajdziesz materiały (takie jak artykuły o celach technicznych zamieszczone w innej odpowiedzi), które wydają się robić bardzo subtelne różnice między nimi, a znajdziesz wielu ludzi w branży traktuj ich tak samo (znam kilku ludzi z Microsoftu i innych takich jak Brent Ozar, którzy zawsze będą to nazywać rekordem). To nie czyni ich słusznymi, to tylko ich sposób patrzenia na to - widzą logiczne i fizyczne to samo (przynajmniej w tym kontekście) i wielu z nich prawdopodobnie uważa, że reszta z nas jest tylko analnymi retentami spędzającymi zbyt dużo czasu na semantykę.
Ponieważ żaden sprzedawca nie powie: „będziesz do nich dzwonił {zapis | wiersze}”, na zawsze będziemy mieć do czynienia z tym argumentem, ponieważ zawsze znajdzie się ktoś, kto nie rozumie logicznie vs. fizycznie, lub był nauczany inaczej, lub pochodzi z programu Access lub środowisk programistycznych itp. Tak jak niektórzy ludzie mówią „tomay-to”, a inni ludzie mówią „tomah-to”, zawsze będzie wiele osób, od „oni są tacy sami” do „oni są zupełnie inni „- i wiele odcieni pomiędzy. Ponownie, to nie czyni żadnego z nich słusznym, ponieważ nikt nie może być ostatecznym autorytetem w tym zakresie. Ale w przestrzeni SQL Server zdecydowanie jest większość.
To powiedziawszy, IMHO, kiedy mówisz o danych znajdujących się w tabeli, nazywasz to wierszem. Podczas wykonywania wstawiania wstawiasz wiersz do tabeli. Po uruchomieniu aktualizacji aktualizujesz wiersz znajdujący się w tabeli. A kiedy wykonujesz WYBIERZ, pobierasz wiersze z tabeli.
Możesz śmiało nazwać go rekordem, gdy aplikacja go zatrzyma. Ale nie złość się, jeśli powiesz „wstawiłem płytę”, a ktoś cię poprawi.
źródło
Microsoft w kilku miejscach w swojej organizacji pod warunkiem, że oficjalna nazwa tabelarycznego przechowywania danych według pozycji tabeli (w celu stworzenia definicji taksonomicznej, która służy mojemu celowi) nazywa się „ROW”. I przedstawić jako dowód
ROW_NUMBER
,ROWCOUNT
,ROWVERSION
aDataTable.Rows
nieruchomość, gdzieDataTable
jest reprezentacją C # z TSQL „stół” obiektu. W takim przypadku właściwości MSDN jako całości zachęcają do używaniarow
odniesienia do zbioru danych, który jest jednym wpisem w tabeli. (uwaga: staram się unikać używania „rekordu” lub „wiersza” do zdefiniowania tego, bo to jest pytanie)Jednak najważniejsze jest to, że aplikacja zajmuje się „rekordami” użytkownika. Coś wyjątkowego w rekordzie, które nie może być bezpośrednio reprezentowane przez pojedynczy wiersz pamięci, polega na tym, że rekord może zawierać rekordy podrzędne. To prawda, że tabela może mieć powiązane tabele wiele do jednego, ale te nie są przechowywane w sposób ciągły, ale są logicznie powiązane.
Tak więc wiersz jest tym, co znajduje się w tabeli, a rekord jest tym, z czym programista współpracuje w praktyce.
źródło
Właśnie przeszukałem dokument „Technologia informacyjna - Języki baz danych - SQL Część 2: Podstawa (SQL / Foundation)”, który definiuje standard ANSI dla SQL, wdrażany przez wszystkie główne RDBMS.
Słowo
row
to jest używane zgodnie z oczekiwaniami przede wszystkim w całym dokumencie kilkaset razy.Słowo to
record
zostało użyte jedynie do opisania rekordu podobnego do rekordu używanego w Oracle PL / SQL (konkretnie opisującego typy danych rekordów ADA). 6 wzmianek w dokumencie.Myślę, że to wyjaśnia to pytanie i odpowiada na różne argumenty po obu stronach.
dodatkowe informacje
Z kopii (wstępnej wersji najnowszego darmowego) standardu SQL, który można znaleźć na stronie wiscorp.com (strona Standardy SQL zawiera kilka innych starszych wersji i poprawek).
Przeszukiwanie 7IWD2-02-Foundation 2011-12.pdf , z dnia 2011-12-21 ujawnia, że słowo wiersz pojawia 2277 razy w dokumencie, podczas gdy słowo zapis pojawia się tylko 21 razy, zarówno jako czasownik „record” lub w niektórych dodatkach na końcu, w specyfikacjach typów danych dla typów danych SQL i typów języka hosta (Ada, Pascal).
Co więcej, ten sam dokument ma na stronie 57 (wyróżnienie moje):
Jeśli chodzi o DBMS korzystające z SQL:
Wiersze nie są rekordami , pola nie są kolumnami, tabele nie są plikami!
źródło
Ponieważ relacyjne bazy danych są rzadko używane w izolacji, aby uniknąć pomyłek między innymi częściami systemów, zawsze odnoszę się do tabel, wierszy i kolumn. W aplikacjach klienckich zwykle mamy inne konstrukcje, w tym moduły danych, zestawy danych, datarows, bazy danych itp. - na przykład „pole” jest często używane do wprowadzania danych na ekranie, a Pascal ma typ danych Record, który jest podobny do struktury w C .
Czasami w projekcie systemu idea „rekordu” może być użyta w znaczeniu szerszym niż pojedynczy wiersz. Może to być wiersz i jego historia. Tak jak mówimy o usuniętym wierszu, możemy rozumieć wiersz, który jest po prostu oznaczony jako usunięty za pomocą kolumny lub „przeniesiony” do usuniętej tabeli (a nie po prostu brak wiersza, który, ponieważ nie istnieje, jest raczej trudny do zmusić). Istnieje tylko bardziej zróżnicowane użycie terminu Record.
Tabele, wiersze i kolumny są ogólnie przyjętą terminologią odnoszącą się do tych podmiotów w relacyjnych bazach danych, w tym w pracach Codda i Daty, a większość specjalistów w dziedzinie baz danych woli tę terminologię, ponieważ jest ona bardziej jednoznaczna.
Zwykle nie ma dwuznaczności, gdy mówi się o wierszach i kolumnach - inni ludzie rozumieją, że mówisz o fizycznym projekcie bazowej bazy danych, a nie o jakichkolwiek innych artefaktach z projektu logicznego przed projektem fizycznym lub dowolnymi późniejszymi istotami systemowymi, takimi jak pola na ekran.
źródło
Chociaż na twoje pytanie udzielono już bardzo dobrej odpowiedzi. Chciałbym również dodać swoje punkty. Może ci się przydać do pewnego stopnia. Również moja odpowiedź nie jest specyficzna dla SQL Server
Te słowa są używane zamiennie.
DataBase books start with these terminology
ponieważ są one powszechnie używane przez ludzi w prawdziwym życiu, także w systemie plików.Rekord jest podstawową jednostką w systemie pamięci masowej, która ma niejawne znaczenie. W DBMS słowo
record
użyte w rozdziale opisuje, w jaki sposób tabele bazy danych przechowują się na blokach dyskowych. W DBMS arecord-oriented file-system
to system plików, w którym pliki są przechowywane jako zbiory rekordów.źródło
Język ciągle się rozwija. Kilka dekad temu piśmienni ludzie używali „indeksów” zamiast prostszych „indeksów”. Po przejściu na „indeksy” wyeliminowaliśmy niepotrzebne komplikacje i sprawiliśmy, że język jest bardziej użyteczny. Konieczność zapamiętania liczby mnogiej dla „indeksu” była czysto narzutem - w żaden sposób nie pomogła nam się porozumieć. Nie popełnijcie błędu, naziści gramatyczni lubili poprawiać tych, którzy przeszli na „indeksy”. Oczywiście, naziści gramatyczni stracili. W ten sposób brzytwa Ockhama eliminuje bezużyteczne szczegóły, jeśli całość pozostaje wystarczająco aktualna.
Uspokójmy się więc - znajomość różnicy między wierszami i rekordami absolutnie nic nie zwiększa naszej zdolności do tworzenia i utrzymywania baz danych. Wielu doskonałych profesjonalistów używa zamiennie wierszy i rekordów, ale opracowuje niesamowite systemy. W związku z tym brzytwa Ockhama powinna ostatecznie wyeliminować to rozróżnienie, a następne pokolenie będzie musiało nauczyć się jednego mniej bezużytecznego faktu. Jeśli oczywiście SQL jest nadal aktualny.
źródło
Cytując książkę CJ Date „Wprowadzenie do systemów baz danych” „ Wiersze takiej tabeli można traktować jako rekordy pliku ... ”
Tak więc w przypadku baz danych jest to Row.
źródło
Krótka odpowiedź :
Uwaga: tabele przechowują rekordy liniowo, a zapytania zwracają wyniki liniowo
Wsparcie :
Dodatkowe definicje z całej sieci:
Warto zauważyć, że definicje SQL zasadniczo odpowiadają definicji w języku angielskim.
Jeśli masz definicję, która Twoim zdaniem powinna tu być, dodaj ją do komentarzy.
Szczególnie interesują mnie definicje ze standardu SQL lub dokumentacja implementacji.
Przytoczono cytat „Rzędy nie są zapisami”. Wyjęte z kontekstu wydaje się to przeczyć moim wcześniejszym twierdzeniom (i wielu specjalistów w dziedzinie baz danych). Ale jeśli przeczytasz cały post ( 1 Wyszukaj cytat) autorstwa Joe Celko (alias - CELKO--), staje się jasne, że Joe Celko próbuje poprawić błędne wyobrażenie o osobie, które według Joe Celko wynika z „ ... tło przetwarzania danych w tradycyjnych systemach plików ... ". Krótko mówiąc, Joe Celko mówi, że wiersze SQL nie działają tak samo jak rekordy w innych systemach. Joe Celko nie rości sobie prawa / przywileju zdefiniowania terminu, próbuje wyjaśnić brak zrozumienia wynikający z nieprawidłowego stosowania zasad jednego modelu przechowywania do drugiego.
źródło