私たちが作成している資産システムの番号付けシステムを考え出そうとしていますが、オフィスでこのトピックについていくつかの白熱した議論があったので、SOの専門家に尋ねることにしました。
以下のデータベース設計を検討すると、より良いオプションがあります。
例1:自動代理キーの使用。
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
1 1
例2:プログラムで生成されたPKを使用する
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
"RD00000001WCK" "00000001.1"
(これは、道路の最初のセグメントである00000001.1
ことを意味します。これは、新しいセグメントを追加するたびに増加します。例)00000001.2
例3:両方のビットを使用する(新しい列を追加する)
======================= ==========================
ID(PK) Road_Number(UK) ID(PK) Segment_Number(UK)
======================= ==========================
1 "RD00000001WCK" 1 "00000001.1"
ほんの少しの背景情報ですが、レポートやその他のドキュメントでとRoad Number
を使用するので、それらは一意である必要があります。 Segment Number
私はいつも物事をシンプルに保つのが好きだったので、例1を好みますが、レポート/ドキュメントで主キーを公開するべきではないことを読んでいます。だから今、私は例3の線に沿ってもっと考えています。
また、資産番号の生成方法を変更することにした場合、主キーに対してカスケード更新を行う必要がないため、例3にも傾いています。
私たちは何をすべきだと思いますか?
ありがとう。
編集:素晴らしい答えをありがとうみんな、私を大いに助けてくれました。