AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 65609
Accepted
BradC
BradC
Asked: 2014-05-22 08:28:10 +0800 CST2014-05-22 08:28:10 +0800 CST 2014-05-22 08:28:10 +0800 CST

列与字段:我是否错误地使用了这些术语?

  • 772

我觉得有点尴尬,我一直把“列”和“字段”这两个词完全互换使用,这在最近的一次技术讨论中引起了一些混乱。

不过,有人告诉我,这是不正确的,它应该是(将每个术语翻译成电子表格术语,忽略数据类型和所有其他使数据库有用的东西):

  • 数据库列:像电子表格列
  • 数据库记录:像电子表格行
  • 数据库字段:就像电子表格“单元格”(特定行的特定列)

这是正确的吗?我本可以发誓,列和字段的使用比这更可互换。我当然去过。

所以我们不向表中添加字段,我们向表中添加列,并且字段仅在谈论记录中的数据时才相关?

关于列与字段的其他想法?

编辑:澄清一下,当前上下文是 MS SQL Server。我在 SQL Server 之前的背景是 MS Access,这可能会影响我对这些术语的使用。

terminology fields
  • 5 5 个回答
  • 30728 Views

5 个回答

  • Voted
  1. Best Answer
    gview
    2014-05-22T09:50:45+08:002014-05-22T09:50:45+08:00

    关系数据库理论不包括字段一词的使用。为 RDBMS 提供理论基础的系列论文的作者 EF Codd 博士从未使用过该术语。如果您想查看, 可以阅读他在 1970 年发表的开创性论文A Relational Model of Data for Large Shared Data Banks 。

    使用了域、表、属性、键和元组等术语。原因之一是他的论文主要关注关系代数,而 Codd 认为特定实现在数据库中定义表的方式并不重要。供应商稍后会充实这一点。人们还必须了解,从历史上看,RDBMS 是从早于它们的现有分层和网络数据库演变而来的,RDMBS 的内部工作仍然必须关注数据组织和存储。

    在常用的情况下,您只需进行一些谷歌搜索即可轻松验证这一点,字段和列是相同的。

    DBase、Access 和 Filemaker 等 PC 数据库通常使用“字段”而不是“列”。“属性”是另一个可以互换使用的术语。

    例如,这里有一个链接到 MS Access 手册中关于向表中添加“字段”的内容。很明显,在 MS Access 中,“字段”等同于“列”。

    Dbase 和 Filemaker Pro 也是如此。

    有时人们会将特定行中的特定值称为“字段”或更准确地说是“字段值”,但这不会在引用列或列等效概念时使用“字段”不正确。这确实会引起一定程度的混淆,因为多年来人们一直使用“字段”来表示不同的事物。在关系理论中——单个原子值被称为“基准”。

    如果有人说“字段”是关系数据库中的一个值并且与列不同,那是他们的观点,因为“字段”不是关系数据库白话的一部分。它们既不是对也不是错,但是,在整个数据库世界中,字段更常用于表示列。

    话虽如此,项目和团队通常必须了解他们希望如何在项目中使用特定术语以避免混淆。

    你没有错,但你也可能决定简单地遵循正在使用的约定,或者完全避免使用字段一词来支持“列”。对于关系数据库,“表”和“列”是存在于 DDL 中的构建块,最好只使用这些术语并避免未使用或未明确定义的“字段”。

    • 37
  2. Daniel Vérité
    2014-06-09T12:59:57+08:002014-06-09T12:59:57+08:00

    较旧的SQL:92被fields称为日期时间项的组件:

    “日期时间项中的字段”,指定可以构成日期时间值的字段;日期时间值由这些字段的子集组成

    这里的字段是年、月等等......并且该术语field在文档的其余部分似乎没有任何其他含义。

    较新的 SQL:2003 标准有:

    列、字段和属性

    术语列、字段和属性分别以类似的方式指代表、行类型和结构化类型的结构组件。由于表的结构由一个或多个列组成,因此行类型的结构由一个或多个字段组成,而结构化类型的结构由一个或多个属性组成。每个结构元素,无论是列、字段还是属性,主要是与声明类型配对的名称。

    然后:

    字段F由字段描述符描述。字段描述符包括:
    — 字段的名称。
    — F 的声明类型的数据类型描述符。
    — F 在仅包含它的行类型中的序号位置。

    这与列的对比,定义为:

    列C 由列描述符描述。列描述符包括:
    — 列的名称。
    — 列的名称是否是依赖于实现的名称。
    — 如果列基于域,则为该域的名称;否则,C 的声明类型的数据类型描述符。
    - C 的值,如果有的话。
    - C 的可空性特征。
    - C 在包含它的表中的序号位置。
    ... (和更多)

    稍后再介绍表格时:

    表是具有一列或多列的行的集合。行是行类型的值。同一张表的每一行都具有相同的行类型。表中每一行的第 i 个字段的值就是表中该行的第 i 列的值。行是可以插入表和从表中删除的最小数据单位。

    (强调我的)。这似乎支持您在问题中写的内容:a specific column of a specific row。

    • 11
  3. Vérace
    2014-06-06T08:14:02+08:002014-06-06T08:14:02+08:00

    又有多少天使可以绕着一根针头跳舞呢?

    纠正你的人可以自己纠正。

    • 表 = 关系

    • 行 = 元组

    • 列 = 属性

    • 域 = 数据类型

    在此处查看有关关系数据库的 Wikipedia 条目。

    我在一家航空公司工作,“飞行”这个词可以用三种不同的方式使用,具体取决于你是在与飞行员/空乘人员、工程师还是营销人员交谈。

    • 飞行员/服务员:一次“飞行”从基地进出(即两次起飞和两次着陆),
    • 工程师:一次起飞和一次降落,可以是测试、维修、训练(即一个机场返回同一个机场)或“一段”,即一个机场到另一个机场——“平民”通常称之为飞行,如在“我明天要赶回家的航班”中),

    • 营销:在合同范围内从/到给定机场的六个月(通常是旺季或淡季)系列“航班”。

    电子表格类比对于 99.99% 的情况来说已经足够好了,即使是在相当技术性的演讲中(除非是关系代数教授)。纠正你的人是否正确使用了“谁”这个词?99.99% 的人不这样做,这真的没关系。

    • 6
  4. GDD
    2014-06-07T05:08:37+08:002014-06-07T05:08:37+08:00

    我通常交替使用“字段”和“列”,最近更倾向于“列”。不过,我还没有听说过单独使用“字段”一词来表示“数据”。我也没有听说过“属性”一词来表示“字段”或“列”。列/字段具有属性,例如可通过 FieldInfo 类访问。

    我相信“列”只是术语的演变。桌面数据库(xBASE、MSAccess)通常使用“字段”。M204使用“场”。这个“领域”术语被带到了 MSOffice xml 和其他中。Oracle 的文档(它不会让我发布更多链接,抱歉)和 MSSQL 始终交替使用“字段”和“列”。Sybase(现在是一家 SAP 公司)在其文档中主要使用“列”,但有时也使用“字段”。

    只要您的工作组就一个术语达成一致,哪个术语都没有关系。这是一种“以任何其他名字命名的玫瑰”综合症。

    • 2
  5. HogHunter
    2017-06-23T05:08:01+08:002017-06-23T05:08:01+08:00

    所以我意识到这是一个老问题,但这是我经常听到的问题。我对此的看法来自我们的数据团队与我们的开发团队的参与。开发人员肯定在屏幕上显示的记录中有字段,这些字段包含的数据可以经常映射到具有特定行的列。但是,在许多情况下,用于访问数据的关系方法可能会改变特定字段中特定屏幕上的最终结果。

    我记录是数据提供的当前值的表示。随着时间的推移,这些值可能并且可能会改变,因此记录也会改变。支持现在的数据和给定时间的数据可以很容易地存储在一组表中。数据之间的关系决定了在任何给定时间构成记录的含义。

    派生字段的逻辑会随着时间而改变。例如,一名员工被聘为 Susan Jones,她于 2010 年 1 月 12 日被聘为 101 号商店的销售员,向 Bill Anderson 汇报为商店经理。这是一家进步的公司,他们还为每位员工分配了一名导师。苏珊的导师是玛丽菲利普斯。Mary Phillips 是一名商店经理,但她也是 Susan 所在商店的区域经理。2011 年 11 月 10 日,Susan 被提升为商店经理。我们不知道比尔发生了什么事,但苏珊现在是商店经理。

    我们有一张包含姓名、编号、雇用日期、职位和地点的员工表。

    我们有一个导师表,其中包含导师和他们正在指导的员工的员工编号以及描述导师关系开始和结束的日期。

    我们有一个区域表,其中包含区域名称和分配的经理编号。

    我们有另一个位置表,其中包含地址、描述、区域和经理编号。

    显示商店信息的屏幕可能有商店经理的字段。store manager 的值不是数据库字段,而是可以随时间变化的可计算值。一个人的经理也可以改变。支持它的数据仍存储在列中,但列之间的关系发生了变化,当为特定目的组合时,它就变成了一个字段。

    • 2

相关问题

  • 根据数据库完整性的数据有效性和准确性

  • 在 SQL 中,它是复合键还是复合键?

  • 什么是残差谓词?

  • “‘连接’表”是否与弱实体相同?

  • 软件工程师和 DBA [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve