ドキュメントバージョンを主キーとして設定する必要があります。ドキュメント管理システムで作業しており、これら2つのテーブルがテーブル全体の一部を表しています。
DocumentVersionテーブルで、主キーを(version + documentID)に設定しました。したがって、これがdocumentIDがint型で、バージョンがdecimal(5,2)型である場合に推奨されるアプローチであるかどうか、誰かがアドバイスできますか?または、新しいフィールドを作成して、それをDocumentVersionテーブル内の主キーとして設定した方がよいでしょうか。ありがとう
DocumentVersion
テーブルは私には理にかなっています。 2つの列は、DocumentID
の主キーとのDocument
関係によってドキュメントを適切に定義し、Version
はDocumentVersion
の一意のエントリを作成します。 (名前が示すように。)
2つの異なるデータ型を含む主キーを使用しても問題はないため、INT
とDECIMAL(5,2)
は同じ主キー内で問題なく共存します。
avoidは、VARCHAR(10)
とINT
の結合など、不一致のデータ型間の結合を行うことです。これにより、すべてのデータがクリーンな場合でも、結合パフォーマンスに問題が発生する可能性があります。 (もちろん、VARCHAR
は、別のクラスの問題となるINT
に変換されない文字列を保持できます。)
EDIT:使用法によっては、代理PK列DocumentVersionID
が他のテーブルの参照に役立つ場合があります。ただし、バージョンの追跡の整合性のために、DocumentID
、Version
は少なくとも_UNIQUE CONSTRAINT
_によって強制される必要があります。
例えば。 ... CONSTRAINT Unique_DocumentVersion UNIQUE (DocumentID, Version);
スキーマに問題はありませんが、個人的には にリストされているのと同様の理由で、別のDocumentVersionId
列を作成します。他の列を使用できるのにID列を作成する必要があるのはなぜですか。キーフィールドとして? :
DocumentVersion
に結合している他のテーブルは表示されませんが、私には、最終的に1つ追加する可能性がかなり高いようです。DocumentVersionId
は、クラスター化されたインデックスに適しています。