与所有主要属性的关系的功能依赖性?

Functional dependencies for a relation with all prime attributes?

作为我的 CS 学位的一部分,我正在学习数据库理论课程,我们必须确认我们设计的数据库是 BCNF 范式。我目前正在尝试创建函数依赖关系,但我不确定当一个关系全是质数时该怎么做(即所有属性都是主键,就像当你有一个 M:N 关系时)

例如,考虑这个关系:

Prod_Cat[名称,category_ID,EPC]

其中name、category_id、EPC都是主键

我将如何为此定义功能依赖性?

如有任何帮助,我将不胜感激。

谢谢科里

我不确定你 table 中列的含义,但如果你的主键包含所有列,你将只有 A->B 形式的微不足道的函数依赖B 是 A 的子集。(如果你有任何其他形式的函数依赖 A->B 其中 B 不是 A 的子集,那么 B 就不会在键中。)另外, table 必须在 BCNF 中(但不能在 4NF 中)。

通常我们认为规范化适用于实体 table,而不是交集 table。那是因为裸交集 table 只包含独立的键,而不包含属性。通常,密钥是在规范化过程中创建的,因此所有依赖项都已解决(假设设计正确)。

但是,交集 table 定义了关系,并且关系可以具有其他属性。

create table DeptMgrs(
    DeptID  int not null references Departments( ID ),
    MgrID   int not null references Employees( ID ),
    Assigned date not null,
    constraint PK_DeptMgrs primary key( DeptID, MgrID )
);

通常,交集 table 的 FK 字段之间没有函数依赖关系,因此 DeptIDMgrID 之间的 none -- 它们是导入的关键字段它们一起构成了关系的天然关键。但是,分配字段显示 这个 员工成为 那个 部门经理的日期。它不是部门或员工的属性,而是他们之间关系的属性。当然,这个例子在 3nf 甚至 BCNF 中都是微不足道的,但是有了额外的属性,交集的规范化 table 可能是必需的。

那不是很有趣吗?

由于您的交集似乎只有 FK 字段 table,因此它们之间应该没有依赖关系。