2010-11-25 100 views
0

我一直在研究MS 2010 Access数据库以计算CSV输入的货运费率。基于多变量计算费率的数据库设计

价格通常以出发城市,出发国家,目的地城市,目的地国家,可能的中途目的地城市,重量,体积和数量为特征。这些变量的独特组合将指定另一个变量列表,用于通过将这些变量与权重,体积或数量相乘并将它们相加来计算最终比率。

一个问题是城市和国家/地区名称/拼写不一致。我的另一个担忧是,我觉得我可以从将数据分割成多个表格中受益,但不确定如何最好地完成这一点。

编辑: 谢谢你的批评。我的问题是,构建这个数据库的最佳方式是什么?这是我的表中的一个简化的例子:

(startCity,startCountry,西蒂,midCountry,endCity,endCountry,类型,重量,体积,baseRate,feeA,feeB,FEEC,交付,燃料)

一切都在一张桌子上,它并没有真正的唯一标识符/关键字。相反,每一行都是唯一的,因为至少有一个位置或类型是不同的。

CSV输入: shipmentID,startCity,startCountry,西蒂,midCountry,endCity,endCountry,类型,重量,体积,数量

查询输出: shipmentID,{数量* [baseRate +重量*(交费+燃料]}

+0

你的问题到底是什么?你在表达关切和讨论问题,但实际上并没有提问_问题。 – Oded 2010-11-25 20:16:19

+0

唯一真正的问题似乎是你在城市和国家数据中有变体,需要弄清楚如何解决这个问题。对?最后一段没有帮助,因为我们不知道你脑子里有什么,所以甚至不能提出任何替代方案。 – 2010-11-25 22:39:13

回答

1

我不知道我理解你的问题。如果你正在寻找一个数据库结构我会拿出以下3个表:

位置(ID,城市名,邮政编码,COUNTRY_ID)

国家(ID,COUNTRYNAME)

路线(id,startlocation_ID,midlocation_ID,endlocation_ID,ratefactor)

最终速率可能基于公式。公式的路线依赖部分需要作为“费率因子”放入“路线”表中。无论您是否需要将公式的其他部分放在表格中,都取决于公式本身(您没有充分说明它)。输入城市/国家名称应该在下拉列表中完成,用户只能在已经输入的列表中进行选择。我想大多数时候你的用户可能会使用已经输入常规路由的路由表。如果你的公司确实服务于世界上的任何地方,当然,你无法避免让他们自己一直输入新的城市名称。

更新:编辑完成后,我建议您深入探讨database normalization的主题。例如,您的“费率”表格看起来像许多相同的路线只有重量不同。所以按照我的建议分开保存路线信息是有道理的。附加信息应放在单独的表格中(报价:id,route_ID,类型,重量...)。

“(feeA + feeB)”和“feeC”似乎是我在我的建议中提到的比率因子。但是我没有看到既有feeA也有feeB的原因,因为它们在使用之前总是加在一起。如果他们提及连接到城市的价格,并且您需要将这些信息分开,则最好将价格信息保存在不同的表格中(connectionprice:id,locationA_ID,locationB_ID,定价)并查找它而不是每次重新输入。

虽然有人可能会说你不需要单独的PK,如果你有不同的字段的组合使得唯一的标识符,我会养成为每个表创建一个(“id”)的习惯。几乎总是会使编程访问和信息检索变得更加容易。