标准化产品 > SQL 服务器中的类别关系

Normalizing Products > Category relation in SQL Server

我正在创建一个 SQL 服务器数据库,我对一个关系有疑问。我有两个实体 ProductCategory。关系是一对多的,所以一个产品可以有一个类别,但是一个类别可以有很多产品。

哪种方式归一化,为什么(哪种归一化形式)?:

  1. Product { productId, productName, productPrice }
    Category { categoryId, Name }
    
  2. Product { productId, productName, productPrice, categoryName }
    

如果 Category 有更多的属性而不仅仅是名字我会毫无疑问地再做一个 table。但是在这种情况下,我不确定是否必须创建新的 table 因为它只包含名称或将其保留为 varchar 列。这不是要创建更多的列并在数据库中占用更多 space 吗?

我认为您应该创建以下两个 table:

1. Category { categoryId, Name }
2. Product { productId, categoryId, productName, productPrice }

考虑到类别 table 中的类别 ID 是主键,您应该在产品 table 中的类别 ID 上创建外键约束,引用类别 table 中的类别 ID。