行を一意であると識別するために4つの列のセットを使用する(1つは外部キーで、他の3つはfloatデータ型である)ことは良い習慣ですか(または悪影響がありますか)?(4つのキーがリンクされた)テーブル内の一意のエントリを表すテーブルを作成しようとしています。これが攻撃の良い計画なのか、それとももっと良い方法があるのか、私は興味があります。
視覚的な目的で、次の表を想像してください。次の表のように編成された在庫アイテムがあります:([K]
は主キーの記号、線は関係です)
Sheet_Class Sheet_Type Sheet_Size
=========== ========== ==========
[K] Sheet_Class-. [K] Sheet_Type--. [K] Sheet_Size
'---- Sheet_Class '---- Sheet_Type
Length
Width
Thickness
データは次のように表示される場合がありますが、簡潔にするために、リンクされた列を持ち込むことは除外しました。
Sheet_Class Sheet_Type Sheet_Size (Tables)
[Sheet_Class] [Sheet_Type] [Length], [Width], [Thickness] (Column Values)
============= ============ ==============================
Aluminum
5052-H32
48, 96, 0.032
48, 96, 0.040
48, 96, 0.063
6061-T6
60, 120,0.032
60, 120,0.040
60, 120,0.063
Steel
1018-CRS
48, 96, 0.018
48, 96, 0.023
48, 96, 0.031
現状のまま(および上記の「スキーマ」で示したように)、Sheet_Sizeテーブルのエントリには単純な(自動インクリメント)整数の主キーを使用します。ただし、代わりにSheet_Type、Length、Width、およびThicknessの各列の組み合わせを使用する方が良いかどうか知りたいですか?Sheet_Sizeの各エントリはこれらすべての固有の品質を共有する必要があり、自動インクリメントフィールドはこれを十分に実証しないとしたら、これは最適なルートですか?
状況を十分に説明していない場合はお知らせください。他のロジックの目的のために、インベントリされた資料のこれらの部分(クラスvsタイプvs実際の在庫サイズ)を分割する必要があることに気づきましたが、他の種類のフィードバックを求めています。
どんなガイダンスもいただければ幸いです。
更新(2011年8月12日)
回答が投稿された後、私はマークの回答とX-Zeroの回答を組み合わせることにしました。長さ、幅、厚さの列に一意の制約を設定することをお勧めしますが、マテリアルサイズを一意の行に分割し、それらを関係にリンクするというアイデアも気に入っています。
残念ながら、私は両方の答えを受け入れることはできません。そのため、問題をより批判的に見て(スキーマの調整を)提供するために(私が感じていること)を取るためにX-Zerosを受け入れます。
皆様、お返事ありがとうございます。