问题标签 [functional-dependencies]

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 投票
1 回答
65 浏览

database - 函数依赖 - 查找 F 是否暗示

给定以下功能依赖项

我无法理解 F |= E -> BC 是错误的。如果你有E,你可以去A,如果你有A,你可以去BC。这个逻辑有什么不正确的?

0 投票
3 回答
6975 浏览

database - 如何确定函数依赖和多值依赖?

我有下表

我的 FD 是

我是正确的还是还有更多?在阅读了理论之后,我仍然有点不确定它是如何工作的。我需要清楚的例子。我如何确定 mvds 以及?

0 投票
3 回答
240 浏览

haskell - 使用功能依赖的关联参数限制

下面的函数 f,对于给定的类型“a”,采用类型“c”的参数。对于不同类型的“a”,“c”以不同的方式进行限制。具体来说,当“a”是任何 Integral 类型时,应该允许“c”是任何“Real”类型。当“a”是浮点数时,“c”只能是浮点数。

一种尝试是:

出于某种原因,GHC 7.4.1 抱怨它“无法推断出使用 fIntegral 引起的 (Real c)”。在我看来,功能依赖应该允许这种推论。在实例中,a 与 i 统一,因此通过功能依赖,d 应该与 c 统一,在实例中声明为“Real”。我在这里想念什么?

抛开功能依赖不谈,这种方法的表达能力是否足以强制执行上述限制,还是有更好的方法?我们只为 'a' 使用几个不同的值,因此会出现以下情况:

谢谢

0 投票
1 回答
340 浏览

haskell - How Type inference work in presence of Functional Dependencies

Consider the code below :

Now when I see the inferred type of f in ghci

Now If I add the following code

I get the error

I am not able to understand what has happened here? The restriction Foo Int a should have restricted the type of h to Int -> Float as shown in the inferred type of f.

Is it because type unification is occurring before resolving the instances ?

[Update]

An explanation given by Dan Doel on the cafe mailing list

The answer, I believe, is that the difference between the fundep implementation and type families is local constraint information. Fundeps do no local propagation.

So in your first definition, you've locally provided 'Int -> a', which is acceptable to GHC. Then it figures out externally to the function that '(Foo Int a) => Int -> a' is actually Int -> Float.

In the second definition, you're trying to give 'Int -> Float', but GHC only knows locally that you need to provide 'Int -> a' with a constraint 'Foo Int a' which it won't use to determine that a ~ Float.

This is not inherent to fundeps. One could make a version of fundeps that has the local constraint rules (easily so by translating to the new type families stuff). But, the difference is also the reason that overlapping instances are supported for fundeps and not type families. But I won't get into that right now.

I still don't understand what that mean. So still looking for better understandable answer.

0 投票
1 回答
2217 浏览

relational-database - 函数依赖集闭包中的非平凡函数依赖

enter code here我正在准备我的数据库考试。

我有一个关于使用给定的函数依赖集找到 R={A,B,C,D,E,F,G} 的非平凡函数依赖的问题:

在这种情况下,候选键是 CF,因为 CF+=ABCDEFG

非平凡的函数依赖可能是 C->B

这是真的吗?如果不是,如何计算非平凡函数依赖以及如何使用 Armstrong Axioms 证明它

感谢您的耐心和时间

0 投票
2 回答
253 浏览

haskell - Haskell:为什么 GHC 不使用fundeps 在这个类型类中推断类型?

我正在尝试使用类型类和函数依赖项来获取一个类型函数,该函数可以转换IntCont Int下面的代码,然后在另一个类型类中使用它,如下所示。

这是来自 ghci 7.4.2 的错误

鉴于TypeConvtypeclass 有一个我读为:“给定reprand a,我们可以推断b”并为 提供了一个实例Int,为什么 ghc 不能推断a' ~ Cont Int呢?

0 投票
1 回答
453 浏览

database - 数据库 - 候选键和 FD

现在问题要求我找出功能依赖关系和候选键。

当我弄清楚 FD 和候选键时,我有点困惑。根据我的理解,如果“给定 X 的一个值我知道 Y 的一个值”,您可以找到 FD?例如,如果给我一个学生ID,我会知道学生姓名吗?是的。这很简单。

现在对于候选键,我认为它们是可能是主键但必须用作主键的键。

现在我有一个场景:

一家职业介绍所正在创建一个数据库来记录面试预约的详细信息。该机构聘用“安置经理”(PLM)协助“候选人”(CND)找工作。每个安置经理都会面试许多候选人。但是,候选人被分配给一位安置经理。这意味着对于候选人的每次任命,它总是与同一个安置经理。任何给定的任命都是在一名候选人和他们指定的安置经理之间进行的。

该机构的初始模式是:Appointment(Appt, PLM#, PLMname, CND#, CNDname, CNDaddress, Job)

Appt 是预约日期和时间。PLM# & PLMname 是安置经理的 ID 和姓名,CND# 是候选人的 ID。CNDname 是候选人的姓名。CNDaddress 是候选人的联系地址。工作是面试中讨论的工作。

因此,对于上述情况,候选键可能是:

我的问题是我不确定是像上面那样写出来还是只有 1 个候选键

{PLM#, CND#, Appt}

FD:

假设 1 个职位在任命期间讨论 候选人每天只能有 1 个预约

只是想在我正常化之前检查我的 FD。

0 投票
2 回答
102 浏览

database-design - 关于设置功能依赖的困惑

鉴于下表定义:

卡车(TruckNum、TruckType、TypeDesc、TruckMiles、DatePurchased、TruckSerialNum、BaseCity、BaseState、BaseNum、BaseManagerName、ManagerPhone、BasePhone)

我需要设置功能依赖项列表。

到目前为止,我有:

我还得到了以下注意事项/限制:

  1. 卡车位于单个基地。

  2. 一个基地可以是许多卡车的基地。

无论如何,我的问题实际上非常简单并且(可能)完全是新手。让我困惑的是BaseNum。

注意我有这个:

TruckNum -> (...) BaseNum

进而

基数 -> (...)

看看我如何使用 BaseNum 两次?这是允许的吗?

1NF 的定义是表不应该有任何重复的组。但这不只是针对表定义(而不是 FD)吗?我很困惑。

0 投票
2 回答
1240 浏览

haskell - 功能依赖与类型族

我正在开发一个用于运行人工生命实验的框架,并且我正在尝试使用类型族而不是函数依赖项。类型族似乎是 Haskellers 中的首选方法,但我遇到了一种情况,函数依赖似乎更合适。我错过了一个技巧吗?这是使用类型族的设计。(此代码编译正常。)

有没有办法避免强迫我的用户编写最后两行样板文件?与下面使用fundeps 的版本相比,这似乎让我的用户更简单。(UndecideableInstances 的使用可能是一个危险信号。)(此代码也可以编译。)

编辑:在试图展示一个简单的例子时,我省略了我设计的部分动机。

Universe 类扮演的#1 角色是序列化和反序列化代理,所以我认为它必须与 Agent 类相关联。它也有readAgentwriteAgent功能。但是,我想确保用户在修改后不会意外忘记编写代理,因此我没有导出这些函数,而是提供了一个withAgent处理所有事情的函数。该withAgent函数有两个参数:一个在代理上运行的函数,以及在其上运行程序的代理的名称(唯一 ID)。它读取包含该代理的文件,运行程序,然后将更新的代理写回到文件中。(我可以改为导出 readAgent 和 writeAgent 函数。)

还有一个Daemon类负责为每个代理分配公平的 CPU 份额。因此,在守护进程的主循环中,它会在 Universe 中查询当前的代理列表。然后,对于每个代理,它调用withAgent函数来运行该liveAlittle代理的程序。守护进程不关心代理是什么类型。

该函数还有另一个用户withAgent:代理本身。在智能体的liveALittle函数内部,它可能会在宇宙中查询一个智能体列表,以便找到一个可能的交配伙伴。它将调用该withAgent函数来运行某种交配函数。显然,一个代理只能与同一物种(类型类)的另一个代理交配。

编辑:这是我想我会使用的解决方案。不是类型族或函数依赖项,但现在我必须做一些事情,以便编译器知道liveALittle要调用哪个。我这样做的方法是让用户提供正确liveALittle的参数。

0 投票
1 回答
3965 浏览

database - 功能依赖 - 左侧具有三个属性

假设我们有以下功能依赖:

我们可以看到,由于B+的闭包,可以去掉B,即(G-(AB ->C) U(A -> C) = ACB

为了找到最小覆盖,我如何处理关于 DEG -> H,DG -> H 的其他左手冗余 - 这些可以减少吗?如果可以,你能解释一下使用闭包!

非常感谢,马修