在将 table 标准化为 3NF 方面需要帮助吗?

Need help in normalizing a table upto 3NF?

我想规范化 table 到目前为止我已经这样做了:

我的 3Nf 正确吗?

Order(orderNo,orderDate,customerId)

Customer(customerId,customerName,customerCurrentAddress,customerPermanentAddress)

Product(productId,productName,Qty,categoryId)

Category(categoryId,categoryName)

Sub-Category(subCatId,subCatName,categoryId)

鉴于 table 此处: https://drive.google.com/file/d/1F7cQjjxz9rnY6RHaGtZXuwVGFEHBVgNo/view

您必须在订单和产品之间建立连接 table,以便跟踪包含多个产品的订单。

Order(orderNo,orderDate,customerId)

Order_Details(orderNo,productId,Qty)

Customer(customerId,customerName,customerCurrentAddress,customerPermanentAddress)

Product(productId,productName,Qty,categoryId)

Category(categoryId,categoryName)

Sub-Category(subCatId,subCatName,categoryId)

根据 Wiki 的定义:如果 table 在 1NF 中并且 没有非素数属性依赖于任何候选的任何适当子集,则它在 2NF 中table 的关键。您的大多数 tables 只有 2 列,因此他们对此感到满意。对于Customer(customerId,customerName,customerCurrentAddress,customerPermanentAddress),候选键是customerId,其他列完全依赖于整个候选键,就OK了。

对于 3NF,Wiki 说:table 中的所有属性仅由 table 的候选键决定,而不是由任何非主要属性。如您所见,您的 table 都很满意。