问题标签 [relational-algebra]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
171 浏览

scala - List[Map[String,A]] 到 scalaquery 中的数据库表

我昨天刚刚了解了 scalaquery,它似乎很有用。我想将 List[Map[String,A]] (其中 A 是原始类型 - Int、Float、String 等,并且每个映射中的键集相同)转换为数据库表。我在 scalaquery 中找不到动态表创建的示例(列数,即键数是动态的)。

基本上,我有兴趣在这个(和相关的)集合上做一些关系代数。想通 scalaquery 将是要走的路。如果没有,请提出替代方案。

0 投票
1 回答
7234 浏览

relational-database - 在给定 FD:s 的情况下找到候选键的方法?

我正在练习将一组函数依赖项和输出候选键作为输入。是否有一种算法,在这种情况下,为什么没有基于 Web 的实现,我可以在其中输入我的 FD:s 并作为输出获得超级键/候选键的列表?

我练习我在 SO 上找到的内容,一个合适的问题是 如何找到给定关系的最高范式, 其中提到的函数依赖关系是

B->G

BI->CD

EH-> AG

G-> 德

当我尝试发现候选键是 BFHI 时,请检查我是否这样做正确:

FD B->G 可以重写为 ABCDEFHI->ABCDEFGHI,因此 ABCDEFHI 是一个超级键。FD BI->CD 可以重写为 ABEFGHI->ABCDEFGHI,因此 ABEFGHI 是一个超级键。FD EH->AG 可以重写为 BCDEEFHI->ABCDEFGHI,因此 BCDEEFHI 是一个超级键。FD G->DE 可以重写为 ABCFGHI->ABCDEFGHI,因此 ABCFGHI 是一个超级键。

在我们的超级键中,BFHI 存在于每一个中。因此 BFHI 是候选键,它不能进一步减少,这可以从检查中看出(?)

我的推理方式正确吗?

增广算法还可以处理另一个问题,如果可行的话, 数据库无关属性和分解

在这里,FD:s 是

A->BCD

BC->DE

B->D

D->A

这里 FB A->BCD 可以写成 AEF->ABCDEF,因此 AEF 是一个超级键。FD BC->DE 可以重写为 ABCF->ABCDEF,因此 ABCF 是一个超级键。FD B->D 可以重写为 ABCEF->ABCDEF,因此 ABCEF 是一个超级键。FD D->A 可以重写为 BCDEF->ABCDEF,因此 BCDEF 是一个超级键。对于所有超级键,F 是每个超级键中唯一的成员,因此 F 是唯一的候选键。

这行得通吗?

感谢您的任何回答/评论

0 投票
3 回答
224 浏览

mysql - 构建动态无失败 where 子句

我建立了一个界面,用户从数据库中获取记录。用户可以选择指定 0 个或多个过滤器。有四个过滤器A,B,C,D(假设这些是某个表中的字段)

这是我的查询应该是这样的:

我试图用一种方法来制定查询,而当指定一个特定的过滤器时,它会被应用,如果不是,它会被忽略。但这应该适用于所有 16 种情况。

到目前为止,我能够想出的是这些方法:

v1或其他值在未指定时设置为 -1。因此,如果未指定它们,它们将被简单地忽略,因为随后会使用另一个过滤器(来自 A、B、C)。但是在没有指定 A、B 和 C 的情况下,这将失败。在这种情况下,false 与 D 进行 Anded,并且不应用 D。

有没有办法为这种情况提供 where 子句?我也对这个程序的解决方案持开放态度,我通过代码添加或不添加子句,但我更喜欢这种方式。而且我真的不想有很多 if-else 语句。

谢谢!

0 投票
3 回答
3838 浏览

sql - 关系代数自然连接

大家好,我即将参加考试,但在练习考试的两个问题上没有得到讲师的太多帮助。她已经提供了答案,但没有回答我关于答案的问题,我希望这里有人能够解释为什么答案是这样的。

考虑以下两个表 R 和 S 及其实例:


答案是(a,b,c),为什么不是(a,a,b,c)?投影是否使它与众不同?


答案是(a,b,c,f),为什么是a答案?b=d 当值是 x 和 z 时,为什么要打印出来呢?

0 投票
2 回答
3142 浏览

sql - 重写不带子查询的 SQL 查询(有子句中的子查询)

在我的期末考试中,我得到了非常讨厌的 SQL、关系代数和关系微积分查询。我得到了这个查询:

查找从“计算机”类别订购所有产品的客户的姓名。(订购了计算机类别中所有产品的客户)

这是架构:

客户(Customer_Id、Cust_First_Name、Cust_Last_Name)

订单 ( Order_Id , *Customer_Id*)

Order_items ( Order_Item_id , *Order_Id*, *Product_Id*)

Product_info ( Product_Id , Product_Name, Category)

粗体(主键)、斜体(外键)

现在要将这个查询转换为关系代数,我需要使用连接而不是子查询。为了帮助自己一点,我首先编写 SQL,然后将 SQL 查询转换为关系代数。

这是我的尝试:

尝试 1(使用子查询):

尝试 2(在有子句中使用一个子查询):

尝试 3(from 子句中的子查询):

现在这个查询可以用关系代数来表示,但它效率低下,因为它重复了值。

我的最后一次尝试(不编译并在 where 中使用子查询):

我在某处读到,在这种情况下可以使用 LATERAL,但是关于 LATERAL 的信息太少,我无法正确理解。

考试结束了,但我仍然对解决方案感兴趣。因为这是 2 小时的考试,其中有 6 个查询、ER 图、ER-To-Relational、标准化到 BCNF、3NF,我想到这个查询怎么会这么难解决。我在这里错过了一些重要的东西吗?

这是一些小样本数据,可以帮助我一点:

http://pastebin.com/DkCe0AGm

提前致谢。

0 投票
2 回答
830 浏览

relational-algebra - 自然连接是否分布在集合差异上?

换句话说,是不是真的: r1 ⋈ (r2 - r3) = r1 ⋈ r2 - r1 ⋈ r3

其中 r1 r2 和 r3 是关系

如果不是,例子是什么?

0 投票
2 回答
373 浏览

sql - SQL 到关系代数

表:

以上是 3 个表的数据库。我需要将一些简单的 SQL 语句转换为 RA:

在RA中:

以上不完整,我只需要知道我是否在正确的轨道上。关于 RA 的信息有限。

0 投票
2 回答
66 浏览

database-design - 查找表示相关身份的列集

让我们称身份集为关系中的此类属性子集,它们表示该关系中行的身份,同时,当从该身份集中排除任何属性时,生成的属性集将不是身份集,即在我们的主题领域中,不能同时存在两行具有属于特定身份集的所有属性的匹配值,但是如果它们具有至少一个属性的不同值,则它们可以存在。

例如,假设与属性 A、B、C、D 和身份集 {A,B} 的关系

在这种关系中,第二行和第四行在身份集 {A,B} 中具有相同的值 (1,3),因此它们是互斥的,并且这种关系在我们的主题区域中是不允许的。

是否存在一些形式化的技术来查找任意关系中的所有“身份集”?

0 投票
2 回答
311 浏览

rdbms - RA 算子差异 - 关系代数

我很困惑 PROJECT A(r - s) 和 PROJECT A(r) - PROJECT A(s) 在 RDBMS 中的表达方式有何不同。任何人都可以举一个例子来证明上面吗?

0 投票
2 回答
1678 浏览

relational-database - RMDB 表中的“列”是否有顺序?

我了解到,就表中的元组(例如行)而言,没有顺序的概念,但根据维基百科, “元组是元素的有序列表”。这是否意味着属性确实有顺序?如果是,为什么它们会被区别对待,不能向表中添加另一列(这就是元组没有顺序的原因)?

“在这种表示法中,属性-值对可以按任何顺序出现。” 这是否意味着属性没有顺序?