Kolom vs Bidang: apakah saya menggunakan istilah ini dengan salah?

20

Saya merasa agak malu di sini, saya selalu menggunakan istilah "kolom" dan "bidang" sepenuhnya secara bergantian, yang baru-baru ini menyebabkan beberapa kebingungan dalam diskusi teknis.

Namun saya diberitahu bahwa ini tidak benar, bahwa itu seharusnya (menerjemahkan setiap istilah ke dalam terminologi spreadsheet, mengabaikan tipe data dan semua hal lain yang membuat basis data berguna):

  • Kolom Basis Data: seperti kolom spreadsheet
  • Catatan Basis Data: seperti baris spreadsheet
  • Basis Data Basis Data: seperti "sel" spreadsheet (kolom tertentu dari baris tertentu)

Apakah ini benar? Saya bisa bersumpah bahwa kolom dan bidang digunakan lebih bergantian dari itu. Saya tentu saja.

Jadi kami tidak menambahkan bidang ke tabel, kami menambahkan kolom ke tabel, dan bidang hanya relevan saat berbicara tentang data dalam catatan?

Pikiran lain pada kolom vs bidang?

Edit: untuk memperjelas, konteks saat ini adalah MS SQL Server. Latar belakang saya sebelum SQL server adalah MS Access, yang mungkin mempengaruhi penggunaan istilah-istilah ini.

BradC
sumber
Untuk beberapa konteks lebih lanjut: kebingungan ada di bagian komentar dari pos SO yang berbeda: stackoverflow.com/questions/1398453/…
BradC
3
Mengenai Baris vs Catatan
ypercubeᵀᴹ
Dengan Postgres, penting untuk membedakan ini. Satu baris dapat berisi banyak catatan. Dan satu kolom dapat memiliki beberapa bidang (di dalam catatan)
a_horse_with_no_name

Jawaban:

31

Teori basis data relasional tidak termasuk penggunaan kata Field. EF Codd, yang menulis serangkaian makalah yang memberikan dasar teoretis untuk RDBMS, tidak pernah menggunakan istilah itu. Anda dapat membaca makalah seminalinya tahun 1970, Model Relasional Data untuk Bank Data Bersama Besar jika Anda ingin memeriksanya.

Istilah seperti Domain, Tabel, Atribut, Kunci, dan Tuple digunakan. Salah satu alasan untuk ini, adalah bahwa makalahnya sebagian besar berkaitan dengan aljabar relasional, dan cara implementasi tertentu akan mendefinisikan tabel dalam database tidak dianggap oleh Codd sebagai penting. Vendor akan menyempurnakannya nanti. Orang-orang juga harus memahami bahwa secara historis, RDBMS berevolusi dari database hierarkis dan jaringan yang ada sebelum mereka, DAN cara kerja RDMBS yang masih harus berkaitan dengan organisasi data dan penyimpanan.

Umum digunakan, dan Anda dapat dengan mudah memverifikasi ini dengan hanya melakukan sedikit googling, Fields dan kolom yang hal yang sama.

Database PC seperti DBase, Access, dan Pembuat Film biasanya menggunakan "bidang" alih-alih "kolom". "Atribut" adalah istilah lain yang dapat digunakan secara bergantian.

Misalnya, inilah tautan ke manual MS Access tentang cara menambahkan " bidang " ke tabel. Jelas untuk melihat bahwa di MS Access sebuah "bidang" sama dengan "kolom".

Hal yang sama berlaku untuk Dbase dan Filemaker Pro.

Kadang-kadang orang akan merujuk ke nilai tertentu di baris tertentu sebagai "bidang" atau lebih tepatnya "nilai bidang" tetapi itu tidak membuat penggunaan "bidang" ketika merujuk ke kolom atau konsep setara kolom-kolom salah. Ini memang cenderung menyebabkan tingkat kebingungan karena orang telah menggunakan "bidang" untuk mengartikan hal yang berbeda selama bertahun-tahun. Dalam teori relasional - nilai atom tunggal disebut sebagai "Datum".

Jika seseorang menyatakan bahwa "bidang" adalah satu nilai dalam basis data relasional dan tidak sama dengan kolom, itu adalah pendapat mereka, karena "bidang" bukan bagian dari basis data relasional. Mereka tidak benar atau salah, namun, di seluruh dunia basis data, bidang lebih sering digunakan untuk berarti kolom.

Dengan mengatakan itu, proyek dan tim sering harus bekerja memahami bagaimana mereka ingin menggunakan terminologi tertentu dalam proyek untuk menghindari kebingungan.

Anda tidak salah, tetapi Anda juga mungkin memutuskan untuk hanya mengikuti konvensi yang sedang digunakan, atau menghindari menggunakan bidang kata sama sekali demi "kolom". Dengan database relasional, "Tabel" dan "Kolom" adalah blok bangunan yang ada di DDL dan yang terbaik adalah hanya menggunakan istilah-istilah itu dan menghindari "bidang" yang tidak digunakan, atau didefinisikan dengan jelas.

gview
sumber
Ya, platform mungkin relevan, saya yakin pengembang yang berbeda mungkin menggunakan istilah yang sedikit berbeda. Dalam kasus khusus saya, ini adalah MS SQL Server, jika itu penting.
BradC
Orang-orang seperti Joe Celko cenderung tidak setuju bahwa bidang dan kolom adalah hal yang sama.
a_horse_with_no_name
3
Saya akan merekomendasikan buku-buku Joe kepada siapa pun yang tertarik dengan praktik RDBMS. Setelah bertemu dengannya beberapa kali, tidak mengejutkan saya bahwa ia akan dengan tegas mendukung menghindari kebingungan yang disebabkan oleh penggunaan lapangan untuk mengartikan hal-hal yang berbeda. Itu tidak mengubah sejarah istilah, dan fakta bahwa orang menggunakan "bidang" untuk kolom dalam database yang mendahului upayanya untuk menghentikan orang dari mengadopsi terminologi basis data PC.
gview
Kadang-kadang vendor yang sama dapat membawa kebingungan pada terminologi. Misalnya, Microsoft menyatakan di sini "Kolom adalah kumpulan sel yang disejajarkan secara vertikal dalam sebuah tabel. Bidang adalah elemen tempat satu informasi disimpan, seperti bidang yang Diterima. Biasanya, kolom dalam tabel berisi nilai-nilai dari satu bidang. " Tentu saja, konteksnya di sini adalah Outlook, namun orang mungkin mudah dipengaruhi oleh pernyataan seperti itu. msdn.microsoft.com/en-us/library/office/ff866450.aspx
drumsta
8

SQL yang lebih lama : 92 disebut fieldssebagai komponen item datetime:

"Fields in datetime items", menentukan bidang yang dapat membentuk nilai waktu tanggal; nilai datetime terdiri dari subset dari bidang-bidang tersebut

Kolom di sini adalah tahun, bulan, dan seterusnya ... dan istilahnya field tersebut sepertinya tidak memiliki arti lain di dalam dokumen ini.

Standar SQL: 2003 yang lebih baru memiliki ini:

Kolom, bidang, dan atribut

Kolom istilah, bidang, dan atribut merujuk ke komponen struktural dari tabel, tipe baris, dan tipe terstruktur, masing-masing, secara analog. Karena struktur tabel terdiri dari satu atau lebih kolom, maka struktur tipe baris terdiri dari satu atau beberapa bidang dan tipe tipe terstruktur satu atau lebih atribut. Setiap elemen struktural, apakah kolom, bidang, atau atribut, pada dasarnya adalah nama yang dipasangkan dengan tipe yang dideklarasikan.

dan kemudian:

Sebuah lapangan F dijelaskan oleh deskriptor lapangan. Deskriptor bidang mencakup:
- Nama bidang.
- Deskriptor tipe data dari tipe F. yang dideklarasikan
- Posisi ordinal F dalam tipe baris yang hanya berisi itu.

Ini kontras dengan kolom, yang didefinisikan sebagai:

Sebuah kolom C dijelaskan oleh deskriptor kolom. Deskriptor kolom meliputi:
- Nama kolom.
- Apakah nama kolom adalah nama yang tergantung pada implementasi.
- Jika kolom didasarkan pada domain, maka nama domain itu; jika tidak, deskriptor tipe data dari tipe C. yang dinyatakan
- Nilai, jika ada, C.
- Karakteristik nullability dari C.
- Posisi ordinal C dalam tabel yang berisi itu.
... (dan banyak lagi)

Kemudian nanti lagi, saat memperkenalkan tabel:

Tabel adalah kumpulan baris yang memiliki satu atau lebih kolom. Baris adalah nilai tipe baris. Setiap baris dari tabel yang sama memiliki tipe baris yang sama. Nilai bidang ke-i dari setiap baris dalam tabel adalah nilai kolom ke-ke-1 dari baris tersebut di dalam tabel . Baris adalah unit data terkecil yang dapat dimasukkan ke dalam tabel dan dihapus dari tabel.

(penekanan milikku). Ini sepertinya mendukung apa yang Anda tulis dalam pertanyaan: kolom spesifik dari baris tertentu .

Daniel Vérité
sumber
6

Dan berapa banyak malaikat yang bisa menari di sekitar kepala pin?

Orang yang mengoreksi Anda sendiri dapat dikoreksi.

  • Tabel = Relasi

  • Row = Tuple

  • Kolom = Atribut

  • Domain = Tipe Data

Lihat entri Wikipedia tentang database relasional di sini .

Saya bekerja untuk maskapai penerbangan dan kata "penerbangan" dapat digunakan dalam tiga cara berbeda tergantung pada apakah Anda berbicara dengan pilot / pramugari, insinyur atau pemasaran.

  • pilot / petugas: "penerbangan" keluar dan kembali dari pangkalan (yaitu dua lepas landas dan dua pendaratan),
  • insinyur: satu lepas landas dan satu pendaratan, bisa menjadi tes, perbaikan, pelatihan (yaitu satu bandara kembali ke bandara yang sama) atau "kaki", yaitu satu bandara ke bandara lain - yang biasa disebut "warga sipil" sebagai penerbangan, seperti di "Saya akan pulang besok pagi"),

  • pemasaran: serangkaian "penerbangan" enam bulan (biasanya di luar atau di luar musim) dari / ke bandara tertentu dalam konteks kontrak.

Analogi spreadsheet lebih dari cukup baik untuk 99,99% kasus, bahkan dalam pidato teknis yang wajar (kecuali seseorang adalah profesor aljabar relasional). Apakah orang yang mengoreksi Anda menggunakan kata "siapa" dengan benar? 99,99% orang tidak dan itu benar-benar tidak masalah.

Vérace
sumber
2

Saya biasanya menggunakan "bidang" dan "kolom" secara bergantian, baru-baru ini cenderung ke arah "kolom". Saya belum mendengar istilah "bidang" sendirian untuk menunjukkan "data". Saya juga belum pernah mendengar istilah "atribut" untuk menunjukkan "bidang" atau "kolom". Kolom / Kolom memiliki atribut, dapat diakses melalui Kelas FieldInfo misalnya.

Saya percaya "kolom" hanyalah evolusi dari terminologi. Desktop DB (xBASE, MSAccess) umumnya menggunakan "bidang". M204 menggunakan "bidang". Terminologi "bidang" ini dibawa ke dalam MSOffice xml dan lainnya. Dokumen untuk Oracle (tidak akan membiarkan saya memposting lagi tautan, maaf) dan MSSQL menggunakan "bidang" dan "kolom" secara bergantian di seluruh. Sybase (sekarang perusahaan SAP) sebagian besar menggunakan "kolom" tetapi kadang-kadang "bidang" dalam dokumentasinya.

Selama kelompok kerja Anda menyetujui istilah, tidak masalah yang mana. Ini adalah sindrom "mawar dengan nama lain".

GDD
sumber
1
Anda belum pernah mendengar (atau membaca ) istilah "atribut", "tuple", "hubungan"?
ypercubeᵀᴹ
@ ypercube: mungkin GDD berarti dalam konteks pengembangan sehari-hari.
siride
2

Jadi saya menyadari ini adalah pertanyaan lama tetapi itu adalah pertanyaan yang sering saya dengar. Pendapat saya berasal dari keterlibatan tim data kami dengan tim pengembangan kami. Pengembang pasti memiliki bidang dalam catatan yang ditampilkan di layar dan bidang tersebut berisi data yang sering dapat dipetakan ke kolom dengan baris tertentu. Namun, dalam banyak kasus metode relasional yang digunakan untuk mengakses data dapat mengubah apa yang berakhir pada layar tertentu di bidang tertentu.

Saya mencatat adalah representasi dari nilai saat ini yang dikirimkan data. Seiring berjalannya waktu nilai-nilai itu mungkin dan mungkin akan berubah sehingga catatan juga berubah. Data untuk mendukung apa itu sekarang dan apa itu pada waktu tertentu dapat dengan mudah disimpan dalam satu set tabel. Hubungan antara data menentukan makna yang membentuk catatan pada waktu tertentu.

Logika yang menurunkan bidang adalah sesuatu yang dapat berubah seiring waktu. Sebagai contoh, seorang karyawan dipekerjakan sebagai Susan Jones dan dia dipekerjakan pada 12/01/2010 sebagai petugas penjualan di toko # 101 yang melapor kepada Bill Anderson sebagai manajer toko. Sebagai perusahaan yang progresif, mereka juga memiliki mentor yang ditugaskan untuk setiap karyawan. Mentor Susan adalah Mary Phillips. Mary Phillips adalah manajer toko tetapi dia juga manajer regional untuk toko tempat Susan bekerja. Pada 11/10/2011 Susan dipromosikan menjadi manajer toko. Kami tidak tahu apa yang terjadi pada Bill tetapi Susan sekarang adalah manajer toko.

Kami memiliki daftar karyawan dengan nama, nomor, tanggal perekrutan, posisi, dan lokasi.

Kami memiliki tabel mentor dengan nomor karyawan untuk mentor dan karyawan yang mereka bimbing ditambah tanggal yang menggambarkan awal dan akhir hubungan mentor.

Kami memiliki tabel wilayah dengan nama untuk wilayah dan nomor manajer yang ditugaskan.

Kami memiliki tabel lokasi lain dengan alamat, deskripsi, wilayah, dan nomor manajer.

Layar saya yang menampilkan informasi toko mungkin memiliki bidang untuk manajer toko. Nilai untuk manajer toko bukan bidang basis data tetapi nilai yang dapat dihitung yang dapat berubah seiring waktu. Manajer seseorang juga bisa berubah. Data yang mendukungnya masih disimpan dalam kolom tetapi hubungan antara kolom telah berubah dan ketika dirakit untuk tujuan tertentu, itu menjadi bidang.

HogHunter
sumber