Dataframe 仅使用关系而不使用数据转换为BCNF

Dataframe 仅使用关系而不使用数据转换为BCNF,dataframe,database-design,rdbms,database-normalization,functional-dependencies,Dataframe,Database Design,Rdbms,Database Normalization,Functional Dependencies,我必须将以下关系转换为BCNF。但这项研究并没有表明什么是主要的决定因素。没有下划线。我知道不同的步骤,但我在编写函数依赖项时有一些困难,因为我只有关系,没有数据。。。 你能帮助我或指导我如何开始吗 将以下关系转换为BCNF。对函数依赖性做出适当的假设,并说明转换中的步骤 发票(编号、客户名称、客户编号、客户地址、项目编号、项目价格、项目数量、销售人员编号、销售人员姓名、小计、税金、到期总额) 我的问题是,如果我们只有上述关系,如何编写函数依赖关系 我试过了,但我不确定,我只是猜测而已 编号--

我必须将以下关系转换为BCNF。但这项研究并没有表明什么是主要的决定因素。没有下划线。我知道不同的步骤,但我在编写函数依赖项时有一些困难,因为我只有关系,没有数据。。。 你能帮助我或指导我如何开始吗

将以下关系转换为BCNF。对函数依赖性做出适当的假设,并说明转换中的步骤

发票(编号、客户名称、客户编号、客户地址、项目编号、项目价格、项目数量、销售人员编号、销售人员姓名、小计、税金、到期总额)

我的问题是,如果我们只有上述关系,如何编写函数依赖关系

我试过了,但我不确定,我只是猜测而已

编号-->(CustomerName、CustomerNumber、CustomerAddress)

CustomerNumber-->(CustomerName,CustomerAddress)

ItemNumber-->(编号、ItemPrice)

(编号,项目编号)-->(项目数量,销售人员编号,销售人员姓名,小计,税金,到期总额)


谢谢

如果您对不同属性的含义有了概念,通常可以解决此类练习,因为函数依赖关系涉及数据的含义

我们可以猜测,在您的案例中,所有前缀为“Customer”、“Item”和“Salesperson”的属性表示不同对应实体的属性,而其他属性与发票相关,发票涉及从(单个?)销售人员向(单个?)客户销售(单个?)产品。当然,这只是一个猜测,可能大错特错

在这些假设下,以及在具有后缀编号的属性唯一标识某个实体的假设下,我们可以将以下功能相关性定义为关系的FDs的覆盖:

CustomerNumber -> CustomerName, CustomerAddress
ItemNumber -> ItemPrice, ItemQuantity
SalespersonNumber -> SalespersonName
Number -> CustomerNumber, ItemNumber, SalespersonNumber, Subtotal, Tax, TotalDue
如果这是正确的,则关系的BCNF中的分解可能如下所示:

Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice, ItemQuantity)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, SalespersonNumber, Subtotal, Tax, TotalDue)
CustomerNumber -> CustomerName, CustomerAddress
ItemNumber -> ItemPrice
SalespersonNumber -> SalespersonName
Number -> CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue
Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue)
当然,我重复一遍,这只是基于(假设的)命名约定的猜测

例如,打破上述假定惯例,另一种可能性是ItemQuantity不是Item的属性,而是Invoice的属性

因此,在这种情况下,FD的盖子应如下所示:

Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice, ItemQuantity)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, SalespersonNumber, Subtotal, Tax, TotalDue)
CustomerNumber -> CustomerName, CustomerAddress
ItemNumber -> ItemPrice
SalespersonNumber -> SalespersonName
Number -> CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue
Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue)
如果这是正确的,则关系的BCNF中的分解可能如下所示:

Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice, ItemQuantity)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, SalespersonNumber, Subtotal, Tax, TotalDue)
CustomerNumber -> CustomerName, CustomerAddress
ItemNumber -> ItemPrice
SalespersonNumber -> SalespersonName
Number -> CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue
Customers (CustomerNumber, CustomerName, CustomerAddress)
Items (ItemNumber, ItemPrice)
Salespersons (SalespersonNumber, SalespersonName)
InvoiceData (Number, CustomerNumber, ItemNumber, ItemQuantity, SalespersonNumber, Subtotal, Tax, TotalDue)

哪个是正确答案?嗯,除非数据的含义是确定无疑的,否则没有人能说出来。

这能回答你的问题吗?现在你只是要求我们用定制的教程重写一本教科书&做你的(家庭)作业&你没有显示出任何关于回答的研究。请看,点击谷歌的“stackexchange家庭作业”和鼠标文本上方的投票箭头。根据教科书/参考资料展示你的工作步骤,并说明理由,然后问1个具体的、经过研究的、不重复的问题,这是你遇到的第一个问题。引用你所依赖的定义、定理、算法和启发法。所有步骤都是常见问题解答。谷歌有无“site:stackoverflow.com”。你们关系中的数字是发票号码,而不是客户号码。暗示了客户编号。这就是为什么不应该有一个名为Number或ID的数据库列的主要原因。这太令人困惑了。对于任何一组有效元组(行),关系变量(表)都位于特定的NF中,包括空集。NF是在逻辑设计级别上确定的,在执行SQL
CREATE TABLE
之前。坚持逻辑,看伦佐的回答。我不是要求做作业。我发布了整个问题,并说我的问题是写函数依赖项,我写了它们!!我的问题是,即使我们没有要分析的数据,是否有可能编写这些依赖项