6

科学情報をデータベース (SQL サーバー) に保存する必要があります。「より小さい」、「より大きい」が情報の一部であるデータベースに値を格納する最良の方法は何ですか。

例:

PatientId: 123 突然変異率: <3%

患者ID: 999 突然変異率: 3%

PatientId: 456 突然変異率: 10%

データの並べ替えとフィルター処理ができる必要があります。<3% の突然変異率は 3% よりも優れています

どうすればこれを解決できますか?

ご協力ありがとうございました

4

4 に答える 4

9

int を明確にするために 3 番目の列を追加するのはどうですか?

0 = 未満
1 = 以下
2 =等しい
3 = 以上
4 = より大きい

于 2009-11-30T22:35:23.597 に答える
1

最も簡単なのは、通常、これらの場合に定義済みの値を使用することです。たとえば、ここでは、3.0 の値は 3% を意味し、2.99 は「3% 未満」を意味します。

これらの「より小さい」および「より大きい」値は通常、範囲の両端にのみ適用されるため、このような規則により、すべてのフィルタリングと順序付けを単一のフィールド値で標準的な方法で処理できます。このアプローチの主な欠点は、表示目的などのために、アプリケーションのレベルでこれらの制限値をハードコーディングすることを意味することです。

別の方法は、数値と、「正確な値」または「より小さい」または「より大きい」を示すコードを含む「修飾子」列を使用して、2 つの列 valueを導入することです。このアプローチはより一般的であるように見えますが (ディスプレイなどのレベルではそうです)、「入力」のレベルではハードコーディングが必要になることがよくあります。

于 2009-11-30T22:35:29.350 に答える
0

データを間隔として保存することをお勧めします。つまり、<3% は [0,3) になり、3% は [3,3] になります。これには、データベースに 4 つの列が必要になる場合があります。1 つはエンドポイントごとに 1 つ、もう 1 つは各エンドポイントで間隔が開いているか閉じているかを示します。数値データを数値のままにして、算術演算を実行できるようにし、アクセスと操作の要件に最適な方法で値「open」と「closed」をエンコードします。

于 2009-12-01T08:12:37.737 に答える
0

データを less_equal_more(varchar) (<.=、> または同等のテキスト)、測定値 (deciaml) (3.5 または精度のレベル)、units_of_measurment(varchar) (パーセンテージ、またはマイルまたはメートル単位の絶対値 - どんなものでも) - varchar に保存する必要があります。しかし、私はあなたのデータを分割します - あなたの検索クエリをより簡単にします. 全文検索 (すべてを 1 つのフィールドに格納する場合に実行する必要があります) の処理は、データを分割する場合に実行する必要があるクエリと比較してかなり困難です。

于 2009-11-30T22:40:01.010 に答える