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 / 问题 / 308704
Accepted
Quasimodo's clone
Quasimodo's clone
Asked: 2022-03-15 07:23:47 +0800 CST2022-03-15 07:23:47 +0800 CST 2022-03-15 07:23:47 +0800 CST

表和视图有通用术语吗?

  • 772

我正在寻找一个通用术语,例如数据库抽象,它包括所有表格数据结构,如数据库表、视图、表格查询结果等。

据我了解,“实体”不是正确的术语,因为它对应于表而不是视图甚至查询。“结果”在可修改的数据结构上是违反直觉的。

在专业环境中,哪个是合适的术语?

query view
  • 6 6 个回答
  • 2530 Views

6 个回答

  • Voted
  1. Bergi
    2022-03-15T16:46:07+08:002022-03-15T16:46:07+08:00

    Postgres(以及关系代数)称它们为关系- 您可以从中查询的行和列的表格事物。这包括表、视图、物化视图、临时表,甚至临时查询结果。

    如果你真的只指关系,我会避免使用术语“数据库对象”,因为“数据库对象”还包括模式、索引、用户、序列、策略、列定义、类型、函数等等。数据库对象是用DDL操作的对象,而(其中的数据)关系是用DML操作的。

    • 32
  2. Best Answer
    fdreger
    2022-03-16T00:49:01+08:002022-03-16T00:49:01+08:00

    “具有列和行的事物”是一个关系。这是 Codd 在他的开创性论文中使用的词,开启了 RDBM 革命。

    “可以改变但保留其身份的事物” - 是一个实体。当您可以找到代表它的唯一键时,关系的单行代表一个实体。如果您有两个非唯一的列:event和date- 行将不会形成实体,因为更改任一属性都会完全改变行的含义。如果您添加一个额外的列(如id)或者如果您使date唯一的,您将获得作为实体工作的行(无论它是视图或表,还是连接的结果)。

    数据库对象就是这样:由您的数据库服务器管理的事物。它可以是表或视图,但也可以是用户或存储过程。

    结果是API(例如JDBC)的一部分的名称,它在某些其他编程环境(例如Java 运行时)中表示您的结果(可能是关系或游标)。

    但事实是——在真正的专业环境中,任何事情都会发生。人们把这些词弄混了,通常不在乎。咳咳,我不在乎。

    • 18
  3. Greenstone Walker
    2022-03-15T17:28:54+08:002022-03-15T17:28:54+08:00
    放

    回到基础,表是一组记录。视图是一个虚拟表,无论是计算的还是物化的,这意味着它仍然只是一组记录。

    表源

    Microsoft 文档在 BNF 中使用 <table_source> 来指示行的任何来源 - 表或视图或许多表值函数之一。

    只是“桌子”:-)

    我在课堂上使用这个词已经很多年了,没有混淆。

    大多数时候,与您交谈的人并不理解或关心表格或视图之间的区别。没错——他们只需要知道“我从哪里获取数据来完成我的工作?”

    只需解释一下,“这是一个表格列表,请选择您需要的那个。” 当然,您并没有用一些愚蠢的小玩意来不同地命名表和视图,对吧……?

    • 4
  4. SMMH
    2022-03-17T01:52:59+08:002022-03-17T01:52:59+08:00

    怎么样Tabular?它意味着“表格性”,这意味着它像表格一样工作,具有表格的特征,但不一定是表格。

    • 2
  5. Brendan McCaffrey
    2022-03-15T07:57:56+08:002022-03-15T07:57:56+08:00

    来自技术百科

    数据库对象

    关系数据库中的数据库对象是一种用于存储或引用数据的数据结构。人们与之交互的最常见的对象是桌子。其他对象是索引、存储过程、序列、视图等等。

    创建数据库对象时,无法创建新的对象类型,因为创建的所有各种对象类型都受到所使用的关系数据库模型(例如 Oracle、SQL Server 或 Access)的本质或源代码的限制。正在创建的是对象的实例,例如新表、该表上的索引或同一表上的视图。

    补充参考...

    SQL Server 对象

    Oracle 数据库对象

    • 1
  6. J.D.
    2022-03-15T08:45:09+08:002022-03-15T08:45:09+08:00

    我认为“关系”一词的最佳答案很好,尤其是在理论上谈论数据库时。但在实践中,我认为在谈论实际的数据库系统实现时并不合适。原因是在实际的数据库系统实现中存在很多结构,并且在数据库理论中没有讨论或涵盖的实现中存在差异。这方面的示例可能包括存储过程、表变量、表值函数OPENQUERY()(在 Microsoft SQL Server 实现中)、CTE、子查询等。

    正如这篇文章中的许多讨论所表明的那样,似乎不同的人对他们认为是关系的附加物理构造有不同的解释,但数据库理论并不知道这些构造。我认为 OP 的问题非常广泛,这引发了此处显示的广泛响应,但我认为其中大多数都公平地取决于您想要发言的上下文。

    话虽这么说,这就是为什么我相信以下在以物理形式谈论这些构造时也是正确答案的原因。当一个表存在于数据库系统中时,它是具体的,在很大程度上它是一个对象的实例,例如正在运行的应用程序中的数据集合对象,这里的数据库系统是正在运行的应用程序。当在实际数据库系统实现的上下文中引用它们时,可以返回“表格数据”(如 OP 所用)的其他物理实现的构造,例如表值函数或表变量也可以被视为对象. 我可以谈论这些与它们可以持有/返回的数据(关系)集脱节的构造,并专注于它们作为物理对象的存在,如果这是我选择谈论它们的上下文的话。

    这就是为什么我喜欢 Brendan 对“数据库对象”一词的回答。我也不会排除“实体”这个词。

    我相信,诸如 Microsoft 的实体框架之类的 ORM 将所有数据库对象(表、视图、存储过程等)视为实体。这是在实际实例化之前在结构上表示对象(通常作为类)的模型的上下文中。

    因此,就个人而言,当我在 sed 模型实例化之前或更进一步上游(例如通过数据库图定义逻辑模式时)谈论逻辑概念时,我喜欢使用术语实体。我认为实体是描述事物结构的好术语,无需物理实现。

    但是当谈到具体的表示时,例如应用程序中的 Table 对象的实例,或者数据库层中具体编译的 Table,那么我认为数据库对象也是一个很好的术语。

    • 1

相关问题

  • oracle中的物化视图

  • Oracle物化视图刷新计划

  • 两个相关表之间的查询

  • 日期对齐和对匹配提取最好用 TSQL 或 C# 完成?

  • LIKE 选择文字中任意位置独立存在的单词

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