คอลัมน์ vs ฟิลด์: ฉันใช้คำศัพท์เหล่านี้ไม่ถูกต้องหรือไม่?


20

ฉันรู้สึกอายที่นี่ฉันมักใช้คำว่า "คอลัมน์" และ "ฟิลด์" แทนกันอย่างสมบูรณ์ซึ่งเพิ่งทำให้เกิดความสับสนในการอภิปรายทางเทคนิค

แต่มีคนบอกฉันว่ามันไม่ถูกต้องที่ควรจะเป็น (แปลแต่ละคำเป็นสเปรดชีตคำศัพท์ละเว้นประเภทข้อมูลและสิ่งอื่น ๆ ทั้งหมดที่ทำให้ฐานข้อมูลมีประโยชน์):

  • คอลัมน์ฐานข้อมูล: เช่นคอลัมน์สเปรดชีต
  • บันทึกฐานข้อมูล: เหมือนแถวสเปรดชีต
  • ฟิลด์ฐานข้อมูล: เหมือนสเปรดชีต "เซลล์" (คอลัมน์เฉพาะของแถวที่ระบุ)

ถูกต้องหรือไม่ ฉันได้สาบานว่าคอลัมน์และฟิลด์จะถูกใช้แทนกันมากกว่านั้น ฉันได้รับอย่างแน่นอน

ดังนั้นเราไม่เพิ่มเขตข้อมูลลงในตารางเราเพิ่มคอลัมน์ลงในตารางและเขตข้อมูลจะเกี่ยวข้องเฉพาะเมื่อพูดถึงข้อมูลภายในระเบียน

มีความคิดเห็นอื่นเกี่ยวกับคอลัมน์ vs ฟิลด์หรือไม่

แก้ไข: เพื่อชี้แจงบริบทปัจจุบันคือ MS SQL Server พื้นหลังของฉันก่อนเซิร์ฟเวอร์ SQL คือ MS Access ซึ่งอาจมีผลต่อการใช้คำเหล่านี้


สำหรับบริบทเพิ่มเติม: ความสับสนเกิดขึ้นในส่วนความคิดเห็นของโพสต์ SO อื่น: stackoverflow.com/questions/1398453/…
BradC

3
เกี่ยวกับแถว vs Records
ypercubeᵀᴹ

ด้วย Postgres สิ่งสำคัญคือการแยกความแตกต่างนี้ แถวเดียวสามารถมีได้หลายระเบียน และคอลัมน์เดียวอาจมีหลายฟิลด์ (ภายในเรคคอร์ด)
a_horse_with_no_name

คำตอบ:


31

ทฤษฎีฐานข้อมูลเชิงสัมพันธ์ไม่รวมถึงการใช้คำว่า Field ดร. EF Codd ผู้เขียนชุดเอกสารที่ให้พื้นฐานทางทฤษฎีสำหรับ RDBMS ไม่เคยใช้คำนี้ คุณสามารถอ่านเอกสารที่เกี่ยวกับน้ำเชื้อ 1970 A ของแบบจำลองเชิงสัมพันธ์ของธนาคารข้อมูลขนาดใหญ่ที่ใช้ร่วมกันหากคุณต้องการตรวจสอบ

มีการใช้ข้อกำหนดเช่นโดเมนตารางแอททริบิวคีย์และ Tuple เหตุผลหนึ่งสำหรับเรื่องนี้ก็คือเอกสารของเขาส่วนใหญ่เกี่ยวข้องกับพีชคณิตเชิงสัมพันธ์และวิธีการดำเนินการเฉพาะจะกำหนดตารางในฐานข้อมูลไม่ได้พิจารณาโดย Codd ว่ามีความสำคัญ ผู้ขายจะเอาเนื้อออกมาในภายหลัง ผู้คนต้องเข้าใจว่าในอดีต RDBMS นั้นพัฒนามาจากฐานข้อมูลแบบลำดับชั้นและเครือข่ายที่มีอยู่ก่อนหน้าและการทำงานภายในของ RDMBS ยังคงต้องเกี่ยวข้องกับการจัดเก็บข้อมูลและหน่วยงาน

ในการใช้งานทั่วไปและคุณสามารถตรวจสอบสิ่งนี้ได้ง่ายๆเพียงทำ googling เล็กน้อยฟิลด์และคอลัมน์เป็นสิ่งเดียวกัน

ฐานข้อมูล PC เช่น DBase, Access และ Filemaker มักใช้ "field" แทนที่จะเป็น "column" "แอตทริบิวต์" เป็นคำอื่นที่สามารถใช้แทนกันได้

ตัวอย่างเช่นนี่คือลิงก์ไปยังคู่มือ MS Access ในการเพิ่ม " ฟิลด์ " ลงในตาราง เห็นได้ชัดว่าใน MS Access "ฟิลด์" เทียบเท่ากับ "คอลัมน์"

การถือครองเดียวกันสำหรับ Dbase และ Filemaker Pro

บางครั้งผู้คนจะอ้างถึงค่าเฉพาะในแถวที่ระบุว่าเป็น "เขตข้อมูล" หรือมากกว่านั้นเป็น "ค่าเขตข้อมูล" อย่างถูกต้อง แต่ไม่ได้ใช้ประโยชน์จาก "เขตข้อมูล" เมื่ออ้างถึงคอลัมน์หรือคอลัมน์เทียบเท่าแนวคิดที่ไม่ถูกต้อง สิ่งนี้มีแนวโน้มที่จะทำให้เกิดความสับสนเนื่องจากผู้คนใช้ "ฟิลด์" เพื่อหมายถึงสิ่งที่แตกต่างเป็นเวลาหลายปี ในทฤษฎีเชิงสัมพันธ์ - ค่าอะตอมเดี่ยวเรียกว่า "Datum"

หากมีคนระบุว่า "ฟิลด์" เป็นหนึ่งค่าในฐานข้อมูลเชิงสัมพันธ์และไม่เหมือนกับคอลัมน์นั่นคือความเห็นของพวกเขาเนื่องจาก "ฟิลด์" ไม่ใช่ส่วนหนึ่งของฐานข้อมูลเชิงสัมพันธ์ มันไม่ถูกหรือผิดอย่างไรก็ตามทั่วโลกฐานข้อมูลฟิลด์มักถูกใช้เพื่อหมายถึงคอลัมน์

ด้วยที่กล่าวว่าโครงการและทีมมักจะต้องทำความเข้าใจเกี่ยวกับวิธีที่พวกเขาต้องการใช้คำศัพท์เฉพาะภายในโครงการเพื่อหลีกเลี่ยงความสับสน

คุณไม่ผิด แต่คุณอาจตัดสินใจที่จะทำตามแบบแผนที่ใช้หรือหลีกเลี่ยงการใช้ฟิลด์คำทั้งหมดในความโปรดปรานของ "คอลัมน์" ด้วยฐานข้อมูลเชิงสัมพันธ์ "ตาราง" และ "คอลัมน์" เป็นหน่วยการสร้างที่มีอยู่ใน DDL และเป็นการดีที่สุดที่จะใช้คำเหล่านั้นและหลีกเลี่ยง "ฟิลด์" ซึ่งไม่ได้ใช้หรือไม่ได้กำหนดไว้อย่างชัดเจน


ใช่แพลตฟอร์มอาจมีความเกี่ยวข้องฉันแน่ใจว่านักพัฒนาที่แตกต่างกันอาจใช้เงื่อนไขต่างกันเล็กน้อย ในกรณีเฉพาะของฉันนี่คือ MS SQL Server ถ้าเป็นเช่นนั้น
BradC

คนอย่างโจเซโลโกมักจะไม่เห็นด้วยว่าทุ่งนาและเสาเป็นสิ่งเดียวกัน
a_horse_with_no_name

3
ฉันอยากแนะนำหนังสือของ Joe ให้กับทุกคนที่สนใจในการฝึก RDBMS เมื่อได้พบกับเขาหลายครั้งก็ไม่แปลกใจเลยที่เขาจะได้รับความเห็นชอบในการหลีกเลี่ยงความสับสนที่เกิดจากการใช้สนามเพื่อหมายถึงสิ่งต่าง ๆ แต่นั่นไม่ได้เปลี่ยนประวัติของคำศัพท์และความจริงที่ว่าผู้คนใช้ "ฟิลด์" สำหรับคอลัมน์ในฐานข้อมูลที่มีมาก่อนวันที่ภารกิจของเขาที่จะหยุดผู้คนจากการใช้คำศัพท์ฐานข้อมูล PC
gview

บางครั้งผู้ขายรายเดียวกันอาจนำความสับสนมาสู่คำศัพท์ ตัวอย่างเช่น Microsoft ระบุไว้ที่นี่ "คอลัมน์คือชุดของเซลล์ที่จัดเรียงในแนวตั้งในตารางเขตข้อมูลเป็นองค์ประกอบที่เก็บข้อมูลหนึ่งชิ้นเช่นเขตข้อมูลที่ได้รับโดยทั่วไปคอลัมน์ในตารางจะมีค่าของ เขตข้อมูลเดียว ". แน่นอนบริบทที่นี่คือ Outlook แต่ผู้คนอาจได้รับอิทธิพลจากคำสั่งดังกล่าวค่อนข้างง่าย msdn.microsoft.com/en-us/library/office/ff866450.aspx
drumsta

8

SQLรุ่นเก่า: 92หมายถึงfieldsส่วนประกอบของรายการวันที่และเวลา:

"เขตข้อมูลในรายการวันที่และเวลา" ระบุเขตข้อมูลที่สามารถสร้างค่าเวลาวันที่; ค่า datetime ประกอบด้วยเซ็ตย่อยของฟิลด์เหล่านั้น

ฟิลด์ที่นี่คือปีเดือนและอื่น ๆ ... และคำfieldนี้ดูเหมือนจะไม่มีความหมายอื่นใดในส่วนที่เหลือของเอกสาร

มาตรฐาน SQL: 2003 ที่ใหม่กว่ามีสิ่งนี้:

คอลัมน์ฟิลด์และแอตทริบิวต์

คอลัมน์คำศัพท์ฟิลด์และแอททริบิวต์อ้างถึงส่วนประกอบโครงสร้างของตารางประเภทแถวและชนิดที่มีโครงสร้างตามลำดับในแบบอะนาล็อก เนื่องจากโครงสร้างของตารางประกอบด้วยหนึ่งคอลัมน์ขึ้นไปดังนั้นโครงสร้างของชนิดแถวจะประกอบด้วยเขตข้อมูลอย่างน้อยหนึ่งรายการและของประเภทโครงสร้างที่มีโครงสร้างอย่างน้อยหนึ่งแอตทริบิวต์ องค์ประกอบโครงสร้างทั้งหมดไม่ว่าจะเป็นคอลัมน์, เขตข้อมูล, หรือแอตทริบิวต์เป็นชื่อหลักที่จับคู่กับประเภทที่ประกาศไว้

และหลังจากนั้น:

ฟิลด์ F อธิบายโดยอธิบายฟิลด์ ตัวบอกฟิลด์ประกอบด้วย:
- ชื่อของฟิลด์
- ตัวบ่งชี้ชนิดข้อมูลของชนิดที่ประกาศของ F
- ตำแหน่งลำดับของ F ภายในประเภทแถวที่มีเพียง

ตรงกันข้ามกับคอลัมน์นี้ซึ่งถูกกำหนดเป็น:

คอลัมน์ C อธิบายโดยบ่งคอลัมน์ ตัวระบุคอลัมน์รวมถึง:
- ชื่อของคอลัมน์
- ไม่ว่าชื่อของคอลัมน์จะเป็นชื่อที่ขึ้นกับการนำไปใช้งาน
- หากคอลัมน์อ้างอิงโดเมนดังนั้นชื่อของโดเมนนั้น มิฉะนั้นตัวบ่งชี้ชนิดข้อมูลของชนิดที่ประกาศของ C
- ค่าของถ้ามีของ C.
- คุณสมบัติความสามารถในการ null ของ C.
- ตำแหน่งลำดับของ C ภายในตารางที่มีมัน
... (และอื่น ๆ)

จากนั้นอีกครั้งในภายหลังเมื่อมีการแนะนำตาราง:

ตารางคือชุดของแถวที่มีหนึ่งคอลัมน์ขึ้นไป แถวคือค่าของประเภทแถว ทุกแถวของตารางเดียวกันมีประเภทแถวเดียวกัน ค่าของ i-TH ฟิลด์ของแถวในตารางทุกคุ้มค่าของ i-TH คอลัมน์ของแถวนั้นในตาราง แถวคือหน่วยข้อมูลที่เล็กที่สุดที่สามารถแทรกลงในตารางและลบออกจากตาราง

(เน้นที่เหมือง) ดูเหมือนว่าจะสนับสนุนสิ่งที่คุณเขียนในคำถาม: คอลัมน์เฉพาะของแถวที่ระบุ


6

และเทวดากี่คนสามารถเต้นไปรอบ ๆ หัวเข็มหมุดได้?

บุคคลที่แก้ไขคุณสามารถแก้ไขตัวเองได้

  • ตาราง = ความสัมพันธ์

  • แถว = Tuple

  • คอลัมน์ = คุณสมบัติ

  • โดเมน = ประเภทข้อมูล

ดูรายการวิกิพีเดียในฐานข้อมูลเชิงสัมพันธ์ที่นี่

ฉันทำงานกับสายการบินและคำว่า "เที่ยวบิน" สามารถใช้ได้สามวิธีขึ้นอยู่กับว่าคุณกำลังพูดคุยกับนักบิน / พนักงานต้อนรับบนเครื่องบินวิศวกรหรือการตลาด

  • นักบิน / ผู้เข้าร่วม: "เที่ยวบิน" ถูกออกและกลับจากฐาน (เช่นสอง Take-offs และสองเพลย์),
  • วิศวกร: เครื่องบินขึ้น - ลงและลงจอดหนึ่งอาจเป็นทดสอบซ่อมฝึกอบรม (เช่นสนามบินหนึ่งกลับไปที่สนามบินเดียวกัน) หรือ "ขา" คือสนามบินหนึ่งไปยังอีกสนามบินหนึ่ง - อะไร "พลเรือน" จะเรียกเที่ยวบินตามปกติ ใน "ฉันกำลังจะกลับบ้านในวันพรุ่งนี้")

  • การตลาด: ชุดข้อมูล "เที่ยวบิน" หกเดือน (ตามฤดูกาลหรือนอกฤดู) ของ / เที่ยวบินจาก / ไปยังสนามบินหนึ่ง ๆ ในบริบทของสัญญา

การเปรียบเทียบสเปรดชีตนั้นดีเกินพอสำหรับกรณี 99.99% แม้ในคำพูดทางเทคนิคที่สมเหตุสมผล (ยกเว้นกรณีหนึ่งเป็นศาสตราจารย์ด้านพีชคณิตเชิงสัมพันธ์) คนที่แก้ไขคุณใช้คำว่า "ใคร" ถูกต้องหรือไม่? 99.99% ของคนไม่ได้และมันก็ไม่สำคัญ


2

ฉันมักจะใช้ "ฟิลด์" และ "คอลัมน์" แทนกันได้มากขึ้นเมื่อเร็ว ๆ นี้มีแนวโน้มที่จะ "คอลัมน์" ฉันไม่เคยได้ยินคำว่า "ฟิลด์" เพียงอย่างเดียวเพื่อระบุว่า "ข้อมูล" ฉันไม่เคยได้ยินคำว่า "attribute" เพื่อระบุ "field" หรือ "column" คอลัมน์ / ฟิลด์มีแอททริบิวต์ซึ่งสามารถเข้าถึงได้ผ่าน FieldInfo Class เช่น

ฉันเชื่อว่า "คอลัมน์" เป็นเพียงวิวัฒนาการของคำศัพท์ เดสก์ท็อป DB (xBASE, MSAccess) โดยทั่วไปจะใช้ "field" M204ใช้ "field" คำศัพท์ "ฟิลด์" นี้ถูกนำไปใช้กับ MSOffice xml และอื่น ๆ เอกสารสำหรับ Oracle (จะไม่ให้ฉันโพสต์ลิงก์เพิ่มเติมขออภัย) และ MSSQL ใช้ "field" และ "คอลัมน์" สลับกันได้ตลอด Sybase (ตอนนี้เป็น บริษัท SAP) ส่วนใหญ่ใช้ "คอลัมน์" แต่บางครั้ง "ฟิลด์" ในเอกสารประกอบ

ตราบใดที่เวิร์กกรุ๊ปของคุณเห็นด้วยกับคำใดคำหนึ่งมันก็ไม่สำคัญ มันเป็นซินโดรม "กุหลาบด้วยชื่ออื่น"


1
คุณยังไม่เคยได้ยิน (หรืออ่าน ) คำว่า "attribute", "tuple", "ญาติ"?
ypercubeᵀᴹ

@ypercube: บางที GDD หมายถึงในบริบทของการพัฒนาแบบวันต่อวัน
siride

2

ดังนั้นฉันจึงรู้ว่านี่เป็นคำถามเก่า แต่เป็นสิ่งที่ฉันได้ยินบ่อยครั้ง สิ่งที่ฉันทำมันมาจากการมีส่วนร่วมของทีมข้อมูลของเรากับทีมพัฒนาของเรา นักพัฒนาซอฟต์แวร์มีเขตข้อมูลภายในระเบียนที่แสดงบนหน้าจอและเขตข้อมูลเหล่านั้นมีข้อมูลที่สามารถแมปไปยังคอลัมน์ที่มีแถวที่ระบุได้บ่อย อย่างไรก็ตามในหลายกรณีวิธีการเชิงสัมพันธ์ที่ใช้ในการเข้าถึงข้อมูลสามารถแก้ไขสิ่งที่เกิดขึ้นบนหน้าจอเฉพาะในฟิลด์เฉพาะ

ฉันบันทึกเป็นการแสดงค่าปัจจุบันที่ข้อมูลส่งมอบ เมื่อเวลาผ่านไปโดยค่าเหล่านั้นอาจและอาจจะเปลี่ยนดังนั้นบันทึกการเปลี่ยนแปลงด้วย ข้อมูลที่สนับสนุนสิ่งที่เป็นอยู่ในปัจจุบันและเวลาที่กำหนดสามารถจัดเก็บในชุดตารางได้อย่างง่ายดาย ความสัมพันธ์ระหว่างข้อมูลจะเป็นตัวกำหนดความหมายที่ทำขึ้นในเวลาใดก็ตาม

ตรรกะที่ได้มาจากเขตข้อมูลเป็นสิ่งที่สามารถเปลี่ยนแปลงได้ตลอดเวลา ตัวอย่างเช่นพนักงานได้รับการว่าจ้างเป็น Susan Jones และเธอได้รับการว่าจ้างเมื่อวันที่ 12/01/2010 ในฐานะพนักงานขายในร้าน # 101 ซึ่งรายงานให้ Bill Anderson เป็นผู้จัดการร้าน นี่เป็น บริษัท ที่ก้าวหน้าพวกเขายังมีที่ปรึกษาให้กับพนักงานแต่ละคน ที่ปรึกษาของ Susan คือ Mary Phillips Mary Phillips เป็นผู้จัดการร้านค้า แต่เธอยังเป็นผู้จัดการประจำภูมิภาคสำหรับร้านค้า Susan ทำงานในวันที่ 11/10/2011 Susan ได้รับการเลื่อนตำแหน่งให้เป็นผู้จัดการร้านค้า เราไม่รู้ว่าเกิดอะไรขึ้นกับบิล แต่ซูซานตอนนี้เป็นผู้จัดการร้าน

เรามีตารางพนักงานที่มีชื่อหมายเลขวันที่จ้างตำแหน่งและที่ตั้ง

เรามีตารางผู้ให้คำปรึกษาที่มีหมายเลขพนักงานสำหรับผู้ให้คำปรึกษาและพนักงานที่พวกเขาให้คำปรึกษารวมทั้งวันที่อธิบายจุดเริ่มต้นและจุดสิ้นสุดของความสัมพันธ์ผู้ให้คำปรึกษา

เรามีตารางภูมิภาคที่มีชื่อสำหรับภูมิภาคและหมายเลขผู้จัดการที่ได้รับมอบหมาย

เรามีตารางที่ตั้งอีกแห่งหนึ่งซึ่งมีที่อยู่คำอธิบายภูมิภาคและหมายเลขผู้จัดการ

ฉันหน้าจอที่แสดงข้อมูลร้านค้าอาจมีฟิลด์สำหรับผู้จัดการร้านค้า ค่าสำหรับผู้จัดการร้านไม่ใช่เขตข้อมูลฐานข้อมูล แต่เป็นค่าที่คำนวณได้ซึ่งสามารถเปลี่ยนแปลงได้ตลอดเวลา ผู้จัดการของบุคคลก็สามารถเปลี่ยนแปลงได้เช่นกัน ข้อมูลที่สนับสนุนมันยังคงถูกเก็บไว้ในคอลัมน์ แต่ความสัมพันธ์ระหว่างคอลัมน์มีการเปลี่ยนแปลงและเมื่อประกอบเพื่อวัตถุประสงค์เฉพาะกลายเป็นเขตข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.