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

C# 需要数据库结构的建议(MS SQL/MySQL),c#,asp.net,mysql,sql-server,database,C#,Asp.net,Mysql,Sql Server,Database,我更喜欢MS SQL,我想从MySql转换过来 我有一个很棒的客户,他有4个Excel文件。每个Excel文件代表一个产品范围 在每个Excel文件中,有3到8张工作表。每个表表示该产品范围内产品的类型 每张图纸包含以下列: 零件号,说明,数量,价格1,价格2,价格3,价格4 (以前没有,将来也不会超过8个价格栏。) 每页可包含约5行至5000行 现在,我面临的问题是,不知道建立新数据库的最佳方式是什么 我目前拥有现有MySQL数据库的方式是,每个表都代表一个表。就这样!(它必须很快“发布”,因

我更喜欢MS SQL,我想从MySql转换过来

我有一个很棒的客户,他有4个Excel文件。每个Excel文件代表一个
产品范围

在每个Excel文件中,有3到8张工作表。每个
表示该
产品范围内
产品的
类型

每张图纸包含以下列:

零件号
说明
数量
价格1
价格2
价格3
价格4

(以前没有,将来也不会超过8个价格栏。)

每页可包含约
5行
5000行

现在,我面临的问题是,不知道建立新数据库的最佳方式是什么

我目前拥有现有MySQL数据库的方式是,每个表都代表一个表。就这样!(它必须很快“发布”,因此没有时间为数据库建立适当的格式/结构。)

我最近发现,我在使用
MSSQL
数据库方面更有能力,所以我想进行切换,第二个原因,主要原因,是因为我想重新构建数据库,这样我可以使事情更容易管理,并且更容易从我的站点设置数据库搜索

我一点也不担心如何将所有内容都插入数据库,因为在去年的空闲时间,我编写了一个应用程序,可以解析这些Excel文件,提取工作表,并将它们插入数据库,带有可选设置。我担心我应该如何设置这个新数据库

鉴于上述细节,最好的解决方法是什么

非常感谢您的帮助。谢谢大家!

更新: 关于定价列(示例),了解为什么每张表中有多个价格列:


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

我想您是在寻求有关数据库设计的建议,对吗

我从来不会设计每个表都代表一个表的数据库。我希望每个概念实体有一个表,在你的例子中,产品是显而易见的一个

所以有一个名为Products的表,上面有您提到的列。为了适应产品类型,我只需要有一个类型列来指示任何特定产品属于哪个产品类型。我最终将使用.Net中的枚举类型来指定所支持的不同类型


那是我的五美分。希望能有所帮助。

对我来说,有多个价格栏似乎有点奇怪,除非Price1表示“商业费率”,Price2表示“消费者费率”或类似的意思。如果不同的价格针对同一产品的不同特性,您可能需要考虑将它们分离到不同的表中。例如:

产品表:键表,产品说明

价格表:键表、键产品、价格类型、价格


或者,根据价格的计算方式,您可以从一个基准价格计算各种其他价格。例如,如果业务费率价格将在基价基础上增加5%,而消费者价格将在基价基础上增加20%,则这些价格可能不应存储在数据库中,因为它们在需要时可以轻松计算。

一个简单的解决方案是将其拆分为3个表
ProductRange
ProductType
通过外键关系链接到
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
如果您希望在价格方面有更多的灵活性,您可以创建另一个
price
表,在
Product
price
表之间添加一个属性

Price
   Id
   Description
   Price

ProductPrice
    PriceId
    ProductId

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

我已经制定了一个简单的方法来查看我的表的外观,我已经可以看到这将使一切变得简单多了。谢谢!:)我明白,让我解释一下为什么会有不同的定价栏。(我还将更新我的问题。)-价格栏1可能是镀锌单价,价格栏2可能是镀锌箱价格,价格栏3可能是不锈钢GR304箱价格,而第4栏可能是不锈钢GR316单价。对于每个产品范围,这些价格列是不同的,但是,产品范围中的某些产品也可能包含一些相同的价格列。这就是为什么很容易将每种产品单独列为一张表的原因。我建议将数量单独列为一张表,因为它并不代表产品的质量。。而且可能会随价格而变化。。。为了未来的安全……这是一个非常有趣的方法@Geoff a。我希望在定价方面有很多灵活性,我会看看我能做些什么。谢谢大家!@阿什维尼-是的,我们可以整天继续正常化。。。。但我只是想简单一点:)@J.T.S.-好吧,那你就这么做吧。需要将价格放入他们自己的表中。关于您的更新,这是否意味着某些产品可以用不同的材料制造,并且不同的价格适用于不同的材料?那么我更希望看到类似于{partno,description,material,price}的表。