标准化产品 > SQL 服务器中的类别关系
Normalizing Products > Category relation in SQL Server
我正在创建一个 SQL 服务器数据库,我对一个关系有疑问。我有两个实体 Product
和 Category
。关系是一对多的,所以一个产品可以有一个类别,但是一个类别可以有很多产品。
哪种方式归一化,为什么(哪种归一化形式)?:
Product { productId, productName, productPrice }
Category { categoryId, Name }
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。
我正在创建一个 SQL 服务器数据库,我对一个关系有疑问。我有两个实体 Product
和 Category
。关系是一对多的,所以一个产品可以有一个类别,但是一个类别可以有很多产品。
哪种方式归一化,为什么(哪种归一化形式)?:
Product { productId, productName, productPrice } Category { categoryId, Name }
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。