从手动创建正确的数据库结构
我被分配到一个相当有挑战性的数据库设计,并认为有人可能会给我一些指导,以帮助我开始。我们目前有一个仓库货物进出系统,现在我们想使用数据来计算存储费用。
数据库已经包含以下内容:货物输入日期、货物输出日期、托运重量、件数、尺寸、货物描述、存储容器类型(如果适用)。数据保存在mysql中,可能不适合下面的电价结构。
这是波段1,2,3,4的充电结构。根据客户规模和重要性,我们有大约12个波段。所有其他波段都是以下各项的导数:
到达我们的设施后的1级€0.04每公斤+€普通货物每批4.00€杂志每公斤0.07英镑-5天后不收取仓储费€4.00/完整托盘最大尺寸120x100x160cm(标准仓库木托盘)€散装货物或超限货物每立方米6.50英镑。仅在20英尺托盘的特定集装箱中交付的货物-€仅50.00 40英尺托盘-€20
波段2每公斤0.04 6天后不收取最低储存费€每立方米2.50个集装箱,仅限20英尺托盘-€仅50.00 40英尺托盘-€20
波段3€0.03每公斤+€每批货物3.00公斤,最高2000公斤€0.02每公斤+€每批超过2000公斤的货物5天后收取2.00美元的仓储费€每个托盘4.00最大尺寸120x100x160€每公斤散装货物0.04
乐队4€4天后每托盘5.00美元的存储费用€每个托盘5.00最大尺寸120x100x160
到目前为止,我的想法是在货物到达时收集收费带,然后尝试将关税与一些标准化(如集装箱类型)放在一张表中。
有人有过这种手动到系统转换的经验吗?
1条答案
按热度按时间yrwegjxp1#
计算电价的算法可能太混乱,无法在sql中实现。所以,让我们从不同的Angular 来探讨你的问题。
用客户机语言(java/php/vb/…)构建算法。
在执行步骤1时,请考虑需要哪些数据—可能是“天”和“欧元”的两列数组?可能是“公斤”的问题?也许有多种模式——天和/或公斤?
构建存储这些数组所需的一个或多个表。
决定如何指出kilo是不相关的——也许可以省略kilo表中的任何行?或者一个额外的列,给出大小/重量?
我的观点是算法需要驱动任务;数据库只是一个持久存储。
这是另一种方法。不要用days、kilos等列,只需要一个json字符串,其中包含所需的任何因素。在客户机代码中,对json进行解码,然后使用合适的if语句处理kilos if present,else。。。等。
同样,数据库只是一个持久存储;客户机通过对其方便的方式驱动格式。
在这两种实现中,都会有一列表示所涉及的项的类型,以及
Band
. 这个SELECT
会的ORDER BY Band
. 注意,没有12的概念;任何数字都可以实现。表现如何?获取所有~12行并遍历它们——这应该不是性能问题。如果你有一千个乐队,你可能会注意到一点延迟。