需要数据库结构的建议(MS SQL / MySQL)

时间:2011-03-20 10:15:05

标签: c# asp.net mysql sql-server database

最好是MS SQL,我想从MySql切换。

所以我有这个有4个Excel文件的真棒客户。每个Excel文件代表Product Range

在每个Excel文件中,有3到8张表格。每个Sheet代表Type内的Product Product Range

每张工作表,包含以下列:

PartNoDescriptionQTYPrice1Price2Price3Price4 ......

(从未有过,也不会超过8个价格列。)

每张工作表可能包含大约55000行。

现在,我现在面临的问题是,不知道哪个是设置新数据库的最佳方式。

我目前拥有现有MySQL数据库的方式是每张工作表代表一个表。而已! (它必须快速“放在那里”,因此没有时间投入到为数据库设置正确的格式/结构。)

我最近发现我更有能力使用MSSQL数据库,所以我想进行切换,第二个原因,主要原因是因为我想重组数据库所以我可以使事情更容易管理,并使我更容易从我的网站设置数据库搜索。

我根本不担心如何将所有内容插入到数据库中,就像我去年的业余时间一样,我编写了一个解析这些Excel文件,提取工作表并将其插入数据库的应用程序,可选设置。我担心如何我应该实际设置这个新数据库。

鉴于以上细节,最好的方法是什么?

非常感谢任何帮助。谢谢!

更新

关于定价栏(示例),关于为什么的一些信息每张表中有多个价格列。:

价格栏1可能是镀锌单价,价格栏2可能是镀锌箱价格,价格栏3可能是不锈钢GR304箱价,而第4栏可能是不锈钢GR316单价。这些价格列对于每个产品系列都不同,但是,产品系列中的某些产品也可能包含一些相同的价格列。这就是为什么将每个产品作为一个单独的表格如此容易的原因。

3 个答案:

答案 0 :(得分:5)

我认为您正在寻求有关数据库设计的建议,对吧?

我永远不会用表示表格的每张表来设计数据库。每个概念实体我有一个表,在你的情况下,Product是显而易见的。

这是一个名为Products的表,其中包含您在上面提到的列。为了适应产品类型,我只需要一个Type列,指示任何特定产品所属的产品类型。我最终会在.Net中使用枚举类型来指定支持的不同类型。

嗯,那是我的五美分。希望它有所帮助。

答案 1 :(得分:1)

一个简单的解决方案是将其拆分为3个表格。 ProductRangeProductType通过外键关系链接到Product表。

ProductRange
   Id
   RangeName
   // Plus any other columns you need. eg description, startdate etc

ProductType
   Id
   ProductTypeName

Product
   Id
   ProductRangeId
   ProductTypeId
   PartNo
   Description
   Qty
   Price1 
   // etc

如果您希望围绕价格获得更大的灵活性,则可以在PriceProduct表之间创建另一个Price表,其中many-to-many joining table

Price
   Id
   Description
   Price

ProductPrice
    PriceId
    ProductId

在这种情况下,您的Product表格不会包含任何价格列。但您现在可以根据需要添加任意数量的价格类型,每个Product可以有任意数量的价格。

答案 2 :(得分:0)

对于我来说,有多列价格似乎有点奇怪,除非Price1表示“业务费率”而Price2表示“消费者利率”或类似的东西。如果不同的价格适用于同一产品的不同功能,您可能需要考虑将它们分成不同的表格。例如:

产品表:KeyTable,ProductDescription ...

价格表:KeyTable,KeyProduct,PriceType,Price

或者,根据价格的计算方式,您可以从一个基本价格中处理各种其他价格。例如,如果商业利率价格将增加5%的基本价格,而消费者价格将增加基本价格的20%,这些可能不应存储在数据库中,因为它们可以很容易地计算出来是必需的。