我目前正在尝试重新设计一个销售点数据库以使其更加规范化,这将极大地帮助管理数据等。根据我必须处理的数据,我有点不确定最佳设计实践和。首先,基本上有两组措施,它们共享共同的密钥。有库存数据、单位和美元,然后是销售点数据、单位和美元。其中每一个都是客户、商店、项目和日期级别。
我所做的(此时主要是理论上的)是为
Item level information
Item_ID,
Customer_ID
itemnumber
(and a few other item specific information).
Stores
Store_ID,
Customer_ID,
Store Number,
(and essentially address information)
Customer
Customer_ID,
Customer Number
(other customer specific information like name).
所以除了那些“支持”表之外,我还有
Main Inventory Data
Store_ID
Item_ID
我也有 POS 数据表,具有完全相同的 ID。
基本上我的问题是:
- 我是否应该在 Pos Data 和 Inventory Data 表中包含 Customer ID,即使它们是 stores 和 items 表的一部分?
我的第二个问题是,如果我确实添加了客户 ID,如果我将所有这些表连接在一起,
- 我会将所有表(Pos 数据、商店和项目或库存数据、商店和项目)中的客户 ID 加入到客户表中还是
- 从 Pos Data 表中加入就足够了。
让我提供一些关于数据的额外细节。例如,我们有两个客户,客户 A 和客户 B。CustomerA 有几家店铺,店铺编号分别为 1000、1025、1036 和 1037。 CustomerB 也有几家店铺,店铺编号分别为 1025、1030 和 1037。1025 和 1037 店铺编号恰好在客户之间相同,但店铺本身是独一无二的,完全不同的。
CustomerA 的 1000 号商店销售我们的三种商品(这是批发角度),它们是商品 ABC、DEF 和 EFG。CustomerA 的 1025 号商店也销售我们的三种商品,它们是 ABC、HIJ 和 XYZ。
这些项目中的每一个都包含两个导入数据,涉及其与其特定客户和商店编号的关系、销售点数据和库存数据。销售点数据将采用 PosUnits 的形式,即售出的商品数量和 PosDollars,即在该商店售出的商品的总美元(基本上是单位数量乘以售价)。库存数据将以 InventoryUnits 为单位,即商店中库存商品的数量。[需要注意的一点,我将库存和 pos 数据分开到单独的表中,因为我们并不总是从每个客户那里收到这两种数据。此外,库存和 POS 数据通常单独分析]。
因此,回到我的示例,CustomerA 的商店编号 1000,商品 ABC 可能已售出 100 个单位,即 $1245.00。CustomerA 的商店编号 1025,可能仅以 124.50 美元的价格售出 10 件相同商品。
现在,如果我们回到 CustomerB,碰巧这个客户也有一个名为 ABC 的商品,它在他们的许多商店中销售。CustomerA 的 item ABC 与 CustomerB 的 item ABC 是完全不同的产品。他们将它们命名为相同的东西纯属巧合。
让我添加最后一点澄清,我可能应该在前面说明。我的观点是作为批发商。当我说商品时,我指的是客户商品编号,而不是批发商商品编号。获取批发商项目涉及交叉参考,客户可能有多个项目编号引用相同的批发商项目编号。不过,我认为没有必要深入研究。