システムwiki

キーのフィールドの最後の数桁を使用してください

CitOnit 受付中 最終更新日:2021-05-02 02:36

車両データと関連するプロジェクトを保存するためのプロジェクトを開始しています.

私は着信車両のすべてのコアデータを格納するTblvehicleData(Vin、Make Make、Colorなど)を持っています.17文字のVIN番号の最後の5文字を主キーとして使用します.

私は最後の5を識別してほしいのですが、車両の作業を行うときに他の人が入力するために入ることが迅速です.

VINフィールドから最後の5文字を抽出し、ID(PK)フィールドに使用する方法はありますか?

返信リスト(回答:4)

1 #
Scottge

はい、しかしそれは良い考えではありません.主キーは、結合、ルックアップ、およびマッチングタスクのためにデータベースによって内部的に使用されます.ユーザーが主キーを見ることさえ決してすべきではないと言う考え方があります.私はそれを購読していませんが、私はしません
tableに冗長データがあり、フィールドの一部をPKとして使用していません.VINをPKとして使用する場合は、それで問題ありません.自動番号のような代理キーをPKとして使用する場合は、パフォーマンスの観点からさらに優れています.

VINの最後の5文字をユーザーの識別子として表示する場合は、次の式を使用して表示できます.

RIGHT([VIN]、5)

ユーザーに識別子を表示させたい場所では、その式を使用するだけです.その値を冗長に保存する必要はありません.

2 #
BillMos
スコットの適切なアドバイスに加えて、別のフィールドに依存するデータを保存することは問題を引き起こします.
3 #
JohnW.V
さらに別の警告は、主キーは定義上、一意でなければならないということです.(最後にチェックした)道路には99999台以上の車両があります.それらのいくつかは確かに最後の5文字が重複しているので、重複する可能性が高くなります.
4 #
KenSher

しないでください.Vehiclestableの主キーとしてVIN列を使用し、参照tableの対応する外部キーを使用します.ユーザーが参照tableに最後の5桁でVINを入力できるようにする場合は、関連するコンボボックスをバインドします.
フォームを外部キーVIN列に入力し、次のようにコントロールを設定します.
ControlSource:VIN
RowSource:SELECT VIN、RIGHT(VIN、5)FROM Vehicles ORDER BY RIGHT(VIN、5);
BoundColumn:1
ColumnCount:2
ColumnWidths:0cm
測定単位がメトリックではなくインペリアルの場合、Accessは最後の単位をインチに自動的に変換します.重要なことは、最初の列を非表示にするためにディメンションがゼロであることです.
または、VehicleID自動番号列を主キーとして使用し、VIN列に一意のインデックスを付けます.対応するVehicleID長整数外部キーに値を入力するためのコンボボックスのRowSourceは、次のようになります.
SELECT VehicleID、RIGHT(VIN、5)FROM Vehicles ORDER BY RIGHT(VIN、5);
およびそのControlSourceプロパティVehicleIDになります.