0

これから説明するように、私はデータベース設計に本当に慣れていません。

テーブルを追加する必要のあるMSSQLデータベースがあります。このテーブルには、別のテーブルに関連する情報が含まれています。ただし、主キーの候補はありません(すべてのフィールドが重複している可能性があります)。このテーブルが使用されるのは、特定の種類のクエリに必要となる可能性のあるレコードを保持することだけです。これらのレコードは、他のテーブルにも含まれているフィールドを使用して非常に簡単に取得できます(ただし、一意ではありません)。

具体的には、私のメインテーブルにはたくさんの化学記録があります。各化学レコードは、品質管理レコードと呼ばれる別のレコードセットに関連付けられています(2番目の表)。それらは「BatchID」と呼ばれるフィールドによって関連付けられます。非常に簡単なのは、「このBatchIDですべてのレコードを取得する」と言って、必要なものを正確に取得できることです。ただし、両方のテーブルに任意のBatchIDのインスタンスが複数存在する可能性があるため(実際には通常存在します)、それらをリンクするためにフープをジャンプする必要があります。より一般的な意味では、理論的には、テーブルを何にも取り付けずに浮かせても大丈夫ですか?

圧倒的に単純な解決策は、化学テーブルとは関係なく、品質管理をデータベースに配置することです。他の何か、おそらくそれ以上に関連付けるために、少なくとも1つの他のテーブルを挿入する必要があります。そのような私の生活を複雑にする唯一の理由は、データベース設計の重要な原則に違反したくないということです。

私の質問は、データベースに浮動テーブルを置いても大丈夫ですか?それともそれは正しいですか?

助けてくれてありがとう。

4

1 に答える 1

1

理論的には、外部キー制約のないテーブルを使用しても問題ありません。ただし、記述したテーブル (記述した両方のテーブル) には、おそらくバッチのテーブルを参照する外部キーが必要です。バッチのテーブルには、主キーとして「BatchID」があると予想されます。

リレーショナル モデルでは、テーブルに少なくとも 1 つの候補キーが必要です。ほとんどの場合、候補キーを持たない SQL テーブルを使用することはお勧めできません。

于 2012-12-20T23:55:02.880 に答える