2009-07-09 9 views
0

私は船舶(船舶)に関する情報を格納するテーブルにいくつかのフィールドを追加しています。特定の値のグループを保存するための最善の方法に関するISOのアドバイス

燃料消費量に関係する値です。

は、いつでも4を使用することができます8つの値、があります。ポートでポートで380
IFOポートで180
IFOポートで
MDO
MGO
セーリングIFO 180
セーリングIFO 380
セーリングMDO
セーリングMGO今

、ユーザーがポートIFO 180 OR IFO 380で、ポートMDO OR MGO、ないの両方での値を入力することができます。同じことがセーリング値に適用されます。

私はこのデータを保存する最良の方法について往復してきました。次のように私が作ってみた

2つの方法があります。

まず:ポートやセーリングでの燃料タイプの
フィールド、:
AtPortIFOType、NVARCHAR(3)
AtPortMFOType、NVARCHAR( 3)
SailingIFOType、NVARCHAR(3)
SailingMFOType、NVARCHAR(3)

これらのフィールドは、ユーザ(180又は380、MDOまたはMGO)

製それぞれの選択肢が含まれています消費値の

フィールド、ポートやセーリングで:
AtPortIFOConsumption、int型
AtPortMFOConsumption、int型
SailingIFOConsumption、int型
SailingMFOConsumption、int型

私は、これらの値を保存することを考えていた第二の方法は、することでした

AtPortIFO180、int
AtPortIFO380、intこれらのフィールドは、ユーザーが選択した燃料タイプに基づいて、それぞれのフィールドを持ち、ゼロをゼロにします。 AtPortMDO、int型
AtPortMGO、int型
SailingIFO180、int型
SailingIFO380、int型
SailingMDO、int型
SailingMGO、int型

私は、あるオプション、この一見十倍に前後に行ってきました最も効率的ですか?それとも私には見えない第三の選択肢がありますか?

ありがとうございます!

+0

どのような組み合わせが許可されていますか?私はAtPortIFO180とSailingIFO360を設定できますか?同様に、AtPortIFO180を設定した場合、AtPortMDOまたはAtPortMGOを使用できますか? –

+0

はい、At Port IFO値とAt Port MFO値の両方を設定することはできません。同じことがセーリングの値になります。 – Tom

答えて

0

どちらの方法もデータベースにおおよそ似たようなスペースを消費するように見えるため、どちらの方法のメモリへの影響も大きな要因にはなりません。

レコード間で値を合計する必要がある場合は、異なるフィールドにあるように、誤ってIFO180とIFO360の値を合計するのがより難しくなるため、2番目の方法が適している可能性があります。

しかし、最初の方法は、ユーザーがデータを入力する方法、つまり燃料タイプを選択して消費値を入力する方法に適しているように見えます。また、データベースにレコードを手動で追加した場合、データベースに互換性のない数値を入力するのが難しくなります。

ここには厳しいルールはありません。データの使い方に慣れているわけではありません。どちらか一方の方法をお勧めしません。

+0

ええ、私は最初の方法で行くと思います。 IFOやMFOの燃料タイプが他にもあるという非常に遠い機会に、その方法は別のフィールドを追加しなくても簡単に対応できます。 – Tom

関連する問題