Es gab eine ziemlich harmlose Frage zum Hinzufügen von Datums- und Uhrzeitangaben in SQL Server , die eine ziemlich faszinierende taxonomische Debatte auslöste.
Wie unterscheiden wir zwischen diesen verwandten Begriffen und wie verwenden wir sie richtig?
Reihe
Aufzeichnung
sql-server
terminology
row
record
Swasheck
quelle
quelle
Antworten:
Um Joe Celko zu zitieren (diese Referenz finden Sie nicht nur im Internet und in seinem Wikipedia-Eintrag , sondern auf einigen Konferenzen sogar auf T-Shirts):
Viele Leute weisen ihn auf einen pedantischen Idioten hin, der es einfach mag, Neulinge zu demütigen und verbal zu missbrauchen, und ich gebe zu, dass er so rüberkommt. Aber ich habe ihn auch persönlich getroffen - sogar ein Essen mit ihm geteilt - und ich kann Ihnen nicht sagen, wie unterschiedlich seine reale Persönlichkeit von seiner Online-Front ist. Ich habe ihn sogar einmal beim Aufrufen von Datensätzen erwischt, und er war sehr verlegen ( vollständige Hintergrundgeschichte hier ).
Sagen Sie auf jeden Fall, was Sie über den Online-Charakter des Typen sagen wollen, aber er hat den Standard geschrieben , und die Tatsache, dass eine solche Autorität vorschreibt, dass es einen Unterschied gibt, sollte Ihnen etwas sagen. Und so sehr er sich zuckt, wenn jemand eine Zeile als Datensatz bezeichnet, tun dies auch viele meiner Kollegen - die auch Experten in der SQL Server-Welt sind. Und die von uns in diesem Lager glauben, dass er Recht hat.
Zum Beispiel Itzik Ben-Gan, ein offensichtlicher SQL Server-Guru. Hier ist ein Zitat aus der allerersten Lektion in seinem Training Kit (Prüfung 70-461): Abfragen von Microsoft SQL Server 2012 :
Und wenn Sie Itzik eine E-Mail schicken oder ihn auf einer Konferenz ansprechen, wird er Ihnen dies gerne mitteilen. Wenn Sie eine Zeile als Datensatz bezeichnen, verwenden Sie die Terminologie seiner Meinung nach nicht korrekt.
Jetzt, da Sie eine Branche voller Menschen aller Art sind, werden Sie wahrscheinlich Material finden (wie die in einer anderen Antwort veröffentlichten technischen Zielartikel), das sehr subtile Unterschiede zwischen den beiden zu machen scheint, und Sie werden viele Leute in der Branche finden Betrachten Sie sie als gleich (ich kenne einige Leute bei Microsoft und andere Leute wie Brent Ozar, die es einfach immer als Rekord bezeichnen). Das macht sie nicht richtig, das ist nur ihre Sichtweise - sie sehen logisch und physisch gleich (zumindest in diesem Zusammenhang) und viele von ihnen denken wahrscheinlich, dass der Rest von uns nur anale Retentive sind, die zu viel Zeit verbringen zur Semantik.
Da kein Verkäufer sagen kann, "du sollst sie {records | rows} nennen", werden wir uns für immer mit diesem Argument befassen, weil es immer jemanden geben wird, der das logische vs. das physikalische nicht versteht oder anders unterrichtet wurde, oder kam von Access oder Programmier-Hintergründen usw. Genau wie einige Leute Tomay-To sagen und andere Tomah-To sagen, wird es immer eine Vielzahl von Leuten geben, die von "sie sind gleich" bis "sie sind völlig verschieden" reichen "- und viele Schatten dazwischen. Auch das macht keinen von ihnen richtig, weil niemand die ultimative Autorität in diesem Bereich sein kann. Aber im SQL Server-Bereich gibt es definitiv eine Mehrheit.
Das heißt, IMHO, wenn Sie über Daten sprechen, die sich in einer Tabelle befinden, nennen Sie es eine Zeile. Wenn Sie eine Einfügung durchführen, fügen Sie eine Zeile in eine Tabelle ein. Wenn Sie ein Update ausführen, aktualisieren Sie eine Zeile in einer Tabelle. Und wenn Sie ein SELECT ausführen, rufen Sie Zeilen aus einer Tabelle ab.
Sie können es auch als Datensatz bezeichnen, sobald Ihre Anwendung darauf Zugriff hat. Aber sei nicht böse, wenn du sagst: "Ich habe einen Datensatz eingefügt", und jemand korrigiert dich.
quelle
Microsoft hat an mehreren Stellen in seiner Organisation vorgesehen, dass der offizielle Name für die tabellarische Datenspeicherung pro Tabelleneintrag (um eine taxonomische Definition zu prägen, die meinem eigenen Zweck dient) als "ROW" bezeichnet wird. Ich lege als Beweis
ROW_NUMBER
,ROWCOUNT
,ROWVERSION
und dieDataTable.Rows
Eigenschaft, in dem eineDataTable
eine C # Darstellung einer TSQL „table“ Objekt ist. In diesem Fall empfehlen die MSDN-Eigenschaften als Ganzes die Verwendung vonrow
, um auf eine Sammlung von Daten zu verweisen, die ein Eintrag in einer Tabelle ist. (Beachte, ich versuche die Verwendung von "record" oder "row" zu vermeiden, um dies zu definieren, da dies der Punkt der Frage ist.)Der Ausdruck ist jedoch, dass sich eine Anwendung mit Benutzer- "Datensätzen" befasst. Das Einzigartige an einem Datensatz, der möglicherweise nicht direkt durch eine einzelne Speicherzeile dargestellt wird, ist die Tatsache, dass ein Datensatz Unterdatensätze enthalten kann. Eine Tabelle kann zwar mehrere verknüpfte Tabellen enthalten, diese werden jedoch nicht zusammenhängend, sondern logisch verknüpft gespeichert.
Eine Zeile ist also das Ding in einer Tabelle, und ein Datensatz ist das Ding, mit dem der Entwickler im praktischen Gebrauch arbeitet.
quelle
Ich habe gerade das Dokument "Informationstechnologie - Datenbanksprachen - SQL Teil 2: Foundation (SQL / Foundation)" durchsucht, das den ANSI-Standard für SQL definiert, der von allen wichtigen RDBMS implementiert wird.
Das Wort
row
wird wie erwartet in erster Linie mehrere hundert Mal im gesamten Dokument verwendet.Das Wort
record
wurde nur verwendet, um einen Datensatz zu beschreiben, der einem in Oracle PL / SQL verwendeten Datensatz ähnelt (der speziell ADA-Datensatzdatentypen beschreibt). 6 Erwähnungen im Dokument.Ich denke, das klärt diese Frage und beantwortet die verschiedenen Argumente auf beiden Seiten.
zusätzliche Information
Aus einer Kopie eines (Entwurfsversion des neuesten frei verfügbaren) SQL-Standards, der auf wiscorp.com zu finden ist (die Seite SQL-Standards enthält mehrere ältere Versionen und Überarbeitungen).
Durchsuchen der 7IWD2-02-Foundation-2011-12.pdf , mit Datum vom 2011-12-21 offenbart , dass die Wortreihe 2277 mal in dem Dokument erscheint , während das Wort Datensatz nur 21 mal, entweder als Verb „record“ erscheint oder in einigen Anhängen am Ende in Spezifikationen der Datentyp-Entsprechungen für SQL-Datentypen und Host-Sprachtypen (Ada, Pascal).
Darüber hinaus hat dasselbe Dokument auf Seite 57 (Hervorhebung von mir):
Für DBMS, die SQL verwenden, gilt Folgendes:
Zeilen sind keine Datensätze , Felder sind keine Spalten, Tabellen sind keine Dateien!
quelle
Da relationale Datenbanken selten isoliert verwendet werden, verweise ich immer auf Tabellen, Zeilen und Spalten, um Verwechslungen zwischen anderen Teilen des Systems zu vermeiden. In einer Client-Anwendung haben wir normalerweise andere Konstrukte, einschließlich Datenlesegeräte, Datasets, Datenzeilen, Datentabellen usw. - zum Beispiel wird "field" häufig für die Dateneingabe auf dem Bildschirm verwendet, und Pascal hat einen Record-Datentyp, der einer Struktur in C ähnelt .
Manchmal kann in einem Systemdesign die Idee eines "Datensatzes" verwendet werden, um etwas zu bedeuten, das breiter ist als eine einzelne Zeile. Es könnte eine Reihe sein und es ist Geschichte. Genau wie bei einer gelöschten Zeile kann es sich um eine Zeile handeln, die einfach mit einer Spalte als gelöscht markiert oder in eine gelöschte Tabelle "verschoben" wird (und nicht nur um das Fehlen einer Zeile, die nicht vorhanden ist und die nur schwer zu finden ist) festzunageln). Es gibt nur eine abwechslungsreichere Verwendung des Begriffs Aufzeichnung.
Tabellen, Zeilen und Spalten werden allgemein als Terminologie für Verweise auf diese Entitäten in relationalen Datenbanken akzeptiert, einschließlich Arbeiten und Arbeiten von Codd und Date. Die Mehrheit der Datenbankfachleute bevorzugt diese Terminologie, da sie eindeutiger ist.
Wenn man von Zeilen und Spalten spricht, gibt es normalerweise keine Mehrdeutigkeit. Andere Leute verstehen, dass es sich um das zugrunde liegende physische Design der Datenbank handelt und nicht um andere Artefakte aus einem logischen Design vor dem physischen Design oder um neu auftretende Systementitäten wie Felder auf einem Bildschirm.
quelle
Obwohl Ihre Frage schon sehr gut beantwortet ist. Ich möchte auch meine Punkte hinzufügen. Vielleicht finden Sie es bis zu einem gewissen Grad hilfreich. Auch meine Antwort ist nicht spezifisch für SQL Server
Diese Wörter werden synonym verwendet.
DataBase books start with these terminology
weil diese häufig von Menschen im wirklichen Leben verwendet werden, auch im Dateisystem.Datensatz ist die Basiseinheit im Speichersystem, die eine implizite Bedeutung hat. In DBMS beschreibt das
record
in Kapitel verwendete Wort , wie Datenbanktabellen auf Plattenblöcken gespeichert werden. In DBMSrecord-oriented file-system
ist a ein Dateisystem, in dem Dateien als Sammlungen von Datensätzen gespeichert werden.quelle
Die Sprache entwickelt sich weiter. Vor einigen Jahrzehnten verwendeten die gebildeten Leute "Indizes" anstelle von einfacheren "Indizes". Als wir zu "Indizes" wechselten, haben wir unnötige Komplikationen beseitigt und die Sprache nützlicher gemacht. Die Notwendigkeit, einen Plural für "Index" auswendig zu lernen, war ein reiner Aufwand - es half uns in keiner Weise bei der Kommunikation. Machen Sie keinen Fehler, es gab früher Grammatik-Nazis, die es genossen, diejenigen zu korrigieren, die zu "Indizes" wechselten. Natürlich haben Grammatik-Nazis verloren. Auf diese Weise beseitigt Occams Rasiermesser nutzlose Details, wenn das Ganze lange genug relevant bleibt.
Lassen Sie es uns ruhig angehen: Wenn wir den Unterschied zwischen Zeilen und Datensätzen kennen, trägt dies absolut nichts zu unserer Fähigkeit bei, Datenbanken zu entwickeln und zu verwalten. Viele exzellente Profis verwenden Zeilen und Datensätze austauschbar und entwickeln dennoch großartige Systeme. Als solches sollte Ockhams Rasiermesser irgendwann die Unterscheidung aufheben, und die nächste Generation wird eine weniger nutzlose Tatsache lernen müssen. Wenn zu diesem Zeitpunkt natürlich noch SQL relevant ist.
quelle
Um CJ Dates Buch "Eine Einführung in Datenbanksysteme" zu zitieren: " Die Zeilen einer solchen Tabelle können als die Aufzeichnungen der Datei angesehen werden ... "
Für Datenbanken ist es Row.
quelle
Kurze Antwort :
Hinweis: Tabellen speichern Datensätze linear und Abfragen geben Ergebnisse linear zurück
Unterstützung :
Zusätzliche Definitionen aus dem gesamten Web:
Es ist bemerkenswert, dass die SQL-Definitionen im Allgemeinen der englischen Definition folgen.
Wenn Sie eine Definition haben, von der Sie denken, dass sie hier sein sollte, fügen Sie sie bitte den Kommentaren hinzu.
Mich interessieren vor allem Definitionen aus dem SQL-Standard oder die Dokumentation einer Implementierung.
Das Zitat wurde "Zeilen sind keine Datensätze" gebracht. Aus dem Zusammenhang gerissen, scheint dies meinen früheren Behauptungen (und denen vieler Datenbankfachleute) zu widersprechen. Aber wenn Sie den ganzen Beitrag ( 1 Search for the quote) von Joe Celko (aka --CELKO--) lesen, wird klar, dass Joe Celko versucht, ein Missverständnis einer Person zu korrigieren, von dem Joe Celko glaubt, dass es sich aus der Person ergibt. " ... Hintergrundinformationen zur Datenverarbeitung mit traditionellen Dateisystemen ... ". Kurz gesagt, Joe Celko sagt, dass SQL-Zeilen nicht wie Datensätze in anderen Systemen funktionieren. Joe Celko beansprucht nicht das Recht / Privileg, einen Begriff zu definieren, sondern versucht, ein Missverständnis auszuräumen, das durch die inkorrekte Anwendung von Prinzipien eines Speichermodells auf ein anderes entsteht.
quelle