4

4 つの列に複合主キーがあり、そのうちの 3 つは浮動小数点データ型であるテーブルがあれば、ベンダーのデータベース スキーマを確認しています。理由はわかりませんが、これには本当にショックを受けました。

この種の複合主キーを持つことの意味/利点は何ですか? おすすめですか?float は主キー フィールドとして危険だと思いました。

ここに画像の説明を入力

4

3 に答える 3

2

これは、CADで「ファミリーテーブル」 1として知られているモデルだと思います。本質的に、1つの「論理幾何学」は、幾何学的特徴を追加または削除する代わりに、次元2を変更するだけで、多くの「物理幾何学」を生成できます。

その名前が示すように、それはテーブルです-列はディメンションであり、各行はこれらのディメンションの値の特定の組み合わせを表し、物理的なジオメトリを生成するために特定の「インスタンス」に適用する必要があります。これは、ここで示しているものと非常によく似ています。 。

2つの幾何学的に同一のインスタンスを生成する目的はないため、これらの次元はキー3を形成します。これは、システムのすべてのコンポーネントが、一部の数値(10進数の0.1など)を2進浮動小数点で正確に表すことができないことを「理解」している限り問題ありません。どんな精度でも。

データの出所(およびデータの行き先)に応じて、現在の設計を維持するか、代わりに10進数を使用することを検討してください。

  • たとえば、データがCAD APIからのものである(またはCAD APIによって消費されている)場合、データはおそらくdoubleすでにそこにあると表現されているためfloat、データベースに保存するだけで摩擦が少なくなります。
  • ユーザーが10進法で入力することが期待されるUIからのものである場合はdecimal、より適切な選択である可能性があります。

1「ファミリテーブル」は、PTC Pro / ENGINEER(別名Creo)の用語です。本質的に同じものは、AutodeskInventorでは「iParts/ iAssemblies」、SolidWorksでは「構成」として知られています。

2機能抑制などのパラメトリック設計の他の側面ですが、今はあまり詳細にとらわれないようにしましょう...

3そして、追加の「代理」キーを導入してプライマリにするかどうかに関係なく、それが必要です。

于 2012-09-03T19:28:25.403 に答える
0

このキーを削除して、テーブルのidキーの自動インクリメントに置き換えることをお勧めします。キーには整数型を使用することをお勧めします、頑張ってください

于 2012-09-03T15:56:12.923 に答える
0

FLOAT キーに特に「問題」があるとは思いません。適切なタイプは、列の値を反映する必要があります。 ここに関連するSOの質問があります。

于 2012-09-03T16:03:42.413 に答える