Database 表的数据库规范化

Database 表的数据库规范化,database,database-design,relational-database,normalization,database-normalization,Database,Database Design,Relational Database,Normalization,Database Normalization,让我们考虑下面的不规范化表 1) 仓库 id 项目id 剩余 购买成本 销售成本 货币 我试图将其规范化,得到了以下表格: 1) 仓库表 id 产品标识 剩余 成本标识 2) 成本表 id 购买成本 销售成本 货币 这是否符合数据库标准格式 提前谢谢你 这应该是一个评论,但太冗长了 没有足够的信息来提供答案-我们必须从上下文推断结构-上下文令人困惑。您的初始记录看起来像是对要购买和销售的产品的描述,但您将其命名为仓库,仓库是存储产品的地方。我不知道你说的残差是什么意思。您是否有针对特


让我们考虑下面的不规范化表

1) 仓库

id
项目id
剩余
购买成本
销售成本
货币



我试图将其规范化,得到了以下表格:



1) 仓库表

id
产品标识
剩余
成本标识



2) 成本表

id
购买成本
销售成本
货币

这是否符合数据库标准格式


提前谢谢你

这应该是一个评论,但太冗长了

没有足够的信息来提供答案-我们必须从上下文推断结构-上下文令人困惑。您的初始记录看起来像是对要购买和销售的产品的描述,但您将其命名为仓库,仓库是存储产品的地方。我不知道你说的残差是什么意思。您是否有针对特定产品的多项采购成本?如果是,它们是如何区分的。类似的销售成本。如果涉及多个成本,为什么销售价格与购买成本挂钩

在这种情况下,我不知道“剩余”是什么意思。但是忽略这一点

我怀疑把成本分到一个单独的表中会有什么好处。假设我们有两种产品,“14型烤面包机”和“男士衬衫风格X7”。两者的价格都是12美元。因此,您为$12创建了一个成本记录,并将两个记录都指向这个。然后你意识到你犯了一个错误,烤面包机真的花了13美元。所以你要更新成本记录。但这也将更新衬衫的成本,这几乎肯定是错误的。拥有一个单独的成本表意味着每次创建库存记录时都要创建一个新的成本记录。一无所获

在我看来,您列出的字段似乎都属于一个表。您还需要一个项目表,其中包含描述、制造商、产品规格等数据

您的仓库表看起来确实是一个库存物品表,因为它列出的是物品而不是仓库,而是其他物品。我怀疑它还需要某种序列号,或者您将如何将仓库中给定的物理项目链接到相应的记录


如果“销售成本”是指销售时向客户收取的价格,我怀疑这是否属于仓库表。当客户购买产品时,你是否会告诉他,“我可以以20美元的价格将仓库40号货位中的产品卖给你,或者以22美元的价格将42号货位中的产品卖给你。你想要哪一种?”可能不会。我怀疑你收取相同的价格,不管客户得到哪一个特定的单位。事实上,你必须支付给你的供应商的价格在你购买第一个和第二个之间上涨,这通常并不意味着你会向你的客户收取不同的价格。你可以提高价格,但无论出售哪一单位,你都有一个价格。因此,销售价格在item表中,而不是warehouse表中。如果“销售成本”是另外一回事,那么这整段话可能就无关紧要了。

a)规范化是基于功能依赖性的。功能依赖性是什么?b) 规范化从来不会引入新属性,就像您对“cost_id”所做的那样。在我看来,您的原始表是规范化的,假设我正确地从列的名称推断出了每列的内容(我不理解“剩余”是什么,但它似乎与您的规范化尝试无关)。是的,我有多重销售成本和多重购买成本。