SQL DB设计的最佳性能?

时间:2014-01-05 13:17:26

标签: asp.net sql database performance database-design

我对数据库设计和性能有疑问。

想象一下以下场景:

我有一个Product表,每个产品记录可能有不同的颜色,不同的重量和不同的类型。当我想设计我的数据库时,我有两种方法:

  1. 我可以设计3个表,Productcolor表包含ProductIDColor列,然后一个包含ProductSizeProductID,权重列以及包含ProductTypeProductID的{​​{1}}表格。并重复一种不同颜色,不同颜色和类型的产品。并使用join来获得总属性。

  2. 我可以在Type表中添加颜色,重量,类型列,并通过像“,”之类的分隔符分隔不同的值。

  3. 我有一些像这样的表,现在我想知道这种情况有没有更好的解决方案?如果没有哪个在sql中甚至在我的asp.net项目中有更好的性能?

2 个答案:

答案 0 :(得分:0)

对于您给出的示例,我将有一个包含产品ID和名称列的表,以及3个用于颜色,重量和类型的单独列。根据其他要求,我可能将颜色分开并输出到单独的表格。

在你的第二个建议中,你是在谈论将颜色重量和类型放在一列中,大概是一个包含“Red,2kg,Widgets”之类的字符串?如果是这样,永远不要这样做。这是将内容放入数据库的最糟糕方式。

答案 1 :(得分:0)

试试这个例子!

将产品表创建为

Product_Id | Product_Name 
1          | Product's first name

现在,使用另一个表并将属性和设置写入其中!这样,

Product_Id | Product_Color | Product_Weight | Product_Type
1          | Color of it   | Its weight     | Type of it!

现在,如果你想存储它们(颜色,重量,类型),你也可以为它们创建单独的表格!像这样:

Color_Id | Color_Name
1        | Red
2        | Green

现在,完成所有这些后,您可以将Color_Id保存在Product_Properties中。

数据库设计有一些属性和一些规则,为了更好的数据库设计必须遵循这些规则!其中包括那个

  1. 每种类型的数据都必须有自己的表格!

  2. 不得复制数据(必须删除重复数据或将其移至具有单独数据标识的地方)

  3. 您必须尝试存储数据的主键并使用它!

  4. 记住这些,您将能够创建数据库更好的设计!这对你来说也很容易。

相关问题