数据库中的规范化/ 3nf

时间:2016-10-31 15:30:03

标签: database database-normalization 3nf

我有此表(日,员工编号,员工姓名,客户编号,客户名称,产品编号,产品描述,单价,销售数量,总销售额)

示例数据:

22nd, e123,  Dave,   c1264,  Sheila, p15462,  Hoover, 4.50,  5, --
----, ----,  -----,  c64402, Jovek,  p673431, Kettle, 2.25, 10, 45
----, e4215, Johnny, c785,   Keith,  p15462,  Hoober, 4.50,  2,  9
23rd, e123,   Dave,  c64402, Jovek,  p673431, Kettle, 2.25, 20, --

所以基本上,只有当天的数据,如果它是新的一天入场,并且在员工所做的所有销售之后,总销售额只有总数。

到目前为止,我有:

Product(ProdNo#,ProductDesc,Price)
Client(ClientNo#, ClientName)
Employee(EmployeeNo#, EmployeeName)

但是,我不确定如何处理每天的个人销售和总销售额?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是使用star- or snowflake schema的典型示例。

表Product,Customer,Employee称为维度表

事实表具有维度表的外键并包含数量,例如混凝土销售。

Sales(ProdNo#, ClientNo#, EmployeeNo#, Sale)

主键是ProdNo#, ClientNo#, EmployeeNo# SELECT P.ProdNo, SUM(S.sale) FROM Products P, Sales S WHERE P.Price > 1000 AND S.ProdNo = P.ProdNo GROUP BY P.ProdNo

总销售额不会被明确建模,而是通过汇总查询,例如

'hide_empty'    => 0

RDBMS或数据仓库将优化查询,因此总销售确实需要明确建模(无非规范化)。