首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRUD数据运算的理论基础

CRUD数据运算的理论基础
EN

Stack Overflow用户
提问于 2015-07-26 13:50:20
回答 3查看 327关注 0票数 0

我知道RDBMS是基于关系模型的,由关系代数支持。

各种关系代数理论概念(如选择投影接合 )都是用SQL等查询语言实现的。但这些操作主要是R ( Read ) of CRUD (创建、读取、更新、删除)

CRUD是编程的圣杯,尤其是在企业级领域。

我想知道哪种编程语言是独立的,理论基础(可能是数学的,也可能不是数学的)是以插入、更新、删除为模型的?这样的理论存在吗?

如果它存在,它很可能会解释诸如数据库上的约束之类的东西。

Eg

如果不指定唯一列( WHERE clasue),则无法更新单个行(元组)。

或,

如果删除一个到多个关系,则删除多个端的实体(另一个表的主键所在的表)。

为了简单起见,让我们假设所有CRUD都是在关系模型上操作的,只有

我之所以问这个问题,是因为我需要对一个希望实现CRUD自动化的产品进行深入的研发。我知道有人尝试过,但失败了,但我还是希望能得到一些理论基础的帮助!

编辑,这也将有助于ORM的设计,它可以产生独立于底层DB模型的所有CRUD操作

编辑,我刚刚找到这个链接-> https://cs.stackexchange.com/questions/43672/a-relational-algebra-extended-to-model-the-full-dml-crud-domain,这类似于我不得不问的问题,不幸的是,OP的问题圈变成了一个具体的实现!

EN

回答 3

Stack Overflow用户

发布于 2015-07-27 12:50:01

在关系术语中,创建、更新和删除操作都是赋值。例如,将I插入T可以通过以下方式完成:

代码语言:javascript
复制
T = T UNION I;

任何实际的关系语言都应该有这些操作的语法快捷键。例如,请参见教程D

票数 4
EN

Stack Overflow用户

发布于 2015-07-26 23:22:46

CRUD可以简化为关系、关系代数、变量和(可选)类型理论。数据库被视为一组关系变量,类似于任何命令式编程语言中的变量,只是它们保存关系而不是标量值。查询将一系列关系代数运算符应用于存储在关系变量中的值。Read查询将结果返回给调用者。Create、Update和Delete查询将结果分配回原始关系变量。

ORMs的一个问题是,它们混淆了实体行、实体集表和属性列。陈的原始论文指出,实体是由值表示的,属性是由一对值表示的一对一关系。另一个问题是试图在底层系统处理集合时操纵行。另一种是试图抽象出一个非常高级的声明性数据子语言。

我不想要ORMs,我希望我的对象能够用SQL相互交谈,但这是一个不同的话题。

票数 3
EN

Stack Overflow用户

发布于 2015-07-26 14:10:58

这太长了,不能发表评论。

“关系”数据库只是松散地实现关系代数。例如,关系代数中的“关系”指“属性”(列)与“元组”(表中的行)中的值之间的关系。在大多数SQL数据库中,表中的所有行(“元组”)都有相同的列。这不是关系代数的要求。另一个例子是表中的重复项。关系代数处理“元组”集,其中不允许重复。但是,关系数据库允许表中的重复项,除非显式定义主键。

CRUD周围的语义更多地是由数据库的ACID属性(原子性、一致性、隔离性和持久性)驱动的。这些属性驱动关系数据库的事务语义。

在我的经验中,成功的实际应用通常不同于理论基础。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31637716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档