我觉得有点尴尬,我一直把“列”和“字段”这两个词完全互换使用,这在最近的一次技术讨论中引起了一些混乱。
不过,有人告诉我,这是不正确的,它应该是(将每个术语翻译成电子表格术语,忽略数据类型和所有其他使数据库有用的东西):
- 数据库列:像电子表格列
- 数据库记录:像电子表格行
- 数据库字段:就像电子表格“单元格”(特定行的特定列)
这是正确的吗?我本可以发誓,列和字段的使用比这更可互换。我当然去过。
所以我们不向表中添加字段,我们向表中添加列,并且字段仅在谈论记录中的数据时才相关?
关于列与字段的其他想法?
编辑:澄清一下,当前上下文是 MS SQL Server。我在 SQL Server 之前的背景是 MS Access,这可能会影响我对这些术语的使用。
关系数据库理论不包括字段一词的使用。为 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 中的构建块,最好只使用这些术语并避免未使用或未明确定义的“字段”。
较旧的SQL:92被
fields
称为日期时间项的组件:这里的字段是年、月等等......并且该术语
field
在文档的其余部分似乎没有任何其他含义。较新的 SQL:2003 标准有:
然后:
这与列的对比,定义为:
稍后再介绍表格时:
(强调我的)。这似乎支持您在问题中写的内容:a specific column of a specific row。
又有多少天使可以绕着一根针头跳舞呢?
纠正你的人可以自己纠正。
表 = 关系
行 = 元组
列 = 属性
域 = 数据类型
在此处查看有关关系数据库的 Wikipedia 条目。
我在一家航空公司工作,“飞行”这个词可以用三种不同的方式使用,具体取决于你是在与飞行员/空乘人员、工程师还是营销人员交谈。
工程师:一次起飞和一次降落,可以是测试、维修、训练(即一个机场返回同一个机场)或“一段”,即一个机场到另一个机场——“平民”通常称之为飞行,如在“我明天要赶回家的航班”中),
营销:在合同范围内从/到给定机场的六个月(通常是旺季或淡季)系列“航班”。
电子表格类比对于 99.99% 的情况来说已经足够好了,即使是在相当技术性的演讲中(除非是关系代数教授)。纠正你的人是否正确使用了“谁”这个词?99.99% 的人不这样做,这真的没关系。
我通常交替使用“字段”和“列”,最近更倾向于“列”。不过,我还没有听说过单独使用“字段”一词来表示“数据”。我也没有听说过“属性”一词来表示“字段”或“列”。列/字段具有属性,例如可通过 FieldInfo 类访问。
我相信“列”只是术语的演变。桌面数据库(xBASE、MSAccess)通常使用“字段”。M204使用“场”。这个“领域”术语被带到了 MSOffice xml 和其他中。Oracle 的文档(它不会让我发布更多链接,抱歉)和 MSSQL 始终交替使用“字段”和“列”。Sybase(现在是一家 SAP 公司)在其文档中主要使用“列”,但有时也使用“字段”。
只要您的工作组就一个术语达成一致,哪个术语都没有关系。这是一种“以任何其他名字命名的玫瑰”综合症。
所以我意识到这是一个老问题,但这是我经常听到的问题。我对此的看法来自我们的数据团队与我们的开发团队的参与。开发人员肯定在屏幕上显示的记录中有字段,这些字段包含的数据可以经常映射到具有特定行的列。但是,在许多情况下,用于访问数据的关系方法可能会改变特定字段中特定屏幕上的最终结果。
我记录是数据提供的当前值的表示。随着时间的推移,这些值可能并且可能会改变,因此记录也会改变。支持现在的数据和给定时间的数据可以很容易地存储在一组表中。数据之间的关系决定了在任何给定时间构成记录的含义。
派生字段的逻辑会随着时间而改变。例如,一名员工被聘为 Susan Jones,她于 2010 年 1 月 12 日被聘为 101 号商店的销售员,向 Bill Anderson 汇报为商店经理。这是一家进步的公司,他们还为每位员工分配了一名导师。苏珊的导师是玛丽菲利普斯。Mary Phillips 是一名商店经理,但她也是 Susan 所在商店的区域经理。2011 年 11 月 10 日,Susan 被提升为商店经理。我们不知道比尔发生了什么事,但苏珊现在是商店经理。
我们有一张包含姓名、编号、雇用日期、职位和地点的员工表。
我们有一个导师表,其中包含导师和他们正在指导的员工的员工编号以及描述导师关系开始和结束的日期。
我们有一个区域表,其中包含区域名称和分配的经理编号。
我们有另一个位置表,其中包含地址、描述、区域和经理编号。
显示商店信息的屏幕可能有商店经理的字段。store manager 的值不是数据库字段,而是可以随时间变化的可计算值。一个人的经理也可以改变。支持它的数据仍存储在列中,但列之间的关系发生了变化,当为特定目的组合时,它就变成了一个字段。