我对数据库设计和性能有疑问。
想象一下以下场景:
我有一个Product
表,每个产品记录可能有不同的颜色,不同的重量和不同的类型。当我想设计我的数据库时,我有两种方法:
我可以设计3个表,Productcolor
表包含ProductID
和Color
列,然后一个包含ProductSize
表ProductID
,权重列以及包含ProductType
和ProductID
的{{1}}表格。并重复一种不同颜色,不同颜色和类型的产品。并使用join来获得总属性。
我可以在Type
表中添加颜色,重量,类型列,并通过像“,”之类的分隔符分隔不同的值。
我有一些像这样的表,现在我想知道这种情况有没有更好的解决方案?如果没有哪个在sql中甚至在我的asp.net项目中有更好的性能?
答案 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
中。
数据库设计有一些属性和一些规则,为了更好的数据库设计必须遵循这些规则!其中包括那个
每种类型的数据都必须有自己的表格!
不得复制数据(必须删除重复数据或将其移至具有单独数据标识的地方)
您必须尝试存储数据的主键并使用它!
记住这些,您将能够创建数据库更好的设计!这对你来说也很容易。