数据库规范化和子查询

时间:2011-07-17 17:36:04

标签: sql database normalization

我正在学习数据库课程,我有几个关于计算问题的问题。任何见解都非常感谢。

首先,我听到它抛出了“没有算法”来将关系转换为BCNF,这既是无损的又是依赖保留的。其原因在于,对于某些关系,BCNF中不存在与期望属性的关系。我发现这种误导,你可以说没有算法可以找到使用相同逻辑的二次方程的两个实数解。当然你不能......但是对于规范化问题,我认为应该可以确定是否存在具有两个属性的BCNF转换(决策问题),并且如果决策问题发出“是”,则算法为计算等效的BCNF表示。我的想法是正确的,还是我所说的任何错误?

我的第二个问题是关于子查询。可以在没有子查询的情况下重写涉及子查询的SQL中的任何查询吗?我知道这个配方不是很好......我想我们坚持使用基本的SQL(大多数/所有系统共享的内容)并限制子查询选择从属于顶层的语句(允许顶层设置操作) 。

1 个答案:

答案 0 :(得分:0)

1 - 据我所知,没有任何一种算法可以确定关系是否可以在保留其属性的同时转换为BCNF。但是,您可以将现有的组合结合起来,实现您想要的目标。

使用关系分解算法,您可以分解关系,然后检查其依赖关系。如果它的依赖关系保留了你的结果,否则你可以回溯你的步骤并返回原始的关系状态。

我知道它不是你想要的答案,但可以用作解决方案。

2 - 如果你的意思是嵌套查询,是的,可以在不使用子查询的情况下编写一些涉及子查询的查询。

相关问题