Столбец против поля: правильно ли я использовал эти термины?


20

Я чувствую себя немного смущенным, я всегда использовал термины «столбец» и «поле» полностью взаимозаменяемо, что в последнее время вызывало некоторую путаницу в технических дискуссиях.

Мне сказали, однако, что это не правильно, что так и должно быть (перевод каждого термина в терминологию электронных таблиц, игнорирование типов данных и все остальное, что делает базы данных полезными):

  • Столбец базы данных: как столбец электронной таблицы
  • Запись базы данных: как строка таблицы
  • Поле базы данных: как «ячейка» электронной таблицы (определенный столбец определенной строки)

Это правильно? Я мог бы поклясться, что столбец и поле используются более взаимозаменяемо, чем это. Я конечно был.

Таким образом, мы не добавляем поля в таблицу, мы добавляем столбцы в таблицу, и поля релевантны, только когда речь идет о данных в записи?

Другие мысли о столбце против поля?

Изменить: чтобы уточнить, текущий контекст является MS SQL Server. До SQL Server я работал в MS Access, что могло повлиять на использование этих терминов.


Для дальнейшего контекста: путаница была в разделе комментариев другого поста SO: stackoverflow.com/questions/1398453/…
BradC

3
Относительно
Rows

С Postgres важно различать это. Одна строка может содержать несколько записей. И один столбец может иметь несколько полей (внутри записи)
a_horse_with_no_name

Ответы:


31

Теория реляционных баз данных не включает использование слова Field. Доктор Э. Ф. Кодд, который написал серию работ, которые обеспечивают теоретическую основу для RDBMS, никогда не использовал этот термин. Вы можете прочитать его оригинальную статью 1970 года «Реляционная модель данных для больших общих банков данных», если хотите проверить.

Используются такие термины, как домен, таблица, атрибут, ключ и кортеж. Одна из причин этого заключается в том, что его статьи были в основном посвящены реляционной алгебре, а способ, которым конкретная реализация будет определять таблицу в базе данных, не считался Коддом важным. Продавцы уточнят это позже. Люди также должны понимать, что исторически RDBMS развивались из существующих иерархических и сетевых баз данных, которые предшествовали им, И внутренняя работа RDMBS по-прежнему должна быть связана с организацией и хранением данных.

В обычном использовании, и вы можете легко проверить это, просто выполнив небольшое прибегая к помощи, поля и столбцы - это одно и то же.

Базы данных ПК, такие как DBase, Access и Filemaker, обычно используют «поле» вместо «столбец». «Атрибут» - это еще один термин, который можно использовать взаимозаменяемо.

Например, вот ссылка на руководство по MS Access по добавлению « поля » в таблицу. Понятно, что в MS Access «поле» эквивалентно «столбцу».

То же самое относится и к Dbase и Filemaker Pro.

Иногда люди будут ссылаться на конкретное значение в определенной строке как на «поле» или, точнее, на «значение поля», но это не делает использование «поля» при ссылке на столбец или понятие эквивалентного столбца некорректным. Это, как правило, вызывает определенную путаницу, потому что люди использовали «поле» для обозначения разных вещей в течение многих лет. В реляционной теории - единое атомное значение называется «датумом».

Если кто-то заявил, что «поле» - это одно значение в реляционной базе данных, а не то же самое, что столбец, это его мнение, поскольку «поле» не является частью общедоступной реляционной базы данных. Они не являются ни правильными, ни неправильными, однако во всем мире баз данных поле чаще используется для обозначения столбца.

С учетом сказанного, проектам и командам часто приходится выработать понимание того, как они хотят использовать определенную терминологию в рамках проекта, чтобы избежать путаницы.

Вы не ошибаетесь, но вы также можете решить просто согласиться с используемым соглашением или вообще не использовать слово field в пользу «column». В реляционных базах данных «Таблица» и «Столбец» являются строительными блоками, которые существуют в DDL, и лучше всего использовать те термины и избегать «поля», которое не используется и не определено четко.


Да, платформа может быть актуальной, я уверен, что разные разработчики могут использовать термины немного по-разному. В моем конкретном случае это MS SQL Server, если это имеет значение.
BradC

Такие люди, как Джо Селко, склонны не соглашаться с тем, что поля и столбцы - это одно и то же.
a_horse_with_no_name

3
Я бы порекомендовал книги Джо всем, кто интересуется практикой РСУБД. Встречаясь с ним несколько раз, меня не удивляет, что он решительно выступает за то, чтобы избежать путаницы, вызванной использованием поля для обозначения разных вещей. Это не меняет историю этого термина и тот факт, что люди использовали «поле» для столбца в базах данных, которые предшествовали его стремлению не дать людям принять терминологию баз данных ПК.
Gview

Иногда один и тот же поставщик может привести к путанице в терминологии. Например, Microsoft заявила здесь: «Столбец - это набор ячеек, выровненных по вертикали в таблице. Поле - это элемент, в котором хранится один фрагмент информации, например поле« Получено ». Обычно столбец в таблице содержит значения единое поле. Конечно, контекст здесь - Outlook, однако такое заявление может повлиять на людей довольно легко. msdn.microsoft.com/en-us/library/office/ff866450.aspx
drumsta

8

Более старый SQL: 92 упоминается fieldsкак компоненты элементов datetime:

«Поля в элементах даты и времени», указывает поля, которые могут составлять значение даты и времени; значение datetime состоит из подмножества этих полей

Поля здесь - это год, месяц и т. Д., И термин field, похоже, не имеет никакого другого значения в остальной части документа.

Более новый стандарт SQL: 2003 имеет это:

Столбцы, поля и атрибуты

Термины столбец, поле и атрибут относятся к структурным компонентам таблиц, типов строк и структурированных типов соответственно аналогичным образом. Поскольку структура таблицы состоит из одного или нескольких столбцов, структура типа строки состоит из одного или нескольких полей, а структура структурированного типа - из одного или нескольких атрибутов. Каждый структурный элемент, будь то столбец, поле или атрибут, - это прежде всего имя в паре с объявленным типом.

и позже:

Поле F описывается дескриптором поля. Дескриптор поля включает в себя:
- Имя поля.
- Дескриптор типа данных объявленного типа F.
- Порядковый номер F в типе строки, который просто содержит его.

Это контраст со столбцом, который определяется как:

Колонка С описывается дескриптором столбца. Дескриптор столбца включает в себя:
- Имя столбца.
- является ли имя столбца зависимым от реализации именем.
- если столбец основан на домене, то имя этого домена; в противном случае - дескриптор типа данных объявленного типа C.
- Значение, если таковое имеется, - C.
Характеристика обнуляемости C.
- Порядковый номер C в таблице, в которой он содержится.
... (и более)

Потом еще раз, когда вводим таблицы:

Таблица представляет собой набор строк, имеющих один или несколько столбцов. Строка - это значение типа строки. Каждая строка одной и той же таблицы имеет одинаковый тип строки. Значение i-го поля каждой строки в таблице - это значение i-го столбца этой строки в таблице . Строка - это наименьшая единица данных, которую можно вставить в таблицу и удалить из таблицы.

(акцент мой). Кажется, это подтверждает то, что вы написали в вопросе: конкретный столбец определенной строки .


6

А сколько ангелов может танцевать вокруг головы булавки?

Человек, который исправил вас, мог бы быть исправлен.

  • Таблица = отношение

  • Ряд = кортеж

  • Столбец = Атрибут

  • Домен = Тип данных

Смотрите запись в Википедии о реляционных базах данных здесь .

Я работал в авиакомпании, и слово «полет» можно было использовать тремя различными способами, в зависимости от того, разговаривали ли вы с пилотами / стюардессами, инженерами или маркетологами.

  • пилоты / обслуживающий персонал: «полет» был и обратно с базы (т.е. два взлета и две посадки),
  • инженеры: один взлет и одна посадка, может быть испытанием, ремонтом, тренировкой (то есть один аэропорт обратно в тот же аэропорт) или «ногой», то есть один аэропорт в другой - то, что «гражданские лица» обычно называют полетом, как в «Я поймаю свой рейс домой завтра»),

  • маркетинг: шестимесячная (обычно в сезон или в межсезонье) серия «рейсов» из / в данный аэропорт в контексте контракта.

Аналогия с электронными таблицами более чем достаточна для 99,99% случаев, даже в довольно технической речи (если только вы не являетесь профессором реляционной алгебры). Правильно ли использует человек, который вас исправил, слово «кого»? 99,99% людей не имеют, и это действительно не имеет значения.


2

Я обычно использую «поле» и «столбец» взаимозаменяемо, в последнее время склоняюсь к «столбец». Я не слышал термин «поле», чтобы обозначить «данные». Я также не слышал термин «атрибут» для обозначения «поля» или «столбца». Столбец / Поле имеет атрибуты, доступные, например, через класс FieldInfo.

Я считаю, что «колонна» - это просто эволюция терминологии. Настольные БД (xBASE, MSAccess) обычно используют «поле». M204 использует «поле». Эта «полевая» терминология была перенесена в MSOffice xml и другие. Документы для Oracle (из-за этого я не буду публиковать больше ссылок) и MSSQL взаимозаменяемо используют «поле» и «столбец». Sybase (в настоящее время компания SAP) преимущественно использует «столбец», но иногда «поле» в своей документации.

Пока ваша рабочая группа соглашается на срок, не имеет значения, какой. Это синдром «розы под любым другим именем».


1
Вы не слышали (или не читали ) термины «атрибут», «кортеж», «отношение»?
ypercubeᵀᴹ

@ypercube: возможно, GDD означает в контексте повседневного развития.
Сирида

2

Так что я понимаю, что это старый вопрос, но я его часто слышу. Мое мнение основано на участии нашей команды данных в нашей команде разработчиков. Разработчики определенно имеют поля в записях, которые отображаются на экранах, и эти поля содержат данные, которые часто можно сопоставить со столбцами с конкретными строками. Однако во многих случаях реляционный метод, используемый для доступа к данным, может изменить то, что заканчивается на конкретном экране в определенном поле.

I запись представляет собой текущее значение, которое доставляют данные. С течением времени эти значения могут и, вероятно, изменятся, поэтому запись тоже изменится. Данные, подтверждающие, что это сейчас и что было в данный момент, могут быть легко сохранены в виде набора таблиц. Отношения между данными определяют значения, которые составляют запись в любой момент времени.

Логика, которая выводит поля, может меняться со временем. Например, сотрудницу нанимают в качестве Сьюзен Джонс, и она была нанята 01.12.2010 в качестве продавца в магазине № 101, который подчиняется Биллу Андерсону в качестве менеджера магазина. Это прогрессивная компания, которой также назначен наставник для каждого сотрудника. Наставница Сьюзен - Мэри Филлипс. Мэри Филлипс является менеджером магазина, но она также является региональным менеджером магазина, в котором работает Сьюзен. С 11.10.2011 Сьюзан была назначена менеджером магазина. Мы не знаем, что случилось с Биллом, но Сьюзен сейчас является менеджером магазина.

У нас есть таблица сотрудников с именем, номером, датой найма, должностью и местонахождением.

У нас есть таблица наставника с номерами сотрудников для наставников и сотрудников, которых они наставляют, плюс даты, описывающие начало и конец отношений наставника.

У нас есть таблица регионов с названием региона и назначенным номером менеджера.

У нас есть другая таблица мест с адресом, описанием, регионом и номером менеджера.

На экране, отображающем информацию о магазине, может быть поле для менеджера магазина. Значение для менеджера магазина - это не поле базы данных, а вычисляемое значение, которое со временем может измениться. Также менеджер человека может измениться. Данные, которые его поддерживают, по-прежнему хранятся в столбцах, но отношения между столбцами изменились, и при сборке для конкретной цели оно становится полем.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.