Cột vs Trường: tôi đã sử dụng các thuật ngữ này không chính xác?


20

Tôi cảm thấy xấu hổ ở đây, tôi đã luôn sử dụng thuật ngữ "cột" và "trường" hoàn toàn thay thế cho nhau, điều này gần đây đã gây ra một số nhầm lẫn trong một cuộc thảo luận kỹ thuật.

Tuy nhiên, tôi được cho biết rằng điều này không chính xác, rằng nó phải như vậy (dịch từng thuật ngữ thành thuật ngữ bảng tính, bỏ qua các loại dữ liệu và tất cả các nội dung khác làm cho cơ sở dữ liệu trở nên hữu ích):

  • Cột cơ sở dữ liệu: giống như cột bảng tính
  • Bản ghi cơ sở dữ liệu: như một hàng bảng tính
  • Trường cơ sở dữ liệu: như "ô" bảng tính (một cột cụ thể của một hàng cụ thể)

Thê nay đung không? Tôi có thể đã thề rằng cột và trường được sử dụng thay thế cho nhau nhiều hơn thế. Tôi chắc chắn đã được.

Vì vậy, chúng tôi không thêm các trường vào một bảng, chúng tôi thêm các cột vào một bảng và các trường chỉ có liên quan khi nói về dữ liệu trong một bản ghi?

Những suy nghĩ khác về cột vs lĩnh vực?

Chỉnh sửa: để làm rõ, bối cảnh hiện tại là MS SQL Server. Nền tảng của tôi trước máy chủ SQL là MS Access, có thể ảnh hưởng đến việc tôi sử dụng các thuật ngữ này.


Đối với một số bối cảnh khác: sự nhầm lẫn nằm trong phần bình luận của một bài viết SO khác: stackoverflow.com/questions/1398453/
Kẻ


Với Postgres, điều quan trọng là phải phân biệt điều này. Một hàng đơn có thể chứa nhiều bản ghi. Và một cột có thể có nhiều trường (trong một bản ghi)
a_horse_with_no_name

Câu trả lời:


31

Lý thuyết cơ sở dữ liệu quan hệ không bao gồm việc sử dụng từ trường. Tiến sĩ EF Codd, người đã viết một loạt các bài báo cung cấp cơ sở lý thuyết cho RDBMS không bao giờ sử dụng thuật ngữ này. Bạn có thể đọc bài báo bán kết năm 1970 của anh ấy Một mô hình dữ liệu quan hệ cho các ngân hàng dữ liệu chia sẻ lớn nếu bạn muốn kiểm tra.

Các thuật ngữ như Tên miền, Bảng, Thuộc tính, Khóa và Tuple được sử dụng. Một lý do cho điều này là các bài báo của ông chủ yếu liên quan đến đại số quan hệ và cách thức triển khai cụ thể sẽ xác định một bảng trong cơ sở dữ liệu không được Codd coi là quan trọng. Các nhà cung cấp sẽ thịt mà ra sau. Mọi người cũng phải hiểu rằng trong lịch sử, RDBMS đã phát triển từ các cơ sở dữ liệu mạng và phân cấp hiện có trước đó, VÀ hoạt động bên trong của RDMBS vẫn phải liên quan đến tổ chức và lưu trữ dữ liệu.

Trong sử dụng phổ biến và bạn có thể dễ dàng xác minh điều này bằng cách thực hiện một chút thao tác, Trường và cột cùng một thứ.

Cơ sở dữ liệu PC như DBase, Access và Filemaker thường sử dụng "trường" thay vì "cột". "Thuộc tính" là một thuật ngữ khác có thể được sử dụng thay thế cho nhau.

Ví dụ: đây là một liên kết đến hướng dẫn sử dụng MS Access về việc thêm " trường " vào bảng. Rõ ràng để thấy rằng trong MS Access, một "trường" tương đương với một "cột".

Điều tương tự cũng xảy ra với Dbase và Filemaker Pro.

Đôi khi, mọi người sẽ coi một giá trị cụ thể trong một hàng cụ thể là "trường" hoặc đúng hơn là "giá trị trường" nhưng điều đó không làm cho việc sử dụng "trường" khi đề cập đến khái niệm cột hoặc tương đương cột không chính xác. Điều này không có xu hướng gây ra một mức độ nhầm lẫn bởi vì mọi người đã sử dụng "lĩnh vực" để có nghĩa là những thứ khác nhau trong nhiều năm. Trong lý thuyết quan hệ - một giá trị nguyên tử duy nhất được gọi là "Datum".

Nếu ai đó nói rằng "trường" là một giá trị trong cơ sở dữ liệu quan hệ và không giống như cột, thì đó là ý kiến ​​của họ, vì "trường" không phải là một phần của ngôn ngữ cơ sở dữ liệu quan hệ. Chúng không đúng cũng không sai, tuy nhiên, trong toàn bộ thế giới cơ sở dữ liệu, trường thường được sử dụng để có nghĩa là cột.

Như đã nói, các dự án và nhóm thường phải tìm hiểu cách họ muốn sử dụng thuật ngữ cụ thể trong dự án để tránh nhầm lẫn.

Bạn không sai, nhưng bạn cũng có thể quyết định chỉ đơn giản là đi theo quy ước đang được sử dụng hoặc tránh sử dụng trường từ hoàn toàn có lợi cho "cột". Với cơ sở dữ liệu quan hệ, "Bảng" và "Cột" là các khối xây dựng tồn tại trong DDL và tốt nhất là chỉ sử dụng các thuật ngữ đó và tránh "trường" không được sử dụng, cũng không được xác định rõ ràng.


Vâng, nền tảng có thể có liên quan, tôi chắc chắn các nhà phát triển khác nhau trên thực tế có thể sử dụng các thuật ngữ hơi khác nhau. Trong trường hợp cụ thể của tôi, đây là MS SQL Server, nếu có vấn đề.
BradC

Những người như Joe Celko có xu hướng không đồng ý rằng các trường và cột là cùng một thứ.
a_horse_with_no_name

3
Tôi muốn giới thiệu sách của Joe cho bất kỳ ai quan tâm đến thực tiễn RDBMS. Gặp anh ta vài lần, điều đó không làm tôi ngạc nhiên rằng anh ta sẽ hết sức ủng hộ để tránh sự nhầm lẫn gây ra bởi việc sử dụng trường có nghĩa là những điều khác nhau. Điều đó không thay đổi lịch sử của thuật ngữ và thực tế là mọi người đã sử dụng "trường" cho cột trong cơ sở dữ liệu trước nhiệm vụ của mình để ngăn mọi người áp dụng thuật ngữ cơ sở dữ liệu PC.
gview

Đôi khi cùng một nhà cung cấp có thể mang lại một sự nhầm lẫn cho thuật ngữ. Ví dụ: Microsoft đã nêu ở đây "Một cột là tập hợp các ô được xếp theo chiều dọc trong một bảng. Trường là một thành phần trong đó một phần thông tin được lưu trữ, chẳng hạn như trường Đã nhận. Thông thường, một cột trong bảng chứa các giá trị của một lĩnh vực duy nhất. ". Tất nhiên, bối cảnh ở đây là Outlook, tuy nhiên mọi người có thể bị ảnh hưởng bởi tuyên bố đó khá dễ dàng. msdn.microsoft.com/en-us/l
Library / office / ff866450.aspx

8

SQL cũ hơn : 92 được gọi fieldslà các thành phần của các mục datetime:

"Các trường trong các mục thời gian", chỉ định các trường có thể tạo thành giá trị thời gian ngày; một giá trị thời gian được tạo thành từ một tập hợp con của các trường đó

Các lĩnh vực ở đây là năm, tháng, v.v ... và thuật ngữ fieldnày dường như không có ý nghĩa nào khác trong phần còn lại của tài liệu.

Tiêu chuẩn SQL: 2003 mới hơn có điều này:

Cột, trường và thuộc tính

Các thuật ngữ cột, trường và thuộc tính đề cập đến các thành phần cấu trúc của bảng, loại hàng và loại có cấu trúc, tương ứng, theo kiểu tương tự. Do cấu trúc của bảng bao gồm một hoặc nhiều cột, nên cấu trúc của một loại hàng bao gồm một hoặc nhiều trường và của một loại có cấu trúc một hoặc nhiều thuộc tính. Mỗi thành phần cấu trúc, cho dù một cột, một trường hoặc một thuộc tính, chủ yếu là một tên được ghép nối với một kiểu khai báo.

và sau đó:

Một trường F được mô tả bởi một mô tả trường. Một mô tả trường bao gồm:
- Tên của trường.
- Bộ mô tả kiểu dữ liệu của kiểu khai báo F.
- Vị trí thứ tự của F trong loại hàng chỉ chứa nó.

Sự tương phản này với cột, được định nghĩa là:

Một cột C được mô tả bởi một mô tả cột. Một mô tả cột bao gồm:
- Tên của cột.
- Cho dù tên của cột là tên phụ thuộc vào việc thực hiện.
- Nếu cột dựa trên một tên miền, thì tên của tên miền đó; mặt khác, mô tả kiểu dữ liệu của kiểu khai báo C.
- Giá trị của, nếu có, của C.
- Đặc tính vô hiệu của C.
- Vị trí thứ tự của C trong bảng có chứa nó.
... (và hơn thế nữa)

Sau đó, một lần nữa, khi giới thiệu bảng:

Bảng là tập hợp các hàng có một hoặc nhiều cột. Một hàng là một giá trị của một loại hàng. Mỗi hàng của cùng một bảng có cùng loại hàng. Giá trị của trường thứ i của mỗi hàng trong bảng là giá trị của cột thứ i của hàng đó trong bảng . Hàng là đơn vị dữ liệu nhỏ nhất có thể được chèn vào bảng và bị xóa khỏi bảng.

(nhấn mạnh của tôi). Điều này dường như hỗ trợ những gì bạn đã viết trong câu hỏi: một cột cụ thể của một hàng cụ thể .


6

Và có bao nhiêu thiên thần có thể nhảy quanh đầu một cái ghim?

Người sửa bạn có thể tự sửa.

  • Bảng = Quan hệ

  • Hàng = Tuple

  • Cột = Thuộc tính

  • Tên miền = Kiểu dữ liệu

Xem mục Wikipedia trên cơ sở dữ liệu quan hệ ở đây .

Tôi đã làm việc cho một hãng hàng không và từ "chuyến bay" có thể được sử dụng theo ba cách khác nhau tùy thuộc vào việc bạn đang nói chuyện với phi công / tiếp viên, kỹ sư hoặc tiếp thị.

  • Phi công / tiếp viên: một "chuyến bay" đã ra và trở về từ căn cứ (tức là hai lần cất cánh và hai lần hạ cánh),
  • các kỹ sư: một lần cất cánh và một lần hạ cánh, có thể là thử nghiệm, sửa chữa, huấn luyện (tức là một sân bay trở lại cùng một sân bay) hoặc một "chặng", tức là từ sân bay này đến sân bay khác - thứ mà "thường dân" thường gọi là chuyến bay, như trong "Tôi sẽ bắt chuyến bay về nhà vào ngày mai"),

  • tiếp thị: một loạt "chuyến bay" kéo dài sáu tháng (thường là theo mùa hoặc trái vụ) từ / đến một sân bay nhất định trong bối cảnh hợp đồng.

Sự tương tự bảng tính là quá đủ tốt cho 99,99% các trường hợp, ngay cả trong bài phát biểu kỹ thuật hợp lý (trừ khi một giáo sư về đại số quan hệ). Người sửa lỗi có sử dụng từ "ai" một cách chính xác không? 99,99% mọi người không và điều đó thực sự không quan trọng.


2

Tôi thường sử dụng "trường" và "cột" thay thế cho nhau, gần đây có xu hướng về "cột". Tôi chưa nghe thấy thuật ngữ "trường" một mình để chỉ "dữ liệu". Tôi cũng chưa nghe thấy thuật ngữ "thuộc tính" để chỉ "trường" hoặc "cột". Ví dụ, Cột / Trường các thuộc tính, có thể truy cập thông qua Lớp FieldInfo.

Tôi tin rằng "cột" chỉ đơn giản là một sự phát triển của thuật ngữ. DB máy tính để bàn (xBASE, MSAccess) thường sử dụng "trường". M204 sử dụng "trường". Thuật ngữ "lĩnh vực" này đã được đưa vào MSOffice xml và các thuật ngữ khác. Các tài liệu cho Oracle (nó sẽ không cho phép tôi đăng thêm bất kỳ liên kết nào, xin lỗi) và MSSQL sử dụng "trường" và "cột" thay thế cho nhau trong suốt. Sybase (hiện là công ty SAP) chủ yếu sử dụng "cột" nhưng đôi khi là "trường" trong tài liệu của mình.

Miễn là nhóm làm việc của bạn đồng ý với một thuật ngữ, nó không thành vấn đề. Đó là một hội chứng "hoa hồng bởi bất kỳ tên nào khác".


1
Bạn chưa nghe (hoặc đọc ) các thuật ngữ "thuộc tính", "tuple", "quan hệ"?
ypercubeᵀᴹ

@ypercube: có lẽ GDD có nghĩa là trong bối cảnh phát triển hàng ngày.
siride

2

Vì vậy, tôi nhận ra đây là một câu hỏi cũ nhưng nó là một câu hỏi tôi thường nghe. Tôi nhận nó xuất phát từ sự tham gia của nhóm dữ liệu của chúng tôi với nhóm phát triển của chúng tôi. Các nhà phát triển chắc chắn có các trường trong các bản ghi được hiển thị trên màn hình và các trường đó chứa dữ liệu thường có thể được ánh xạ tới các cột với các hàng cụ thể. Tuy nhiên, trong nhiều trường hợp, phương pháp quan hệ được sử dụng để truy cập dữ liệu có thể thay đổi những gì kết thúc trên một màn hình cụ thể trong một trường cụ thể.

Tôi ghi lại là một đại diện của giá trị hiện tại mà dữ liệu cung cấp. Khi thời gian trôi qua, những giá trị đó có thể và có thể sẽ thay đổi, vì vậy bản ghi cũng thay đổi. Dữ liệu để hỗ trợ hiện tại và dữ liệu tại thời điểm đã cho có thể dễ dàng được lưu trữ trong một tập hợp các bảng. Các mối quan hệ giữa các dữ liệu xác định ý nghĩa tạo nên hồ sơ tại bất kỳ thời điểm nào.

Logic xuất phát từ các trường là một cái gì đó có thể thay đổi theo thời gian. Ví dụ, một nhân viên được thuê là Susan Jones và cô được thuê vào ngày 12/01/2010 với tư cách là nhân viên bán hàng tại cửa hàng # 101, người báo cáo cho Bill Anderson làm quản lý cửa hàng. Đây là một công ty tiến bộ, họ cũng có một người cố vấn được chỉ định cho mỗi nhân viên. Cố vấn của Susan là Mary Phillips. Mary Phillips là quản lý cửa hàng nhưng cô cũng là quản lý khu vực cho cửa hàng mà Susan làm việc. Vào ngày 11/10/2011 Susan được thăng chức quản lý cửa hàng. Chúng tôi không biết chuyện gì đã xảy ra với Bill nhưng Susan bây giờ là quản lý cửa hàng.

Chúng tôi có một bảng nhân viên với tên, số, ngày thuê, vị trí và địa điểm.

Chúng tôi có một bảng cố vấn với số lượng nhân viên cho các cố vấn và nhân viên mà họ đang cố vấn cộng với các ngày mô tả sự bắt đầu và kết thúc của mối quan hệ cố vấn.

Chúng tôi có một bảng các vùng có tên cho vùng và số người quản lý được chỉ định.

Chúng tôi có một bảng vị trí khác với địa chỉ, mô tả, khu vực và số người quản lý.

Tôi màn hình hiển thị thông tin cửa hàng có thể có một trường cho người quản lý cửa hàng. Giá trị cho trình quản lý cửa hàng không phải là trường cơ sở dữ liệu nhưng nó là giá trị tính toán có thể thay đổi theo thời gian. Ngoài ra một người quản lý có thể thay đổi. Dữ liệu hỗ trợ nó vẫn được lưu trữ trong các cột nhưng mối quan hệ giữa các cột đã thay đổi và khi được lắp ráp cho một mục đích cụ thể, nó trở thành một trường.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.