列とフィールド:これらの用語を間違って使用していませんか?


20

私はここでちょっと恥ずかしい思いをします。私は常に「コラム」と「フィールド」という用語を完全に交換可能に使用してきました。

しかし、これは正しいとは限らないと言われました(各用語をスプレッドシートの用語に翻訳し、データ型やデータベースを有用にする他のすべてのものを無視します):

  • データベース列:スプレッドシート列のような
  • データベースレコード:スプレッドシート行のような
  • データベースフィールド:スプレッドシートの「セル」(特定の行の特定の列)

これは正解?列とフィールドはそれよりも同じ意味で使用されていると宣誓できたでしょう。私は確かにされています。

したがって、テーブルにフィールドを追加するのではなく、テーブルにを追加します。フィールドは、レコード内のデータについて話すときにのみ関連しますか?

列とフィールドに関する他の考えは?

編集:明確にするために、現在のコンテキストはMS SQL Serverです。SQLサーバー以前の私の背景はMS Accessであり、これらの用語の使用に影響を与える可能性があります。


さらにいくつかのコンテキストの場合:混乱が異なるSOポストのコメント欄にあった:stackoverflow.com/questions/1398453/...
BradC


Postgresでは、これを区別することが重要です。1つの行に複数のレコードを含めることができます。そして、単一の列には、複数のフィールド(レコード内の)可能性があり
a_horse_with_no_name

回答:


31

リレーショナルデータベース理論には、フィールドという単語の使用は含まれません。EF Codd博士は、RDBMSがこの用語を使用したことのない理論的根拠を提供する一連の論文を執筆しました。確認したい場合は、彼の1970年の論文「大規模共有データバンクのデータのリレーショナルモデル」を読むことができます。

ドメイン、テーブル、属性、キー、タプルなどの用語が使用されます。この理由の1つは、彼の論文が主にリレーショナル代数に関係しており、特定の実装がデータベース内のテーブルを定義する方法がCoddによって重要であると見なされなかったことです。ベンダーは後でそれを具体化します。また、歴史的に、RDBMSは既存の階層型データベースおよびネットワークデータベースから進化したものであり、RDBMSの内部動作はデータの編成とストレージに関係する必要があることを理解する必要があります。

一般的な使用では、グーグルを少し実行するだけで簡単にこれを確認できます。フィールドと列同じものです。

DBase、Access、FilemakerなどのPCデータベースは通常、「列」ではなく「フィールド」を使用します。「属性」は、同じ意味で使用できる別の用語です。

たとえば、表に「フィールド」を追加する場合のMS Accessマニュアルへのリンクを次に示します。MS Accessで「フィールド」が「列」と同等であることは明らかです。

DbaseとFilemaker Proでも同じことが言えます。

特定の行の特定の値を「フィールド」またはより適切には「フィールド値」として参照することもありますが、列または列等価概念を誤って参照するときに「フィールド」を使用しません。これは、人々が長年にわたってさまざまなことを意味するために「フィールド」を使用してきたため、ある程度の混乱を引き起こす傾向があります。リレーショナル理論では、単一の原子値は「データ」と呼ばれます。

「フィールド」はリレーショナルデータベースの1つの値であり、列とは異なると誰かが述べた場合、「フィールド」はリレーショナルデータベースの用語の一部ではないため、それは彼らの意見です。それらは正しいものでも間違ったものでもありませんが、データベースの世界では、フィールドは列を意味するためにより頻繁に使用されます。

とはいえ、プロジェクトとチームは、混乱を避けるために、プロジェクト内で特定の用語をどのように使用したいかを理解する必要があります。

あなたは間違ってはいませんが、単に使用されている慣習に従うか、「列」を優先して単語フィールドを使用することを避けることもできます。リレーショナルデータベースでは、「テーブル」と「列」はDDLに存在する構成要素であり、これらの用語を使用し、使用も明確にも定義されていない「フィールド」を避けるのが最善です。


ええ、プラットフォームは関連性があるかもしれません。実際、異なる開発者が用語をわずかに異なる方法で使用していると確信しています。私の特定のケースでは、これが重要な場合、これはMS SQL Serverです。
BradC

ジョー・セルコのような人々は、フィールドと列が同じものであることに反対する傾向があります。
a_horse_with_no_name

3
RDBMSの実践に興味がある人には、Joeの本をお勧めします。彼に何度か会ったことはありますが、フィールドを使用してさまざまなことを意味することによって生じる混乱を避けることに、彼が意欲的に賛成するのは驚くことではありません。それは用語の歴史、そして人々がPCデータベース用語を採用するのを止める彼の探求に先行するデータベースの列に「フィールド」を使用したという事実を変えません。
Gビュー

同じベンダーが用語に混乱をもたらす場合があります。たとえば、Microsoftは次のように述べています。「列とは、テーブル内で垂直に配置されたセルのコレクションです。フィールドとは、Receivedフィールドなど、1つの情報が格納される要素です。通常、テーブル内の列には、単一のフィールド。」。もちろん、ここでのコンテキストはOutlookですが、人々はそのような声明の影響を非常に簡単に受ける可能性があります。msdn.microsoft.com/en-us/library/office/ff866450.aspx
drumsta

8

古いSQL:92fields、日時アイテムのコンポーネントと呼ばれます。

「日時項目のフィールド」は、日時値を構成できるフィールドを指定します。日時値は、これらのフィールドのサブセットで構成されます

ここのフィールドは年、月などであり、この用語fieldはドキュメントの残りの部分では他の意味を持たないようです。

新しいSQL:2003標準には次のものがあります。

列、フィールド、および属性

列、フィールド、および属性という用語は、それぞれテーブル、行タイプ、および構造化タイプの構造コンポーネントを同様の方法で指します。テーブルの構造は1つ以上の列で構成されるため、行タイプの構造は1つ以上のフィールドで構成され、構造化タイプの構造は1つ以上の属性で構成されます。列、フィールド、属性など、すべての構造要素は、主に宣言された型とペアになった名前です。

以降:

フィールド Fは、フィールド記述子によって記述されています。フィールド記述子には次のものが含まれます。—フィールド
の名前。
— Fの宣言された型のデータ型記述子
。—それを単に含む行型内のFの順序位置。

これは、次のように定義されている列とは対照的です。

Cは、列記述子によって記述されます。列記述子には次のものが含まれます。—列
の名前。
—列の名前が実装依存の名前であるかどうか。
—列がドメインに基づいている場合、そのドメインの名前。それ以外の場合、Cの宣言された型のデータ型記述子 。—
C
の値(存在
する場合)。
... (もっと)

その後、再び、テーブルを導入するとき:

テーブルは、1つ以上の列を持つ行のコレクションです。行は、行タイプの値です。同じテーブルのすべての行には同じ行タイプがあります。テーブルのすべての行のi番目のフィールドの値は、テーブルのその行のi番目の列の値です。行は、テーブルに挿入したりテーブルから削除したりできるデータの最小単位です。

(エンファシス鉱山)。これは、質問で書いたもの、つまり特定の行の特定の列をサポートしているようです。


6

そして、ピンの頭の周りで何人の天使が踊ることができますか?

あなたを修正した人自身が修正される可能性があります。

  • テーブル=関係

  • 行=タプル

  • 列=属性

  • ドメイン=データ型

リレーショナルデータベースに関するウィキペディアのエントリはこちらをご覧ください

私は航空会社で働いていましたが、パイロット/フライトアテンダント、エンジニア、またはマーケティングと話しているかどうかに応じて、「フライト」という言葉を3つの異なる方法で使用できました。

  • パイロット/参加者:「フライト」が基地から出入りしました(つまり、2回の離陸と2回の着陸)。
  • エンジニア:1つの離陸と1つの着陸は、テスト、修理、トレーニング(つまり、ある空港から同じ空港に戻る)または「脚」、つまり1つの空港から別の空港になります。 「私は明日家に帰ります」で)

  • マーケティング:契約のコンテキストで指定された空港との間で行われる6か月(通常はシーズン中またはシーズン外)の一連の「フライト」。

スプレッドシートの類推は、合理的な技術的なスピーチの場合でも(関係代数の教授でない限り)、99.99%のケースに対して十分すぎるほどです。あなたを訂正した人は「whom」という言葉を正しく使用していますか?99.99%の人はそうではなく、それは本当に重要ではありません。


2

私は通常、「フィールド」と「列」を同じ意味で使用しますが、最近では「列」に向かっています。しかし、「データ」を示す「フィールド」という言葉だけを聞いたことはありません。また、「フィールド」または「列」を示す「属性」という用語も聞いていません。列/フィールドに属性があり、たとえばFieldInfoクラスを介してアクセスできます。

「コラム」は単に用語の進化だと思います。デスクトップDB(xBASE、MSAccess)は一般に「フィールド」を使用します。M204は「フィールド」を使用します。この「フィールド」の用語は、MSOffice xmlなどに持ち込まれました。Oracleのドキュメント(これ以上リンクを投稿できませんが、申し訳ありません)とMSSQLは、全体を通して「フィールド」と「列」を互換的に使用します。Sybase(現在はSAP企業)は、主にドキュメントで「列」を使用しますが、「フィールド」を使用することもあります。

あなたのワークグループが用語に同意する限り、どの用語でもかまいません。それは「他の名前によるバラ」症候群です。


1
「属性」、「タプル」、「関係」という用語を聞いたことがありません(または読みませんでした)。
ypercubeᵀᴹ

@ypercube:おそらくGDDは、日々の開発のコンテキストで意味します。
siride

2

ですから、これは古い質問ですが、よく聞く質問です。私の考えは、データチームが開発チームと関わっていることです。開発者には、画面に表示されるレコード内のフィールドが間違いなくあり、それらのフィールドには、特定の行を持つ列に頻繁にマップできるデータが含まれています。ただし、多くの場合、データへのアクセスに使用されるリレーショナルメソッドは、特定のフィールドの特定の画面に表示されるものを変更する可能性があります。

I記録は、データが提供する現在の値の表現です。時間が経つにつれて、これらの値は変化する可能性があり、おそらく変化するため、レコードも変化します。現在と現在の状態をサポートするデータは、一連のテーブルに簡単に保存できます。データ間の関係は、常にレコードを構成する意味を決定します。

フィールドを導出するロジックは、時間とともに変化する可能性があります。たとえば、従業員がスーザンジョーンズとして雇用され、2010年1月12日にビルアンダーソンに店長として報告する店#101の店員として雇われました。これは進歩的な会社であり、各従業員にメンターも割り当てられています。スーザンの指導者はメアリーフィリップスです。メアリー・フィリップスは店長ですが、スーザンが働いている店の地域マネージャーでもあります。2011年11月10日にスーザンは店長に昇進しました。ビルに何が起こったのかはわかりませんが、スーザンは現在店長です。

名前、番号、雇用日、役職、場所を含む従業員のテーブルがあります。

メンターとメンターをしている従業員の従業員番号と、メンター関係の開始と終了を説明する日付を含むメンターの表があります。

リージョンの名前と割り当てられたマネージャー番号を持つリージョンのテーブルがあります。

住所、説明、地域、管理者番号を含む場所の別のテーブルがあります。

ストア情報を表示する画面には、ストアマネージャー用のフィールドがある場合があります。ストアマネージャーの値はデータベースフィールドではありませんが、時間とともに変化する計算可能な値です。また、個人のマネージャーも変更できます。それをサポートするデータは引き続き列に格納されますが、列間の関係が変更され、特定の目的のために組み立てられるとフィールドになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.