标准化产品> SQL Server中的类别关系

时间:2018-12-16 02:44:58

标签: sql-server database-normalization

我正在创建一个SQL Server数据库,并且对一个关系有疑问。我有两个实体ProductCategory。该关系是一对多的,因此一种产品可以具有一个类别,但是一个类别可以具有多个产品。

哪种方式被规范化,为什么(哪种规范化形式)?

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

如果Category具有更多的属性,而不仅仅是名称,我无疑会创建另一个表。但是在这种情况下,我不确定是否必须创建新表,因为该表仅包含名称或将其保留为varchar列。那不是要创建更多的列并在数据库中占用更多的空间吗?

1 个答案:

答案 0 :(得分:2)

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

if (input == "!");
//           ^ ^ ^
if (input == '!')

考虑到类别表中的categoryId是主键,您应该在产品表中的类别ID上参考类别表中的categoryId创建一个外键约束。