Database design 我可以在2NF中使用FK,在关系模式中使用3NF吗?

Database design 我可以在2NF中使用FK,在关系模式中使用3NF吗?,database-design,database-schema,rdbms,relational,database-normalization,Database Design,Database Schema,Rdbms,Relational,Database Normalization,因此,基本上我是在规范化发票,在所有2NF关系模式中包含FK*INV_NUM*是否错误。这是我已经拥有的 *显示PK 1NF(*库存数量,库存日期,库存ID,库存名称,库存结构,库存状态,零件数量,零件说明,零件数量,零件价格,LBR数量,LBR说明,LBR价格,税率) 部分依赖 (C_ID-->C_名称、C_名称、C_STR、C_状态) (零件数量-->零件说明、零件数量、零件价格) (LBR\u数量-->LBR\u说明,LBR\u价格) 传递依赖 (C_州-->税率) 2NF 客户(

因此,基本上我是在规范化发票,在所有2NF关系模式中包含FK*INV_NUM*是否错误。这是我已经拥有的

*显示PK

1NF*库存数量,库存日期,库存ID,库存名称,库存结构,库存状态,零件数量,零件说明,零件数量,零件价格,LBR数量,LBR说明,LBR价格,税率)

部分依赖

  • (C_ID-->C_名称、C_名称、C_STR、C_状态)
  • (零件数量-->零件说明、零件数量、零件价格)
  • (LBR\u数量-->LBR\u说明,LBR\u价格)
传递依赖

  • (C_州-->税率)
2NF 客户(*C_ID,C_名称,C_名称,C_STR,C_状态)

2NF 零件(*零件数量、零件说明、零件数量、零件价格)

2NF 劳动力(*LBR\u数量,LBR\u说明,LBR\u价格)

所以基本上我是在规范发票

事实上不,不是真的

发票本质上是暂时的,因此,
INV_DATE
非常重要

换句话说,
FD不是
{C_STATE}->{TAX_RATE}
,而是
{C_STATE,INV_DATE}->{TAX_RATE}

FD不是
{C_ID}->{C_STATE}
,而是{C_ID,INV_DATE}->{C_STATE}

FD不是
{PART\u NUM}->{PART\u PRICE}
,而是
{PART\u NUM,INV\u DATE}->{PART\u PRICE}

等等

所以你的选择是

  • 保持(发票表)原样(似乎可以)

  • 使一切都是暂时的


  • 发票(也包括采购订单…)的常见设计是“捕获并冻结”所有相关信息

    所以基本上我是在规范发票

    事实上不,不是真的

    发票本质上是暂时的,因此,
    INV_DATE
    非常重要

    换句话说,
    FD不是
    {C_STATE}->{TAX_RATE}
    ,而是
    {C_STATE,INV_DATE}->{TAX_RATE}

    FD不是
    {C_ID}->{C_STATE}
    ,而是{C_ID,INV_DATE}->{C_STATE}

    FD不是
    {PART\u NUM}->{PART\u PRICE}
    ,而是
    {PART\u NUM,INV\u DATE}->{PART\u PRICE}

    等等

    所以你的选择是

  • 保持(发票表)原样(似乎可以)

  • 使一切都是暂时的



  • 发票(以及采购订单…)的常见设计是“捕获并冻结”所有相关信息。

    您所说的“可传递依赖性”是什么意思?可传递依赖在3个属性之间。这是我的书《可传递依赖–X->Y,Y->Z》(X是主键)中对可传递依赖的定义。因此,X->Z是一个可传递依赖–只有当非基本属性(例如,Y->Z)之间存在函数依赖时,可传递依赖才存在NoPrime=不是任何候选密钥的一部分•候选密钥=最小超级密钥在我的问题的业务规则中,它说税率是根据客户的状态计算的,所以我是如何得出这个假设的。通常的符号是X->Y->Z,这意味着X->Z,但不是相反,所以它们不是等价的符号。所以,如果你只说C_STATE-->TAX_RATE,这并没有告诉我们这应该是一个可传递的依赖项,也没有告诉我们哪一个是“中间”属性。顺便说一句,在3NF的上下文中,哪些属性是主要的变得很重要。您所说的“可传递依赖性”
    C_STATE-->TAX_RATE
    是什么意思?可传递依赖在3个属性之间。这是我的书《可传递依赖–X->Y,Y->Z》(X是主键)中对可传递依赖的定义。因此,X->Z是一个可传递依赖–只有当非基本属性(例如,Y->Z)之间存在函数依赖时,可传递依赖才存在NoPrime=不是任何候选密钥的一部分•候选密钥=最小超级密钥在我的问题的业务规则中,它说税率是根据客户的状态计算的,所以我是如何得出这个假设的。通常的符号是X->Y->Z,这意味着X->Z,但不是相反,所以它们不是等价的符号。所以,如果你只说C_STATE-->TAX_RATE,这并没有告诉我们这应该是一个可传递的依赖项,也没有告诉我们哪一个是“中间”属性。顺便说一句,在3NF的上下文中,哪些属性是prime变得很重要。