2009-07-09 23 views
0

我正在将一些字段添加到存储船只(船)信息的表中。关于存储特定组值的最佳方法的ISO建议

这些值与燃油消耗有关。

有八个值,其在任何时间4,可以使用:
在端口IFO 180
在端口IFO 380
在端口MDO
在端口MGO
帆船IFO 180
帆船IFO 380
帆船MDO
帆船MGO

现在,用户可在端口180 IFO OR IFO 380并在端口MDO或MgO,而不是两个输入值。同样适用于航行值。

我一直在来回存储这些数据的最佳方式。

两种方式我已经想出如下:

第一:
一种用于燃料类型字段,在端口或帆船:
AtPortIFOType,为nvarchar(3)
AtPortMFOType,为nvarchar( 3)
SailingIFOType,为nvarchar(3)
SailingMFOType,为nvarchar(3)

这些字段将包含由用户(180或380,或MDO MGO)

制成的相应的选择

一种用于消耗值字段,在端口或帆船:
AtPortIFOConsumption,整数
AtPortMFOConsumption,整数
SailingIFOConsumption,整数
SailingMFOConsumption,整数

我想存储这些值的第二方式是根据用户选择的燃料类型,每个区域只有一个区域,另一个区域为零:

AtPortIFO180,int
AtPortIFO380,int
AtPortMDO,诠释
AtPortMGO,诠释
SailingIFO180,INT
SailingIFO380,INT
SailingMDO,INT
SailingMGO,INT

我来回走在这看似十次,其中选项最高效?还是有第三种选择,我没有看到?

谢谢!

+0

允许哪些组合?我可以设置AtPortIFO180和SailingIFO360吗?同样,如果您设置了AtPortIFO180,您是否可以使用AtPortMDO或AtPortMGO? – 2009-07-09 14:42:04

+0

是的,您可以设置一个At Port IFO值和一个At Port MFO值,但不能同时设置两个。帆船价值也一样。 – Tom 2009-07-09 14:49:09

回答

0

这两种方式看起来好像会消耗数据库中大致相似的空间,所以任何一种方法的内存影响都不是很重要的因素。

如果您需要总结记录中的值,那么您的第二种方法可能更可取,因为IFO180和IFO360值的意外求和更加困难,因为它们将处于不同的领域。

然而,第一种方法看起来更适合用户输入数据的方式,即选择燃料类型并输入消耗值。如果有人手动将记录添加到数据库中,它还会使您在数据库中输入不兼容的数字变得更加困难。

尽管这里并没有硬性规定,所以不熟悉数据是如何使用的,我不会推荐任何一种方式。