问题标签 [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.
scala - List[Map[String,A]] 到 scalaquery 中的数据库表
我昨天刚刚了解了 scalaquery,它似乎很有用。我想将 List[Map[String,A]] (其中 A 是原始类型 - Int、Float、String 等,并且每个映射中的键集相同)转换为数据库表。我在 scalaquery 中找不到动态表创建的示例(列数,即键数是动态的)。
基本上,我有兴趣在这个(和相关的)集合上做一些关系代数。想通 scalaquery 将是要走的路。如果没有,请提出替代方案。
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 是唯一的候选键。
这行得通吗?
感谢您的任何回答/评论
mysql - 构建动态无失败 where 子句
我建立了一个界面,用户从数据库中获取记录。用户可以选择指定 0 个或多个过滤器。有四个过滤器A,B,C,D(假设这些是某个表中的字段)
这是我的查询应该是这样的:
我试图用一种方法来制定查询,而当指定一个特定的过滤器时,它会被应用,如果不是,它会被忽略。但这应该适用于所有 16 种情况。
到目前为止,我能够想出的是这些方法:
v1
或其他值在未指定时设置为 -1。因此,如果未指定它们,它们将被简单地忽略,因为随后会使用另一个过滤器(来自 A、B、C)。但是在没有指定 A、B 和 C 的情况下,这将失败。在这种情况下,false 与 D 进行 Anded,并且不应用 D。
有没有办法为这种情况提供 where 子句?我也对这个程序的解决方案持开放态度,我通过代码添加或不添加子句,但我更喜欢这种方式。而且我真的不想有很多 if-else 语句。
谢谢!
sql - 关系代数自然连接
大家好,我即将参加考试,但在练习考试的两个问题上没有得到讲师的太多帮助。她已经提供了答案,但没有回答我关于答案的问题,我希望这里有人能够解释为什么答案是这样的。
考虑以下两个表 R 和 S 及其实例:
答案是(a,b,c)
,为什么不是(a,a,b,c)
?投影是否使它与众不同?
答案是(a,b,c,f)
,为什么是a
答案?b=d 当值是 x 和 z 时,为什么要打印出来呢?
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,我想到这个查询怎么会这么难解决。我在这里错过了一些重要的东西吗?
这是一些小样本数据,可以帮助我一点:
提前致谢。
relational-algebra - 自然连接是否分布在集合差异上?
换句话说,是不是真的: r1 ⋈ (r2 - r3) = r1 ⋈ r2 - r1 ⋈ r3
其中 r1 r2 和 r3 是关系
如果不是,例子是什么?
sql - SQL 到关系代数
表:
以上是 3 个表的数据库。我需要将一些简单的 SQL 语句转换为 RA:
在RA中:
以上不完整,我只需要知道我是否在正确的轨道上。关于 RA 的信息有限。
database-design - 查找表示相关身份的列集
让我们称身份集为关系中的此类属性子集,它们表示该关系中行的身份,同时,当从该身份集中排除任何属性时,生成的属性集将不是身份集,即在我们的主题领域中,不能同时存在两行具有属于特定身份集的所有属性的匹配值,但是如果它们具有至少一个属性的不同值,则它们可以存在。
例如,假设与属性 A、B、C、D 和身份集 {A,B} 的关系
在这种关系中,第二行和第四行在身份集 {A,B} 中具有相同的值 (1,3),因此它们是互斥的,并且这种关系在我们的主题区域中是不允许的。
是否存在一些形式化的技术来查找任意关系中的所有“身份集”?
rdbms - RA 算子差异 - 关系代数
我很困惑 PROJECT A(r - s) 和 PROJECT A(r) - PROJECT A(s) 在 RDBMS 中的表达方式有何不同。任何人都可以举一个例子来证明上面吗?
relational-database - RMDB 表中的“列”是否有顺序?
我了解到,就表中的元组(例如行)而言,没有顺序的概念,但根据维基百科, “元组是元素的有序列表”。这是否意味着属性确实有顺序?如果是,为什么它们会被区别对待,不能向表中添加另一列(这就是元组没有顺序的原因)?
“在这种表示法中,属性-值对可以按任何顺序出现。” 这是否意味着属性没有顺序?