Column vs Field: Habe ich diese Begriffe falsch verwendet?

20

Es ist mir irgendwie peinlich, dass ich die Begriffe "Spalte" und "Feld" immer vollständig austauschbar verwendet habe, was in letzter Zeit in einer technischen Diskussion einige Verwirrung stiftete.

Mir wurde jedoch gesagt, dass dies nicht richtig sei, sondern dass es richtig sein sollte (Übersetzen jedes Begriffs in eine Tabellenkalkulation, Ignorieren von Datentypen und all den anderen Dingen, die Datenbanken nützlich machen):

  • Datenbankspalte: wie eine Tabellenspalte
  • Datenbankeintrag: wie eine Tabellenkalkulationszeile
  • Datenbankfeld: wie eine Tabellenzelle (eine bestimmte Spalte einer bestimmten Zeile)

Ist das richtig? Ich hätte schwören können, dass Spalte und Feld austauschbarer sind. Ich war es auf jeden Fall.

Damit wir einer Tabelle keine Felder hinzufügen, sondern einer Tabelle Spalten hinzufügen und Felder nur relevant sind, wenn es um Daten in einem Datensatz geht?

Weitere Gedanken zu Column vs Field?

Bearbeiten: Zur Verdeutlichung ist der aktuelle Kontext MS SQL Server. Mein Hintergrund vor SQL Server war MS Access, was meine Verwendung dieser Begriffe beeinflussen könnte.

BradC
quelle
Für einen weiteren Kontext: Die Verwirrung befand sich im Kommentarbereich eines anderen SO- Posts
BradC
3
In Bezug auf Zeilen vs Rekorde
ypercubeᵀᴹ
Bei Postgres ist es wichtig, dies zu unterscheiden. Eine einzelne Zeile kann mehrere Datensätze enthalten. Und eine einzelne Spalte kann mehrere Felder enthalten (innerhalb eines Datensatzes)
a_horse_with_no_name

Antworten:

31

Die relationale Datenbanktheorie schließt die Verwendung des Wortes Feld nicht ein. Dr. EF Codd, der die Reihe von Artikeln verfasst hat, die die theoretische Grundlage für RDBMS bilden, hat den Begriff nie verwendet. Sie können seine wegweisende Arbeit von 1970 über ein relationales Datenmodell für große gemeinsam genutzte Datenbanken lesen, wenn Sie dies überprüfen möchten.

Es werden Begriffe wie Domäne, Tabelle, Attribut, Schlüssel und Tupel verwendet. Ein Grund dafür ist, dass sich seine Arbeiten hauptsächlich mit relationaler Algebra befassten und Codd nicht für wichtig hielt, wie eine bestimmte Implementierung eine Tabelle in einer Datenbank definieren würde. Anbieter würden das später ausarbeiten. Die Menschen müssen auch verstehen, dass sich RDBMS in der Vergangenheit aus vorhandenen hierarchischen Datenbanken und Netzwerkdatenbanken entwickelt haben und dass sich das Innenleben eines RDMBS immer noch mit der Organisation und Speicherung von Daten befassen muss.

Im Allgemeinen Gebrauch, und Sie können dies leicht überprüfen , indem Sie einfach ein bisschen googeln tun, Felder und Spalten sind das Gleiche.

PC-Datenbanken wie DBase, Access und Filemaker verwenden normalerweise "field" anstelle von "column". "Attribut" ist ein weiterer Begriff, der synonym verwendet werden kann.

Hier finden Sie beispielsweise einen Link zum MS Access-Handbuch zum Hinzufügen eines " Felds " zu einer Tabelle. Es ist klar, dass in MS Access ein "Feld" einer "Spalte" entspricht.

Gleiches gilt für Dbase und Filemaker Pro.

Manchmal wird ein bestimmter Wert in einer bestimmten Zeile als "Feld" oder besser als "Feldwert" bezeichnet, aber dies macht die Verwendung von "Feld" nicht erforderlich, wenn auf eine Spalte oder ein Spaltenäquivalent-Konzept verwiesen wird. Dies führt zu größerer Verwirrung, da die Menschen "Feld" seit vielen Jahren für verschiedene Bedeutungen verwenden. In der relationalen Theorie wird ein einzelner Atomwert als "Datum" bezeichnet.

Wenn jemand angibt, dass ein "Feld" ein Wert in einer relationalen Datenbank ist und nicht dasselbe wie eine Spalte, ist dies seine Meinung, da "Feld" nicht Teil der Umgangssprache der relationalen Datenbank ist. Sie sind weder richtig noch falsch. In der gesamten Datenbank wird Feld jedoch häufiger als Spalte verwendet.

Vor diesem Hintergrund müssen Projekte und Teams häufig ein Verständnis dafür entwickeln, wie sie bestimmte Begriffe innerhalb des Projekts verwenden möchten, um Verwirrung zu vermeiden.

Sie irren sich nicht, können sich aber auch einfach der verwendeten Konvention anschließen oder das Wortfeld ganz zugunsten von "column" vermeiden. Bei relationalen Datenbanken sind "Tabelle" und "Spalte" die Bausteine, die in DDL vorhanden sind. Verwenden Sie am besten nur diese Begriffe und vermeiden Sie "Feld", das nicht verwendet oder klar definiert wird.

gview
quelle
Ja, die Plattform könnte relevant sein. Ich bin sicher, dass verschiedene Entwickler die Begriffe tatsächlich leicht unterschiedlich verwenden. In meinem speziellen Fall ist dies MS SQL Server, falls dies von Bedeutung ist.
BradC
Leute wie Joe Celko sind sich nicht einig, dass Felder und Spalten dasselbe sind.
a_horse_with_no_name
3
Ich würde Joes Bücher jedem empfehlen, der sich für RDBMS interessiert. Nachdem ich ihn mehrmals getroffen habe, wundert es mich nicht, dass er strikt dafür ist, die Verwirrung zu vermeiden, die durch die Verwendung des Feldes verursacht wird, um verschiedene Dinge zu bedeuten. Das ändert nichts an der Geschichte des Begriffs und an der Tatsache, dass die Benutzer "field" als Spalte in Datenbanken verwendeten, die vor seiner Suche verwendet wurden, um die Annahme der Terminologie für PC-Datenbanken zu verhindern.
Gview
Manchmal kann derselbe Anbieter die Terminologie durcheinander bringen. Microsoft hat hier beispielsweise Folgendes angegeben: "Eine Spalte ist eine Sammlung von Zellen, die vertikal in einer Tabelle ausgerichtet sind. Ein Feld ist ein Element, in dem eine Information gespeichert ist, z. B. das Feld Received. In der Regel enthält eine Spalte in einer Tabelle die Werte von ein einzelnes Feld. " Natürlich ist der Kontext hier Outlook, aber die Leute könnten leicht von einer solchen Aussage beeinflusst werden. msdn.microsoft.com/en-us/library/office/ff866450.aspx
drumsta
8

Das ältere SQL: 92 bezeichnet fieldsals Komponenten von datetime-Elementen:

"Felder in Datums- / Uhrzeitelementen" gibt die Felder an, aus denen ein Datums- / Uhrzeitwert bestehen kann. Ein Datum / Uhrzeit-Wert besteht aus einer Teilmenge dieser Felder

Die Felder hier sind Jahr, Monat usw., und der Begriff fieldscheint im Rest des Dokuments keine andere Bedeutung zu haben.

Der neuere SQL: 2003-Standard hat Folgendes:

Spalten, Felder und Attribute

Die Begriffe Spalte, Feld und Attribut beziehen sich in analoger Weise auf strukturelle Komponenten von Tabellen, Zeilentypen bzw. strukturierten Typen. Da die Struktur einer Tabelle aus einer oder mehreren Spalten besteht, besteht die Struktur eines Zeilentyps aus einem oder mehreren Feldern und die eines strukturierten Typs aus einem oder mehreren Attributen. Jedes Strukturelement, ob Spalte, Feld oder Attribut, ist in erster Linie ein Name, der mit einem deklarierten Typ gepaart ist.

und später:

Ein Feld F wird durch einen Felddeskriptor beschrieben. Ein Felddeskriptor enthält:
- den Namen des Feldes.
- Der Datentypdeskriptor des deklarierten Typs von F.
- Die Ordnungsposition von F innerhalb des Zeilentyps, der ihn einfach enthält.

Dieser Kontrast zu der Spalte, die definiert ist als:

Eine Spalte C wird durch einen Spaltendeskriptor beschrieben. Ein Spaltendeskriptor enthält:
- Den Namen der Spalte.
- Ob der Name der Spalte ein implementierungsabhängiger Name ist.
- Wenn die Spalte auf einer Domain basiert, der Name dieser Domain; Andernfalls der Datentypdeskriptor des deklarierten Typs von C.
- Der Wert von C , falls vorhanden.
- Das Nullfähigkeitsmerkmal von C.
- Die Ordnungsposition von C in der Tabelle, die es enthält.
... (und mehr)

Dann später nochmal beim Einführen von Tabellen:

Eine Tabelle ist eine Sammlung von Zeilen mit einer oder mehreren Spalten. Eine Zeile ist ein Wert eines Zeilentyps. Jede Zeile derselben Tabelle hat denselben Zeilentyp. Der Wert des i-ten Felds jeder Zeile in einer Tabelle ist der Wert der i-ten Spalte dieser Zeile in der Tabelle . Die Zeile ist die kleinste Dateneinheit, die in eine Tabelle eingefügt und aus einer Tabelle gelöscht werden kann.

(Hervorhebung von mir). Dies scheint zu unterstützen, was Sie in der Frage geschrieben haben: eine bestimmte Spalte einer bestimmten Zeile .

Daniel Vérité
quelle
6

Und wie viele Engel können um einen Stecknadelkopf tanzen?

Die Person, die Sie korrigiert hat, könnte selbst korrigiert werden.

  • Tabelle = Beziehung

  • Zeile = Tupel

  • Spalte = Attribut

  • Domain = Datentyp

Den Wikipedia-Eintrag zu relationalen Datenbanken finden Sie hier .

Ich habe für eine Fluggesellschaft gearbeitet und das Wort "Flug" kann auf drei verschiedene Arten verwendet werden, je nachdem, ob Sie mit Piloten / Flugbegleitern, Ingenieuren oder Marketingmitarbeitern gesprochen haben.

  • Piloten / Begleiter: ein "Flug" war von der Basis aus und zurück (dh zwei Starts und zwei Landungen),
  • Ingenieure: Ein Start und eine Landung können Test, Reparatur, Training (dh ein Flughafen zurück zum selben Flughafen) oder eine "Etappe" (dh ein Flughafen zum anderen) sein - was "Zivilisten" normalerweise einen Flug nennen würden in "Ich fliege morgen nach Hause"),

  • Marketing: eine sechsmonatige Serie von "Flügen" (in der Regel in der Saison oder außerhalb der Saison) von / zu einem bestimmten Flughafen im Rahmen eines Vertrags.

Die Spreadsheet-Analogie ist für 99,99% der Fälle mehr als gut genug, auch bei einigermaßen technischer Sprache (es sei denn, man ist Professor für relationale Algebra). Verwendet die Person, die Sie korrigiert hat, das Wort "wen" richtig? 99,99% der Menschen tun das nicht und es spielt wirklich keine Rolle.

Vérace
quelle
2

Ich verwende im Allgemeinen "Feld" und "Spalte" austauschbar, in jüngerer Zeit tendenziell "Spalte". Ich habe den Begriff "Feld" allein nicht gehört, um auf "Daten" hinzuweisen. Ich habe auch nicht gehört, dass der Begriff "Attribut" "Feld" oder "Spalte" bedeutet. Eine Spalte / ein Feld hat Attribute, auf die beispielsweise über die FieldInfo-Klasse zugegriffen werden kann.

Ich glaube, "Spalte" ist einfach eine Weiterentwicklung der Terminologie. Desktop-DBs (xBASE, MSAccess) verwenden im Allgemeinen "field". M204 verwendet "Feld". Diese "Feld" -Terminologie wurde in MSOffice xml und andere übernommen. In den Dokumenten für Oracle (ich kann leider keine weiteren Links veröffentlichen) und MSSQL werden "field" und "column" synonym verwendet. Sybase (jetzt ein SAP-Unternehmen) verwendet in seiner Dokumentation überwiegend "Spalte", manchmal aber auch "Feld".

Solange sich Ihre Arbeitsgruppe auf einen Begriff einigt, spielt es keine Rolle, welchen. Es ist ein "Rose by any other name" -Syndrom.

GDD
quelle
1
Sie haben die Begriffe "Attribut", "Tupel", "Relation" nicht gehört (oder gelesen )?
ypercubeᵀᴹ
@ypercube: Vielleicht bedeutet GDD im Kontext der täglichen Entwicklung.
Siride
2

Mir ist klar, dass dies eine alte Frage ist, aber ich höre sie oft. Mein Verständnis ergibt sich aus der Einbindung unseres Datenteams in unser Entwicklungsteam. Entwickler haben definitiv Felder in Datensätzen, die auf Bildschirmen angezeigt werden, und diese Felder enthalten Daten, die häufig Spalten mit bestimmten Zeilen zugeordnet werden können. In vielen Fällen kann die für den Zugriff auf die Daten verwendete relationale Methode jedoch ändern, was auf einem bestimmten Bildschirm in einem bestimmten Feld angezeigt wird.

I record ist eine Darstellung des aktuellen Wertes, den die Daten liefern. Mit der Zeit können und werden sich diese Werte ändern, so dass sich auch der Datensatz ändert. Die Daten, die den aktuellen Stand und den Stand zu einem bestimmten Zeitpunkt bestätigen, können problemlos in einer Reihe von Tabellen gespeichert werden. Die Beziehungen zwischen den Daten bestimmen die Bedeutungen, aus denen die Aufzeichnung zu einem bestimmten Zeitpunkt besteht.

Die Logik, die die Felder ableitet, kann sich im Laufe der Zeit ändern. Beispielsweise wird eine Mitarbeiterin als Susan Jones angestellt, und sie wurde am 01.12.2010 als Verkäuferin in Geschäft Nr. 101 eingestellt, die an Bill Anderson als Filialleiter berichtet. Da es sich um ein fortschrittliches Unternehmen handelt, wird jedem Mitarbeiter ein Mentor zugewiesen. Susans Mentorin ist Mary Phillips. Mary Phillips ist Filialleiterin, aber sie ist auch Regionalleiterin für das Geschäft, in dem Susan arbeitet. Am 11.10.2011 wurde Susan zur Filialleiterin befördert. Wir wissen nicht, was mit Bill passiert ist, aber Susan ist jetzt die Geschäftsleiterin.

Wir haben eine Tabelle mit Mitarbeitern mit Name, Nummer, Einstellungsdatum, Position und Standort.

Wir haben eine Mentorentabelle mit Mitarbeiternummern für die Mentoren und die Mitarbeiter, die sie betreuen, sowie Daten, die den Beginn und das Ende der Mentorenbeziehung beschreiben.

Wir haben eine Tabelle mit Regionen mit einem Namen für die Region und einer zugewiesenen Managernummer.

Wir haben eine weitere Standorttabelle mit Adresse, Beschreibung, Region und Managernummer.

Auf dem Bildschirm mit den Geschäftsinformationen wird möglicherweise ein Feld für den Geschäftsmanager angezeigt. Der Wert für den Geschäftsmanager ist kein Datenbankfeld, sondern ein berechenbarer Wert, der sich im Laufe der Zeit ändern kann. Auch der Manager einer Person kann sich ändern. Die Daten, die dies unterstützen, werden weiterhin in Spalten gespeichert, aber die Beziehungen zwischen den Spalten haben sich geändert, und wenn sie für einen bestimmten Zweck zusammengestellt werden, wird sie zu einem Feld.

HogHunter
quelle